Home

Awesome

Microservices Reference Implementation

Microsoft patterns & practices

This reference implementation shows a set of best practices for building and running a microservices architecture on Microsoft Azure, using Kubernetes.

:heavy_exclamation_mark: The previous advanced Microservices Reference Implementation is now known as the AKS Fabrikam Drone Delivery reference implementation. The AKS Frabrikam Drone Delivery reference implementation is built on top the guidance forming the AKS Baseline Cluster. This basic Microservices Reference Implementation will remain here for your reference but we recommend you to consider basing your work on the AKS Fabrikam Drone Delivery reference implementation.

Guidance

This project has a companion set of articles that describe challenges, design patterns, and best practices for building microservices architecture. You can find these articles on the Azure Architecture Center:

Scenario

​Fabrikam, Inc. (a fictional company) is starting 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 backend system assigns a drone and notifies the user with an estimated delivery time. While the delivery is in progress, the customer can track the location of the drone, with a continuously updated ETA.

The Drone Delivery app

The Drone Delivery application is a sample application that consists of several microservices. Because it's a sample, the functionality is simulated, but the APIs and microservices interactions are intended to reflect real-world design patterns.

Test results and metrics

The Drone Delivery application has been tested up to 2000 messages/sec:

Replicas~Max CPU (mc)~Max Mem (MB)Avg. Throughput* Max. Throughput*Avg (ms)50<sup>th</sup> (ms)95<sup>th</sup> (ms)99<sup>th</sup> (ms)
Nginx1N/AN/Aserve: 1595 reqs/secserve: 1923 reqs/secN/AN/AN/AN/A
Ingestion10474488ingest: 1275 msgs/secingest: 1710 msgs/sec25150.115602540
Workflow (receive messages)35144579egress: 1275 msgs/secegress: 1710 msgs/sec81.5025.7121
Workflow (call backend services + mark message as complete)35144579complete: 1100 msgs/seccomplete: 1322 msgs/sec561.844713502540
Package5021378N/AN/A67.553.9165306
Delivery50328334N/AN/A93.882.4200304
Dronescheduler50402301N/AN/A85.972.6203308

*sources:

  1. Serve: Visual Studio Load Test Throughout Request/Sec
  2. Ingest: Azure Service Bus metrics Incoming Messages/Sec
  3. Egress: Azure Service Bus metrics Outgoing Messages/Sec
  4. Complete: AI Service Bus Complete dependencies
  5. Avg/50<sup>th</sup>/95<sup>th</sup>/99<sup>th</sup>: AI dependencies
  6. CPU/Mem: Azure Monitor for Containers

Deployment

To deploy the solution, follow the steps listed here.


This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.