Implementing Microservices on AWS
Publication date: July 31, 2023 (Document history)
Microservices offer a streamlined approach to software development that accelerates deployment, encourages innovation, enhances maintainability, and boosts scalability. This method relies on small, loosely coupled services that communicate through well-defined APIs, which are managed by autonomous teams. Adopting microservices offers benefits, such as improved scalability, resilience, flexibility, and faster development cycles.
This whitepaper explores three popular microservices patterns: API driven, event driven, and data streaming. We provide an overview of each approach, outline microservices' key features, address the challenges in their development, and illustrate how Amazon Web Services (AWS) can help application teams tackle these obstacles.
Considering the complex nature of topics like data store, asynchronous communication, and service discovery, you are encouraged to weigh your application's specific needs and use cases alongside the guidance provided when making architectural decisions.
Introduction
Microservices
-
Agile software development
-
Service-oriented architectures
-
API-first design
-
Continuous Integration/Continuous Delivery (CI/CD)
Often, microservices incorporate design patterns from the
Twelve-Factor App.
While microservices offer many benefits, it's vital to assess your use case's unique requirements and associated costs. Monolithic architecture or alternative approaches may be more appropriate in some cases. Deciding between microservices or monoliths should be made on a case-by-case basis, considering factors like scale, complexity, and specific use cases.
We first explore a highly scalable, fault-tolerant microservices architecture (user interface, microservices implementation, data store) and demonstrate how to build it on AWS using container technologies. We then suggest AWS services to implement a typical serverless microservices architecture, reducing operational complexity.
Serverless is characterized by the following principles:
-
No infrastructure to provision or manage
-
Automatically scaling by unit of consumption
-
"Pay for value" billing model
-
Built-in availability and fault tolerance
-
Event Driven Architecture (EDA)
Lastly, we examine the overall system and discuss cross-service aspects of a microservices architecture, such as distributed monitoring, logging, tracing, auditing, data consistency, and asynchronous communication.
This document focuses on workloads running in the AWS Cloud, excluding hybrid scenarios
and migration strategies. For information on migration strategies, refer to the Container
Migration Methodology whitepaper
Are you Well-Architected?
The
AWS Well-Architected Framework
In the Serverless Application Lens, we focus on best practices for architecting your serverless applications on AWS.
For more expert guidance and best practices for your cloud
architecture—reference architecture deployments, diagrams, and
whitepapers—refer to the
AWS Architecture Center
Modernizing to microservices
Microservices are essentially small, independent units that make up an application. Transitioning from traditional monolithic structures to microservices can follow various strategies.
This transition also impacts the way your organization operates:
-
It encourages agile development, where teams work in quick cycles.
-
Teams are typically small, sometimes described as two pizza teams—small enough that two pizzas could feed the entire team.
-
Teams take full responsibility for their services, from creation to deployment and maintenance.