AWS for Developers For Dummies. Mueller John Paul
Читать онлайн книгу.significantly better in many ways. Here are the service categories that AWS offers:
❯❯ Compute
❯❯ Storage and content delivery
❯❯ Database
❯❯ Networking
❯❯ Analytics
❯❯ Enterprise applications
❯❯ Mobile services
❯❯ IoT
❯❯ Developer tools
❯❯ Management tools
❯❯ Security and identity
❯❯ Application services
Theoretically, you could create just about any kind of application imaginable using AWS. The difference isn’t in what tasks the application would execute or how the application would manage data – these issues are the same as when working at the desktop. What you need to consider is where the application would execute, which means understanding the capabilities of the underlying cloud environment in order to determine which applications that environment will support. You can divide AWS application types into these areas:
❯❯ End-user applications that the user accesses directly using a browser.
❯❯ End-user applications that currently execute within a browser but are augmented by background calls to AWS.
❯❯ End-user applications that currently execute on the desktop but are augmented by background calls to AWS.
❯❯ Management applications that interact directly with AWS.
❯❯ Web-service applications that react to calls from a remote application.
❯❯ Web-service applications that use a polled publish/subscribe model.
❯❯ Web-service applications that use a push publish/subscribe model.
You can come up with other application types. This list gives you an idea of what’s possible. The main point is that you still need to know something about the underlying environment. For example, if you want to create browser-based applications, you might rely on the Elastic Beanstalk service, which provides support for these default platforms:
❯❯ Apache Tomcat for Java applications
❯❯ Apache HTTP Server for PHP applications
❯❯ Apache HTTP Server for Python applications
❯❯ Nginx or Apache HTTP Server for Node.js applications
❯❯ Passenger or Puma for Ruby applications
❯❯ Microsoft IIS 7.5, 8.0, and 8.5 for .NET applications
❯❯ Java SE
❯❯ Docker
❯❯ Go
Consequently, the app types that AWS supports best is partly determined by the service that you use and which features you add to that service. However, just as you can extend Elastic Beanstalk to support other languages, you can also modify how the other services work as well. Extending a service necessarily means being able to run other app types. The bottom line is that you need to consider these issues:
❯❯ Determining which service meets your app needs best directly out of the package.
❯❯ Defining which service features you need to make the app run as well as, if not better than, the same app when run locally.
❯❯ Expanding the service as needed to meet custom requirements.
❯❯ Obtaining third-party package support as needed to allow data and other resources access.
❯❯ Considering the need to modify application functionality to ensure full service in the cloud environment.
Don’t get the idea, however, that creating an app in the cloud is precisely the same as creating an app on your local system or within a browser environment. The cloud does present challenges (as described throughout the book). For example, when working with the cloud, you must consider latency issues that you might not need to consider when running the app in other environments. After all, you’re still running the app across the Internet. You might also experience outages beyond your control (see the article at http://www.infoworld.com/article/3176098/cloud-computing/aws-outage-proves-one-cloud-isnt-enough.html for details on an 11-hour AWS outage that affected nearly half the Internet). If you have an app that is so critical that it can never go down, you may need to revisit the local data center or rely on multiple cloud products, which means coordinating the feature set of those products, thereby limiting your ability to leverage the flexibility offered by a specific cloud product.
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.
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,