With millions of customers worldwide, Amazon Web Services (AWS) is a market leader in cloud computing solutions and services. Through its cloud platform, AWS prides itself on delivering the most functionality and features, the largest ecosystem of customers and partner organizations, and as being the most innovative cloud platform provider. AWS discussed implementing microservices in a recent white paper, and we explore some of those insights here.
Improving Services Through App Modernization
So what’s the value of containers? It’s a simple question with a not-so-simple answer. AWS sheds some light on the value containers provide in an MSA and highlights some of the products they offer that enable containerization of microservices.
AWS: "A common approach to reduce operational efforts for deployment is container-based deployment. Container technologies like Docker have increased in popularity in the last few years due to benefits like portability, productivity and efficiency. The learning curve with containers can be steep, and you have to think about security fixes for your Docker images and monitoring. Amazon Elastic Container Service (Amazon ECS) and Amazon Elastic Kubernetes Service (Amazon EKS) eliminate the need to install, operate and scale your own cluster management infrastructure. With simple API calls, you can launch and stop Docker-enabled applications, query the complete state of your cluster, and access many familiar features like security groups, Load Balancing, Amazon Elastic Book Store (AWS EBS) volumes, and AWS Identity and Access Management (IAM) roles."14
But that’s only part of the equation. How does a service mesh fit in?
AWS: "In an advanced microservices architecture, the actual application can be composed of hundreds or even thousands of services. Often the most complex part of the application is not the actual services themselves, but the communication between those services. Service meshes are an additional layer for handling inter-service communication, which is responsible for monitoring and controlling traffic in microservice architectures. This allows tasks, like service discovery, to be completely handled by this layer.
Typically, a service mesh is split into a data plane and a control plane. The data plane consists of a set of intelligent proxies that are deployed with the application code as a special sidecar proxy that intercepts all network communication between microservices. The control plane is responsible for communicating with the proxies.
Service meshes are transparent, which means that application developers don’t have to be aware of this additional layer and don’t have to make changes to existing application code."14
And what about data’s role in all of this? How is it managed in monolith environments compared to microservices?
AWS: "Monolithic applications are typically backed by a large relational database, which defines a single data model common to all application components. In a microservices approach, such a central database would prevent the goal of building decentralized and independent components. Each microservice component should have its own data persistence layer.”14