Microservices on AWS
AWS Whitepaper

Microservices and the Cloud

AWS has a number of offerings that address the most important challenges of microservices architectures:

  • On-demand resources – AWS resources are available and rapidly provisioned when needed. Compared to traditional infrastructures, there is no practical limit on resources. Different environments and versions of services can temporarily or persistently co-exist. There is no need for difficult forecasting and guessing capacity. On-demand resources address the challenge of provisioning and scaling resources in a cost- efficient way.

  • Experiment with low cost and risk – The fact that you only pay for what you use dramatically reduces the cost of experimenting with new ideas. New features or services can be rolled out easily and shut down again if they aren’t successful. Reducing cost and risk for experimenting with new ideas is a key element of driving innovation. This perfectly fits with the goal of microservices to achieve high agility.

  • Programmability – AWS services come with an API, Command Line Interface (CLI), and an SDK for different programming languages. Servers or even complete architectures can be programmatically cloned, shut down, scaled, and monitored. Additionally, in case of failure, they can heal themselves automatically. Standardization and automation are keys to building speed, consistency, repeatability, and scalability. You are empowered to summon the resources you need through code and build-dedicated tools to minimize operational efforts for running microservices.

  • Infrastructure as code – In addition to using programmatic scripts to provision and manage an infrastructure, AWS allows you to describe the whole infrastructure as code and manage it in a version control system–just as you do for application code. As a consequence, any specific version of an infrastructure can be redeployed at any time. You can compare the quality and performance of a specific infrastructure version with a specific application version and ensure that they are in sync. Rollbacks are no longer limited to the application—they can include the whole infrastructure.

  • Continuous Delivery – The programmability of the cloud allows automation of the provisioning and deployment process. Continuous Integration within the development part of the application lifecycle can be extended to the operations part of the lifecycle. This enables the adoption of Continuous Deployment and Delivery. Continuous delivery addresses the challenges of operational complexity that occur when you manage multiple application life cycles in parallel.

  • Managed services – A key benefit of cloud infrastructures is managed services. Managed services relieve you of the heavy lifting of provisioning virtual servers, installing, configuring and optimizing software, dealing with scaling and resilience, and doing reliable backups. System characteristics and features such as monitoring, security, logging, scalability, and availability are already built into those services. Managed services are a major element you can use to reduce the operational complexity of running microservices architectures.

  • Service orientation – AWS itself follows a service-oriented structure. Each AWS service focuses on solving a well-defined problem and communicates with other services using clearly defined APIs. You can put together complex infrastructure solutions by combining those service primitives like LEGO blocks. This approach prevents reinventing the wheel and the duplication of processes.

  • Polyglot – AWS provides a large choice of different storage and database technologies. Many popular operating systems that run on Amazon Elastic Compute Cloud (Amazon EC2) are available on the AWS Marketplace. In addition AWS supports a large variety of programming languages with SDKs. This enables you to use the most appropriate solution for your specific problem.