Reference Architecture

Companies that have successfully adopted microservices have adopted a number of common architectural patterns. The microservices reference architecture is based on conversations with many of these companies, and documents some of these design patterns, and is a work in progress. If you have comments, feedback, or questions, please email

Reference Architecture Diagram

A typical microservices architecture has the following components:

AService discovery: Service discovery maps logical service names to physical addresses. Microservices use service discovery to find the physical address of a given service.

BMicroservices: Microservices are typically deployed in multiple instances for availability and reliability. Each microservice contains a local library that controls how microservices communicate with each other. The local library also implements additional functionality for microservices such as logging, tracing, and configuration.

CMonolith: Most organizations have an existing, monolithic code base, and incrementally adopt microservices.

DLoad balancer: The monolith sits behind a load balancer, which distributes incoming requests between available instances of the monolith.

EProxy: Outbound requests from the monolith are sent through a local proxy. The local proxy receives up-to-date data about the location of microservices from service discovery. The proxy is used so that the monolith does not need to be modified.

FApplications: Typically written by third parties, applications perform specialized functions such as persistence or search. The applications typically have static entries in service discovery, and may be behind a load balancer.

GControl layer: Each microservice sends and receives metadata: heartbeat data, logging data, routing information, and so forth. All of this metadata is shared in a logical layer called the Control Layer.

HTraffic layer: Microservices also sends and receives actual requests or messages to process. These messages are sent over a logical layer called the Traffic Layer. The specific routes a messages traverses in the traffic layer is managed by the control layer.

Stay in the Loop

Keep up with the latest microservices news.

Simplify and streamline microservice deployment.

Try the open source Datawire Blackbird deployment project.