Edit

Share via


Design a microservices architecture

Microservices are a popular architectural style for building cloud applications that remain resilient, scale efficiently, deploy independently, and evolve rapidly. To deliver real value, microservices require a different approach to design and application development.

This set of articles explores how to build a microservices architecture on Azure. It includes the following guidance:

  • Compute options for microservices: Evaluate Azure compute services for microservices, including Azure Kubernetes Service (AKS), Azure Container Apps, and Azure Functions. Learn when to use each service based on your requirements for scalability, management overhead, and deployment models.

  • Interservice communication: Design effective communication patterns between microservices by using synchronous and asynchronous approaches. Learn about REST APIs, messaging patterns, event-driven architectures, and service mesh technologies for reliable service-to-service communication.

  • API design: Create well-designed APIs that support microservices architecture principles. Learn API versioning strategies, error handling patterns, and how to design APIs that promote loose coupling and independent service evolution.

  • API gateways: Implement API gateways to manage cross-cutting concerns like authentication, rate limiting, and request routing. Understand how gateways simplify client interactions and provide centralized policy enforcement across your microservices ecosystem.

  • Data considerations: Address data management challenges in microservices architectures, including data consistency patterns, distributed transactions, and choosing appropriate data stores. Learn strategies for maintaining data integrity across service boundaries.

  • Container orchestration: Deploy and manage containerized microservices at scale by using container orchestrators. Understand how platforms like Kubernetes automate deployment, scaling, load balancing, and health management to maintain desired system state in production environments.

  • Design patterns: Apply proven design patterns specific to microservices, including the Ambassador pattern for offloading connectivity tasks, the Bulkhead pattern for resource isolation, and the Strangler Fig pattern for incremental application refactoring.

Prerequisites

Before you read these articles, start with the following resources:

Example architecture

Diagram that shows the architecture of a drone delivery workload.

Download a Visio file of this architecture.

Scenario

Fabrikam, Inc. creates a drone delivery service. The company manages a fleet of drone aircraft. Businesses register with the service, and users can request a drone to pick up goods for delivery. When a customer schedules a pickup, a back-end system assigns a drone and notifies the user of an estimated delivery time. During the delivery, the customer can track the location of the drone, including a continuously updated estimated time of arrival (ETA).

This solution works well for the aerospace and aircraft industries.

This scenario involves a fairly complicated domain. Some business concerns include scheduling drones, tracking packages, managing user accounts, and storing and analyzing historical data. Fabrikam also wants to get to market and then iterate quickly to add new functionality and capabilities. The application needs to operate at cloud scale with a high service-level objective (SLO). Fabrikam also expects different parts of the system to have very different requirements for data storage and querying. Based on considerations, Fabrikam chooses a microservices architecture for the drone delivery application.

Note

For more information about how to choose between a microservices architecture and other architectural styles, see the Azure Application architecture guide.

This architecture uses Kubernetes with AKS. But many of the high-level architectural decisions and challenges apply to any container orchestrator.

Next step