I'm excited to announce that the AzureCAT patterns and practices team has published new guidance about microservices titled Designing, building, and operating microservices on Azure.
Microservices have become a popular architectural style for building cloud applications that are resilient, highly scalable, and able to evolve quickly. To be more than just a buzzword, however, microservices require a different approach to designing and building applications.
In this set of articles, we explore how to build and run a microservices architecture on Azure, using Kubernetes as a container orchestrator. Future articles will include Service Fabric. Topics include:
- Using Domain Driven Design (DDD) to design a microservices architecture.
- Choosing the right Azure technologies for compute, storage, messaging, and other elements of the design.
- Understanding microservices design patterns.
- Designing for resiliency, scalability, and performance.
- Building a CI/CD pipeline.
Throughout, we focus on an end-to-end scenario for a drone delivery service that lets customers schedule packages to be picked up and delivered via drone. A reference implementation for this project is available on GitHub.
The reference implementation includes a number of different Azure and open source technologies:
- Azure Container Service (Kubernetes) to run frontend and backend services.
- Azure Functions to run event driven services.
- Linkerd to manage inter-service communication.
- Prometheus to monitor system/application metrics.
- Fluentd and Elasticsearch to monitor application logs.
- Cosmos DB, Azure Data Lake Store, and Azure Redis Cache to store different types of data.