AWS For Developers For Dummies
Book image
Explore Book Buy On Amazon
Even though AWS has a lot to offer, you still need to consider how it answers your specific needs. This consideration goes beyond simply determining whether you really want to move to cloud-based services, but also takes into account other offerings that might serve your needs just as well (if not better). You should compare AWS with other cloud services. You may choose to use AWS as part of your solution rather than as the only solution. Of course, this means knowing the areas in which AWS excels.

Comparing AWS to other cloud services

You have many ways to compare cloud services. One of the ways in which companies commonly look at services is by the market share they have. A large market share tends to ensure that the cloud service will be around for a long time and that many people find its services both useful and functional.

A recent InfoWorld article points out that AWS currently corners 70 to 80 percent of the cloud market. In addition, AWS revenues keep increasing, which lets Amazon continue adding new features while maintaining existing features at peak efficiency.

The cloud services marketplace continues to change at a frantic pace, so you need to keep up-to-date on the various offerings that each provider supplies. In addition, you need to track pricing and other factors that affect your application development process. Your application development needs also change over time, which means that the services you use today may not meet your needs tomorrow. In short, don’t assume that the choices you make are fixed.

Large market share and capital to invest don’t necessarily add up to a cloud service that fulfills your needs. You also need to know that the host can provide the products you need in a form that you can use. Check out the AWS product list. It includes all the major IaaS, SaaS, and PaaS categories. However, you should compare these products to the major AWS competitors:

Of the competitors listed here, Google Cloud Platform comes closest to offering the same feature set found in AWS. However, in looking at the Google offerings, you should note the prominence of machine learning services that aren’t found in AWS. On the other hand, AWS has more to offer in the way of the Internet of Things (IoT), applications, and mobile services.

Each of the vendors offering these services is different. For example, Joyent offers a simple setup that may appeal more strongly to an SMB that has only a few needs to address and no desire to become involved in a complex service. Microsoft, on the other hand, has strong SQL database-management support as well as the connection with the Windows platform that businesses may want to maintain. The point is that you must look at each of the vendors to determine who can best meet your needs (although, as previously stated, most people are voting with their dollars on AWS).

Defining target areas where AWS works best

In looking at the services that AWS provides, you can see that the emphasis is on enterprise productivity. For example, Google Cloud Platform offers four enhanced machine learning services that you could use for analysis purposes, but AWS offers only one. However, Google Cloud Platform can’t match AWS when it comes to mobile service, which is an area that users most definitely want included for accessing applications.

Unless your business is heavily involved in analysis tasks, the offerings that AWS provides are 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

Considering the app types that AWS supports best

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. 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 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.

About This Article

This article is from the book:

About the book author:

John Mueller is an author and technical editor who has written 103 books. Some of his current works include Python development books. He has also written AWS For Admins For Dummies, which provides administrators a great place to start with Amazon Web Services (AWS). John has had an interest in AWS since its inception. In fact, he wrote Mining Amazon Web Services based on that humble beginning. Be sure to read John's blog at http://blog.johnmuellerbooks.com/.

This article can be found in the category: