{"id":13753173,"url":"https://github.com/mspnp/microservices-reference-implementation","last_synced_at":"2025-05-09T20:34:59.348Z","repository":{"id":38421300,"uuid":"107593481","full_name":"mspnp/microservices-reference-implementation","owner":"mspnp","description":"A reference implementation demonstrating microservices architecture and best practices for Microsoft Azure ","archived":false,"fork":false,"pushed_at":"2025-03-02T19:32:16.000Z","size":1626,"stargazers_count":860,"open_issues_count":3,"forks_count":351,"subscribers_count":67,"default_branch":"main","last_synced_at":"2025-03-02T20:29:12.660Z","etag":null,"topics":["aks","azure","azure-pipelines","cicd","kubernetes","microservice","microservices-architecture","microservices-reference"],"latest_commit_sha":null,"homepage":"https://docs.microsoft.com/azure/architecture/microservices/","language":"Bicep","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mspnp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-19T20:11:26.000Z","updated_at":"2025-03-02T19:32:20.000Z","dependencies_parsed_at":"2024-08-03T09:05:02.784Z","dependency_job_id":"a60fc28b-8b2b-4ae4-b108-6b854d2625e3","html_url":"https://github.com/mspnp/microservices-reference-implementation","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mspnp%2Fmicroservices-reference-implementation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mspnp%2Fmicroservices-reference-implementation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mspnp%2Fmicroservices-reference-implementation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mspnp%2Fmicroservices-reference-implementation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mspnp","download_url":"https://codeload.github.com/mspnp/microservices-reference-implementation/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253321837,"owners_count":21890476,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aks","azure","azure-pipelines","cicd","kubernetes","microservice","microservices-architecture","microservices-reference"],"created_at":"2024-08-03T09:01:17.674Z","updated_at":"2025-05-09T20:34:54.308Z","avatar_url":"https://github.com/mspnp.png","language":"Bicep","readme":"# Microservices Reference Implementation\nMicrosoft patterns \u0026 practices\n\nThis reference implementation shows a set of best practices for building and running a microservices architecture on Microsoft Azure, using Kubernetes.\n\n\u003e :heavy_exclamation_mark: The previous advanced Microservices Reference Implementation is now known as the [AKS Fabrikam Drone Delivery reference implementation](https://github.com/mspnp/aks-fabrikam-dronedelivery). The AKS Frabrikam Drone Delivery reference implementation is built on top the guidance forming the [AKS Baseline Cluster](https://github.com/mspnp/aks-secure-baseline). 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](https://github.com/mspnp/aks-fabrikam-dronedelivery).\n\n## Guidance\n\nThis 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:\n\n- [Designing, building, and operating microservices on Azure with Kubernetes](https://docs.microsoft.com/azure/architecture/microservices)\n\n## Scenario\n\n​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.\n\n## The Drone Delivery app\n\nThe 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.\n\n- Ingestion service. Receives client requests and buffers them.\n- Scheduler service. Dispatches client requests and manages the delivery workflow.\n- Supervisor service. Monitors the workflow for failures and applies compensating transactions.\n- Account service. Manages user accounts.\n- Third-party Transportation service. Manages third-party transportation options.\n- Drone service. Schedules drones and monitors drones in flight.\n- Package service. Manages packages.\n- Delivery service. Manages deliveries that are scheduled or in-transit.\n- Delivery History service. Stores the history of completed deliveries.\n\n![](./architecture.png)\n\n## Test results and metrics\nThe Drone Delivery application has been tested up to 2000 messages/sec:\n\n\n|                                          | Replicas | ~Max CPU (mc) | ~Max Mem (MB) | Avg. Throughput*        | Max. Throughput*        | Avg (ms) | 50\u003csup\u003eth\u003c/sup\u003e (ms) | 95\u003csup\u003eth\u003c/sup\u003e (ms) | 99\u003csup\u003eth\u003c/sup\u003e (ms) |\n|------------------------------------------|----------|---------------|---------------|-------------------------|-------------------------|----------|-----------|-----------|-----------|\n| Nginx                                    | 1        | N/A           | N/A           | serve: 1595 reqs/sec    | serve: 1923 reqs/sec    | N/A      | N/A       | N/A       | N/A       |\n| Ingestion                                | 10       | 474           | 488           | ingest: 1275 msgs/sec   | ingest: 1710 msgs/sec   | 251      | 50.1      | 1560      | 2540      |\n| Workflow (receive messages)              | 35       | 1445          | 79            | egress: 1275 msgs/sec   | egress: 1710 msgs/sec   | 81.5     | 0         | 25.7      | 121       |\n| Workflow (call backend services + mark message as complete) | 35       | 1445          | 79            | complete: 1100 msgs/sec | complete: 1322 msgs/sec | 561.8    | 447       | 1350      | 2540      |\n| Package                                  | 50       | 213           | 78            | N/A                     | N/A                     | 67.5     | 53.9      | 165       | 306       |\n| Delivery                                 | 50       | 328           | 334           | N/A                     | N/A                     | 93.8     | 82.4      | 200       | 304       |\n| Dronescheduler                           | 50       | 402           | 301           | N/A                     | N/A                     | 85.9     | 72.6      | 203       | 308       |\n\n\n\n*sources:\n1. Serve: Visual Studio Load Test Throughout Request/Sec\n2. Ingest: Azure Service Bus metrics Incoming Messages/Sec\n3. Egress: Azure Service Bus metrics Outgoing Messages/Sec\n4. Complete: AI Service Bus Complete dependencies  \n5. Avg/50\u003csup\u003eth\u003c/sup\u003e/95\u003csup\u003eth\u003c/sup\u003e/99\u003csup\u003eth\u003c/sup\u003e: AI dependencies\n6. CPU/Mem: Azure Monitor for Containers\n\n\n## Deployment\n\nTo deploy the solution, follow the steps listed [here](./deployment.md).\n\n\n\n\n---\n\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.\n","funding_links":[],"categories":["azure","microservices-architecture","kubernetes","Complex Apps (4+ independent services/apps in solution)"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmspnp%2Fmicroservices-reference-implementation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmspnp%2Fmicroservices-reference-implementation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmspnp%2Fmicroservices-reference-implementation/lists"}