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.

The goal of this guidance is to show the end-to-end process of designing, building, and operating microservices under a realistic scenario. We hope you will find it useful in your own projects. As always, we greatly appreciate your feedback.