Amazon's cloud is more than just IaaS, and its additional services are growing daily. Architects and developers...
who want to get the most from the cloud and, in particular, those who want to design for the cloud specifically, should look at all the AWS offerings. Architects and developers who want to jump-start their efforts should pay particular attention to the following five AWS offerings that can change your development forever, whether you want to use the cloud to improve current apps or you want to build something totally new.
Elastic load balancing
Elastic load balancing is something every modern cloud application should have, but most haven't thought to include. One of the most important benefits of the cloud is its ability to scale processing resources to match load, but to do this scaling of processes, you have to be able to divide the workload without imposing work scheduling responsibility on the clients. With Elastic Load Balancing, you have a single URL to represent an elastic group of processes and the load balancing function divides work as needed. It can be integrated with the auto scaling features of Amazon Web Services (AWS) applications to spawn new instances when workloads demand it.
One interesting use of elastic load balancing is internal to an application between, for example, the web tier and the business process tier. This lets front-end elements feed business process instances and scale independently in response to workloads. You can make elastic load balancing a valuable piece of nearly every cloud application.
Another AWS offering, Data Pipeline, is an even more powerful set of workflow tools that allows developers to define data pipelines across a collection of tasks, each of which can be spawned and scaled as needed, and all of which have Amazon-managed resilience to failures.
Data Pipeline is designed to work with Amazon's cloud data services, including their MapReduce (Hadoop-like) services, to create processes linked to and originating from data flows. It can be a particularly powerful framework for data collection and processing applications that involve the scheduling of successive tasks and the storage of derived results. Data Pipeline handles all of your application component dependencies for you, eliminating the need for complex scheduling.
Amazon AppStream handles a problem that's exploding in the age of mobile devices, which is access to Windows applications from other devices. You run your Windows applications on AWS and the output is connected to a suitable client device, but with far more customization and security add-ons than would normally be available with simple virtual desktop solutions. You can even build your own custom clients.
A little-known trick with AppStream is building an application as a desktop client to let you build front-end processes that replace a human user. With the AppStream APIs, it's even possible to do data entry from specialized devices into Windows applications.
Amazon API Gateway is another AWS offering that is a kind of cloud-hosted version of an API transformer. You can take any application that provides an API and expose that API through a gateway that can change the way that parameters are passed, scale or change them and apply security measures to limit access.
Another useful feature of the API gateway is its ability to queue requests that are directed to back-end processes to ensure that variable workloads don't end up swamping a process that has specific capacity limits. However, this is helpful only in dealing with short bursts of excess work; to better handle variable load, look at spinning up multiple instances of the back-end process, which can be done using a combination of Load Balancer and Auto Scaling.
AWS Lambda is perhaps the ultimate way of relating processes to the cloud. In computing, a "Lambda function" is a unit of computing that operates only on what is passed to it, and so, it can be paralleled as many times as needed, replaced quickly if it fails and attached on use to any available, convenient resource. Applications built from Lambda functions and hosted using the AWS Lambda tool don't even have to know about virtual machines or connections; they simply flow together ad hoc based on structural rules that relate outputs as a function of inputs.
Most programming languages, including those of Microsoft and Oracle (Java 8 in particular), support Lambda coding, and there's a relationship between Lambda-based applications and microservices in that the coding units have similar properties. While organizations typically have little expertise using Lambda functions, the development of these skills and the use of a tool like AWS Lambda will help build truly cloud-based applications.
It's easy to see that a common capability for all of these AWS offerings is "distributability." The cloud is, or can be, everywhere, and to take advantage of that, cloud applications have to scale with workload, change geographic focus with the movement of the earth and mingle processing and data seamlessly. It's possible to write applications for this kind of agility, but to deploy them optimally, you need not only the cloud, but services that are so embedded in the cloud that they're a part of it and that make your applications a part of the cloud, too.
While some AWS offerings, including some discussed here, can be applied with little or no special development, all of them will benefit from being paired with specialized development, and some, like the Lambda service, require a whole new model of programming. That's ultimately what we can expect for the cloud -- a new hosting model leading to a new development model. These five AWS services are a taste of that future.
The ins and outs of Elastic Load Balancing
Hands on with Lambda
More tips and tricks with AWS Data Pipeline