Microservices are an architectural and organizational approach to software development to speed up deployment cycles, foster innovation and ownership, improve maintainability and scalability of software applications, and scale organizations delivering software and services by using an agile approach that helps teams to work independently from each other. Using a microservices approach, software is composed of small services that communicate over welldefined APIs that can be deployed independently. These services are owned by small autonomous teams. This agile approach is key to successfully scale your organization. There are three common patterns that we observe when our customers build microservices: API driven, event driven, and data streaming. In this whitepaper, we introduce all three approaches and summarize the common characteristics of microservices, discuss the main challenges of building microservices, and describe how product teams can leverage Amazon Web Services (AWS) to overcome these challenges.

Man

Introduction

Microservices architectures are not a completely new approach to software engineering, but rather a combination of various successful and proven concepts such as: • Agile software development • Service-oriented architectures • API-first design • Continuous Integration/Continuous Delivery (CI/CD)

Thai

In many cases, design patterns of the Twelve-Factor App are leveraged for microservices. We first describe different aspects of a highly scalable, fault-tolerant architecture (user interface, microservices implementation, and data store) and how to build it on AWS leveraging container technologies. We then recommend the AWS services for implementing a typical serverless microservices architecture in order to reduce operational complexity.

lavender flowers

Serverless is defined as an operational model by the following tenets:

• No infrastructure to provision or manage • Automatically scaling by unit of consumption • “Pay for value” billing model • Built-in availability and fault tolerance

Finally, we look at the overall system and discuss the cross-service aspects of a microservices architecture, such as distributed monitoring and auditing, data consistency, and asynchronous communication.

source: Wikipedia