Amazon Web Services For Dummies
Amazon Web Services (AWS) is a cloud service provider that offers easy access to a variety of useful computing resources, all offered in an on-demand, cost-effective manner. If you're an IT practitioner who's ready to embrace Amazon Web Services, break your old application design pattern habits and implement new approaches that leverage AWS characteristics and strengths. Understand AWS possibilities and limitations, and use the service as inspiration for innovative ideas for your organization.
5 Key Characteristics of Amazon Web Services
When it comes to Amazon Web Services (AWS), it's vital to understand its key characteristics to ensure that your applications run well in the Amazon environment. After all, as the saying goes, you can't play the game without understanding the rules.
Here are the AWS characteristics that you should keep in mind when planning your applications:
AWS offers a variety of services, all designed to deliver one set of functionality. Each service stands alone, but you can mix and match them to meet the specific needs of your application.
Each service is, well, a service, offered via an API. Some of you may choose to use Amazon's or a third party's user interface, while others may choose to access AWS directly via APIs or the AWS software development kit. No matter how you access the services, remember that each has its own functionality and idiosyncrasies.
The AWS infrastructure is failure-prone, and Amazon achieves service robustness through redundancy. For those services that Amazon offers service level agreements (SLAs), it commonly maintains three copies of the computing and data associated with a service.
AWS is offered on an on-demand, pay for what you use model. AWS can be a fantastic bargain, with very low costs when you're first starting to develop an application. However, the meter is always running, so to speak, so it's important to track what you use.
AWS services are offered on a region- and availability zone-based partitioning. Accessing data in one region from EC2 instances in another imposes network traffic charges, so knowing where your data is located and your applications need to run is important if you want to keep costs down.
4 Tips for Designing Applications for Amazon Web Services
Because Amazon Web Services (AWS) differs so much from traditional infrastructure offerings, attempting to apply traditional application design principles doesn't always result in the best outcomes. Here are some points to keep in mind:
Everything fails all the time: Those are Amazon's AWS watchwords, and they should be yours as well. In particular, EC2 instances can fail or quit responding unexpectedly, so incorporate resilience to resource failure into your application.
Use redundancy to ensure application uptime: Because AWS resources can fail, follow Amazon's operating principle, and design and implement redundancy in your application. Redundancy protects your application against resource failure.
Design your application to horizontally scale up — and down: Because AWS resources incur costs whether they're heavily used or used not at all, it's important that your application be able to grow and shrink its resources so that you are using only what you need to support your application performance and resilience.
Use open source components as much as possible: Not only does open source software cost less, its licensing conditions make it much more congenial to sporadic use. Proprietary software, by contrast, usually requires a significant license fee whether the software runs for five minutes or five years.
5 Uncommon Ways to Use Amazon Web Services for Applications
Amazon Web Services (AWS) provides a far richer set of services than most people recognize. While most are familiar with and use well-known AWS products like EC2 and S3, too many people fail to explore further into AWS and learn about other services that they could use for their applications. By leveraging additional AWS core and platform services, you can:
Develop far richer applications: For example, by using ElasticSearch, you can provide sophisticated searching within your application. There's a whole range of AWS services just waiting for you to use them.
Deliver applications much more quickly: Instead of locating and implementing open source software packages, or (even worse) spending endless time negotiating proprietary license contracts, you can begin using AWS services to build out your application quickly and bring it into production sooner.
Better match service use with service cost: All of Amazon's AWS services are delivered in an on-demand, no commitment, usage-based pricing fashion. By using AWS services in your application, you are able to match your costs with your benefits, ensuring that your application achieves good economic outcomes.
Build more scalable applications: Amazon designs all of its services to run at scale. If your application requires massive amounts of whatever AWS product it uses, you can be confident that Amazon has designed its services to scale to whatever level you may need.
Leverage Amazon's own experience: Many of the products AWS offers were originally created to help Amazon.com runs its ecommerce business. If you use any AWS products, you can be sure they've been battle-tested in the harshest of e-commerce environments.
5 Things that Amazon Web Services Can and Can't Do
A sure recipe for disappointment is to expect more from Amazon Web Services (AWS) than it can deliver. While AWS is a rich collection of services that are available in effectively unlimited scale, it's important to understand that there are a number of things AWS can and cannot do:
AWS cannot make your legacy application "cloud-based." Legacy applications have typically been designed for stable loads with static hardware infrastructure. They will probably work in AWS, but they won't magically become cloud applications.
AWS can support highly scalable applications. Think of AWS as offering infinite capacity. All those applications you had trouble with because they outgrew predicted user load, storage use, or network traffic? No problem anymore with AWS. Amazon provides the resource, you provide the application load.
AWS cannot make your application failure-proof. Amazon designed AWS based on the notion that "everything fails all the time." While AWS is designed to be highly resilient to resource failure, that doesn't mean your application can't fail — it just means that you have the ability to make your application more robust, if you leverage AWS application design principles.
AWS can make it cost less to run your application. Because Amazon provides AWS on a usage-based cost, if you design your application to follow the "down and off" principle of using only what you need and then skedaddling, you can typically save a lot of money compared to the traditional model of resource cost, where you pay up front for resources.
AWS cannot make your application secure for you. In cloud computing environments, security is a shared responsibility. Amazon takes on security responsibility for what it provides — the computing environment — while you take on security responsibility for what you provide — application software components. If you don't do a good job managing your application's security, there's nothing Amazon can do to make it secure.
4 Innovative Ways to Use Amazon Web Services
The most successful users of Amazon Web Services (AWS) don't use it like traditional infrastructure offered on a pay-as-you-go basis. Instead, they study AWS and then think about how they can use its services and characteristics to design new offerings that were impossible with traditional infrastructure.
Here are some innovative ways to use AWS:
Design an application that supports enormous numbers of users. The effectively unlimited scale of resources that AWS provides makes it possible, for the first time in the history of computing, to build applications that can support unlimited user populations. This enables applications like Pinterest to start and scale; what can scale do for you?
Participate in "The Internet of Things." One way of saying it is "software is eating the world." Another is that everything is becoming a computing device — your watch, your car, your front door lock. The "IoT," as it's known, will generate huge amounts of data and network traffic. Use AWS to create an application that delivers a new service or analyzes existing ones.
Combine a number of services into a new application. Every application and service is now becoming API-enabled, making it easy to aggregate existing services into a new application. Combine a weather service and a personal health service to enable people to calculate how much Vitamin D3 they're going to get today. Use AWS to host your application, secure in the knowledge that it can support you whether your application traffic is tiny or huge.
Integrate AWS services into your application to make it more powerful. You can use Simple Email Service (SES) to notify users of an important event. You can use Elastic Transcoder to enable user video uploads to make your application functionality richer. There are tons of AWS products to choose from — use as many as you can.