Читать книгу AWS for Developers For Dummies - Mueller John Paul - Страница 8
Part 1
Discovering the AWS Development Environment
Chapter 1
Starting Your AWS Adventure
Considering the AWS-Supported Platforms
ОглавлениеIf you haven’t dealt with the cloud yet, you might be tempted to think of platforms as a specific combination of items. For example, when viewing your own local setup, you have a server that runs a specific operating system and has a specific set of hardware resources. The system has a specific Database Management System (DBMS) installed and relies on certain kinds of other software to provide end-user resources. The development platform is specific, too. You use a particular language with a predefined set of libraries to code application in just one way. The cloud doesn’t work this way. When working with the cloud, you have an array of operating systems that can support any of a number of DBMSs and has access to a wide assortment of end-user resource products.
Even the development environment is different. You can code at several different levels, as described in the “Considering the app types that AWS supports best” section, earlier in this chapter. In fact, when using the AWS Lambda service (https://aws.amazon.com/lambda/), you don’t really consider platform or resources in the conventional sense at all. What you’re most interested in is a process for obtaining a particular result given a certain bit of data regardless of the source or output. The environment no longer really matters; what does matter is the process and the result obtained from the process.
With all these caveats and differences in mind, the question becomes one of determining the best way to use particular services rather than what functionality you have available. The following sections give you a quick overview of how to obtain more information about AWS support for specific platform features, given a particular service.
Obtaining an overview of the supported platforms
AWS is all about the services. You can see these services divided into categories at https://aws.amazon.com/. A category exists for every need. In just looking at the broad assortment of categories shown in Figure 1-1, you could get overwhelmed quite quickly.
FIGURE 1-1: AWS Services break down into individual categories.
The problem becomes even more obvious when you open one of the categories. For example, Figure 1-2 shows the Compute category, which is the first place you should go to discover what you can access in the way of development platforms.
FIGURE 1-2: Each category has a listing of services that it supports.
To perform most tasks, you create an EC2 virtual server. Drilling down into the EC2 virtual server information, you find a wealth of instance types from which to choose, a few of which fall into the free tier of services. The instance types define things like the number of CPUs, amount of memory, and type of storage supplied for your virtual server. You also need to consider the operating system, which means selecting between a Windows or Linux version, in this case.
INSTANCE TYPES VERSUS PHYSICAL HARDWARE
An instance type differs from having real hardware in an important way. If you find that your real hardware isn’t supporting a need, you have to buy more physical hardware. Likewise, when the rush is over, you need to get rid of excess hardware. Using a virtual server means that you can change the configuration as needed, including the operating system used. Instead of having to physically reconfigure a setup, you simply define new characteristics for the setup, and AWS takes care of the low-level details for you.
The trade-off can come in the form of cost. When reconfiguration becomes too easy and people find that they can access nearly infinite resources, they tend to waste resources, and applications become less robust and efficient (good for Amazon; bad for your organization). In addition, the ease of changing a configuration can lead to all sorts of design issues and even infighting in the various developer groups. The rest of the book deals with other issues that crop up when using AWS for development; just be aware for now that you can’t always directly equate your localized or web-based development environment with the cloud-based development environment.
Choosing an appropriate platform for your needs
By now, you should have the idea that creating an appropriate platform isn’t a matter of finding a set of AWS features to meet your app needs. What it comes down to is finding the set of features that helps you code
❯❯ With the least effort
❯❯ In the shortest time
❯❯ For the least amount of money
The whole issue of cost can become significant with AWS because you quickly find yourself paying all sorts of hidden fees for things that you didn’t know you needed or thought would be free. Although Chapters 2 and 3 do help with the cost considerations, this book doesn’t provide the full treatment of the topic that you can find in AWS For Admins For Dummies, by John Paul Mueller (Wiley 2016). However, you do get enough information to make smart decisions about building a development environment and using that environment to create applications (which obviously is the purpose of this book).
The best way to find an appropriate platform for your development needs is to start slowly, using one of the services at a time and adding services only as you need them, rather than trying to build a complete development environment at the outset. If you attempt to create a complete development environment, you’re almost certain to make serious mistakes with so many different services providing such a great amount of overlapping functionality. As previously mentioned, most developers start with an EC2 setup and possibly add the Lambda service to it to begin experimenting with AWS as a coding platform. AWS also provides access to the developer tools shown in Figure 1-3. The AWS Command Line Interface can prove extremely helpful in getting started with AWS because you get a feel for how things work in an interactive environment.
FIGURE 1-3: Amazon provides a wealth of developer tools to provide development support at a variety of levels.
Use the free-tier services (as outlined in Chapters 2 and 3) as much as possible at the beginning to reduce the cost of experimentation. Only when you see an actual need to modify your configuration to use paid services should you make the change. Relying on this approach will give you a better feel as to how to make your setup efficient and what you can actually expect in the way of performance using less capable setups.