microservice communication patterns. You will then move onto internal microservices application patterns, such as caching strategy, asynchronism, CQRS and event sourcing, circuit breaker, and bulkheads. microservice communication patterns

 
 You will then move onto internal microservices application patterns, such as caching strategy, asynchronism, CQRS and event sourcing, circuit breaker, and bulkheadsmicroservice communication patterns In this article we will see key authentication Security Patterns In Microservice Architecture

Let’s review some of the ways in which services establish communication in a microservice architecture. In this article, we are going to Developing “Microservices Resilience and Fault Tolerance with applying Retry and Circuit-Breaker patterns using Polly”. Each microservice lives independently, but on the other hand, also all rely on each other. Microservices Inter-Service Communication. In an active composition pattern, microservices communicate using request-response style communication, where a given microservice can invoke one or more other microservices using synchronous messaging protocols such as REST/HTTP, gRPC remote procedure call, and the GraphQL API query language, among others. Direct client-to-microservice communication can raise. In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with. In a monolithic. This allows teams to easily change authorization coding for policies without changing the coding for the app. All microservices in a project get deployed in production at their own pace, on-premise on the cloud, independently, living side by side. When you work with microservice-oriented applications you must deal with a lot of communication between microservices. Companies all over the world are using microservice patterns, in a bid to increase application availability, reliability, and scalability. Rather than simply advocating for the use the microservice architecture, this clearly-written guide takes a balanced, pragmatic approach, exploring both the benefits and drawbacks. The client directly consumes the endpoint of services in the production environment. Synchronous communication. Scalability. Figure 4-22. A deep dive into possible architectural choices for an inter-service communication style. Understand the benefits and challenges of microservices, and when to use this style of architecture. Therefore, there is a separate database for the eligibility checking app and EMI calculator. modern API architectural. You will need to design APIs carefully. To implement the Bulkhead pattern, you can take advantage of the single responsibility, asynchronous communication, and fail-fast patterns. 1. 4. 3. But from development through testing to release, each microservice is isolated from all other microservices. 2. A microservices architecture is a type of application architecture where the application is developed as a collection of services. This book teaches enterprise developers and architects how to build applications with the microservice architecture. isolation. Learn new concepts from industry experts. Services B, C, and D can register. Powered by . To. g. To initiate communication, a service publishes a message to the message broker. We will compare the API gateway pattern and the Direct client-to-microservice communication. Direct client-to-microservice communication can make it difficult to refactor the contracts of microservices. And across message broker systems like Kafka. Developers could run into several problems when many microservices communicate with one another, including:. In a traditional approach, every service would be fronted with a load balancer (physical, virtual, or cloud depending on the deployment environment). In this approach, a client app can make requests directly to some of the microservices, as shown in Figure 4-12. Database per Microservice Pattern. This is the big one. It consists of video lectures, code labs, and a weekly ask-me-anything video conference repeated in multiple timezones. request-response; the most typical usage in between the Client and the API gateway or a microservice; in this type the client send a request and waits for the response; its the simplest but less scalable or resilient; be aware of cascading failures in nested calls between multiple. The Ordering microservice may need the Shipping microservice to create a shipment for an approved order. Communication and Coordination Between. Distributed Data Management. Command interaction. This could be achieved by using REST or messaging. We are talking — of course — about microservices. It’s a type of pattern which acts as an key concept in microservices architecture, where addressing data consistency across services is done by splitting transactions into local transactions handled by individual services. a. To address these challenges, consider offloading tasks, parallelizing, or exploring non-blocking communication patterns while preserving the workflow, as. Strong coupling. Service 1 fires a message to a message. The microservice architecture is being increasingly used for designing and implementing application systems in both cloud-based and on-premise infrastructures, high-scale applications and services. 1. One popular example of a service discovery pattern is the use of a centralized registry, such as Netflix's Eureka or Consul by Hashicorp. Microservice query caching. Branch. Queue groups. NET 7, Docker Containers and Azure Kubernetes Services. It provides the framework to develop, deploy, and maintain microservices architecture diagrams and services independently. Microfrontends are what we get when we bring the microservice approach to the frontend. DevOps is a set of practices that breaks the siloed operational and development capabilities for enhanced interoperability. Each microservice would have a public endpoint (. Choosing patterns at the design stage is preferable to choosing and implementing patterns too late when problems start to occur in the system. The first part is emphatic about the need to use ubiquitous language for communication between those responsible for the business, and the engineering team responsible for the development. By the way of illustration, Berardi et al. Clearly, one of the main responsibilities of Microservice 1 is to balance the load among all Microservice 2 instances. The shopping cart microservice uses a distributed cache that supports its simple, key-value data store . Phạm Văn Oanh. In this chapter, we provide a high-level overview of these patterns along with implementation options available in the Azure cloud. Transportable microservice. REST Template is the easiest way to establish synchronous communication from m1 to m2. Synchronous microservices communication. To learn more about this I highly recommend to read the chapter Interprocess communication in a microservice architecture from the book Microservice Patterns: With examples in Java. A microservices architecture also brings some challenges. In modern business applications using the microservices architecture patterns, you generally decouple the frontend and backend services. As a result, data consistency can be a challenge. Find out the pros, cons, and use cases of each pattern. In the next section, we’ll cover three resilience patterns that can help developers to engineer failure-resistant microservices applications — the circuit breaker pattern, bulkhead pattern, and an engineering. The microservice becomes part of a larger application after deployment. Design patterns for microservices. Asynchronous Communication. Which communication mechanisms do services use to communicate with each other and their external clients? Remote Procedure Invocation - use an RPI-based protocol for inter. As a result, microservice design patterns have surfaced. Saves lots of money! Microservices. Microservice communication is a key factor in achieving a well-architected and robust system, and your choice of communication pattern can significantly impact the overall success of your. All of these support point-to-point and. Some data may include in a message or event. Avoid overly chatty APIs, think about serialization formats, and look for places to use asynchronous communication patterns like queue-based load leveling. Viktor Gamov. In Asynchronous event-driven communication, microservice publishes an event when something happens. This document is the third in a four-part series about designing, building, and deploying microservices. Design Patterns for Microservices:-1. Any of these types of communication patterns could be used to facilitate eventual consistency, the concept of synchronizing data between multiple services. Figure 4-12. For a write, heavy system asynchronous is the best bet with a sync-over-async wrapper. That means a microservices architecture is mainly oriented to the back-end, although the approach is also being used for the front end. Subject-based messaging. NET, the web framework for . If you're using an API Gateway, the gateway is a good place to authenticate, as shown in Figure 9-1. Microservice 1. These patterns are proven solutions to recurring design challenges related to microservice architecture. The other type of microservice communication, asynchronous, allows a service to continue with its tasks after sending. [23] written about hosting microservice based distributed application selected from multiple providers. Isolation. The pattern is similar to the facade pattern from object-oriented design, but it is part of a distributed system reverse proxy or gateway routing for using as a synchronous communication model. Here is a list of some common microservice design patterns: 1. 3 methods for microservice communication Software engineer and entrepreneur. Use Domain-Driven Design principles in your microservice design; Leverage patterns like event sourcing, database-per-service, and asynchronous communication; Build resilient web services and mitigate failures and outages; Ensure data consistency in distributed systems; Leverage industry standard technology to design a robust distributed applicationImplementing the set of persistence patterns we’ve covered is a great start to making microservice interactions more reliable and predictable. Complementarily, microservices commonly use messaging protocols in the asynchronous communication. Not only does the API gateway optimize communication between clients and the application, but it also encapsulates the details of the microservices. The most common model for application steering of work is the API broker design pattern, where a master component (the broker, in this case) receives work from the source. This study focuses on architecture conformance to microservice patterns and practices. The client module registers the microservice with the transport protocol used in communication. A saga is a sequence of transactions that updates each service and publishes a message or event to trigger the next transaction step. Only the target microservice recognizes and knows the message. The fundamental security requirements. synchronous and asynchronous communication, deployment, and testing. Microservice are small business services that can work together and can be deployed autonomously. Finally, the “Payments” microservice is the overall system that the customer uses to make their monthly payment. Distributed computing concepts have proliferated with cloud computing concepts in the past decade. In this section, we aim to identify these communication patterns for microservice architectures in the literature. Enterprise Microservices: Benefits,… by Soumik Majumder Aug 7, 2023 An in-depth guide to understanding enterprise microservices: what they are,… 8 Microservices Data Management Patterns by Ashwin Dua Sep 20, 2022 Microservices data management patterns 1. What design patterns are available for inter-service communication for microservices? Here are a few patterns to note: Saga Pattern: A sequence of transactions, each one local to its database. Besides this, two other key challenges can be. Drawing on decades of unique experience from author and microservice architecture pioneer Chris Richardson. Downstream services would hard code the address of the load balancer when routing to the upstream service. Asynchronous communication: Microservices in an event-driven architecture communicate asynchronously, allowing for better responsiveness and resilience in the face of failures or high latency. This can become a nightmare in the long run. Microservices are a pattern, or architecture, that is focused around small, loosely-coupled services that comprise a greater application. It consists of video lectures, code labs, and a weekly ask-me-anything video conference repeated in multiple timezones. BFF (Backends for. Monitoring. Microservices design. The purpose of this article is to present a new communication pattern for the frontend in the microservice architecture, specifically addressing the challenges associated with the widely used. But, before Microservice B responds to Microservice A, it sends a message to Microservice C. The pattern is an implementation of the AKF Microservice Anti-Pattern Fan—Out. Each transaction is followed by an event that triggers the next transaction step. In short, the microservice-to-microservice communication has specific requirements and issues to solve. It is the most basic pattern describing event-centric communication facilitated by the Event Store. Context: Microservice is an architectural style that separates large systems into small functional units to provide better modularity. Other Considerations. --. After that, the client can get the message from the broker. The fundamental security requirements. Circuit Breaker Pattern. Microservices communicate with each other using various communication patterns. Our application remains functional. . Direct client to microservice communication approaches each microservice has a public endpoint. Implement an idempotent consumer, which is a message consumer that can handle duplicate messages correctly. The property visible below sets the time after which the caller will receive a timeout while waiting for a response: 1. Furthermore, services must sometimes collaborate to handle those requests. Let us look at different types of patterns used in Asynchronous Microservices communication. Asynchronous messaging is the next option we take a look at. However, with the right design patterns, such as aggregator or API gateway, you can simplify service management and improve communication between services. Messaging integration pattern is well suited for asynchronous (fire-and-forget) communication, where the microservice needs to send a message and not wait for a response from the receivers. In a monolith, everything is simple. Figure 4 shows a scenario of implementing an asynchronous OCR processing system. It therefore became logical to try to provide some of these inter-microservice communication capabilities in a more standardized way too. In traditional applications, work is steered by application processes. Author (s): Chris Richardson. Styles of Microservice Communication. This article looks at how messaging can help you as you write your applications. As shown in the above diagram, in synchronous communication a "chain" of requests is created between microservices while serving the client request. By the time you implement your second service (or even better, refactor an existing one into two. In the app. Asynchronous communication between microservices. A service command typically needs to create/update/delete aggregates in the database and send messages/events to a message broker. One-to-One — Sender Receiver Communication. A single service might split into two or more services, and two services might merge. It also works as a proxy service and. A pattern is a plain value, for example, a literal object or a string. The most common type is single-receiver communication with a synchronous protocol like HTTP/HTTPS when invoking a regular Web API HTTP service. Enable side by side testing of different microservice versions. Microservice Patterns and Best Practices starts with the learning of microservices key concepts and showing how to make the right choices while designing. Step 9 . gRPC supports four communication patterns: simple RPC, server-streaming RPC, client-streaming RPC, and bidirectional RPC. While simple, this pattern obscures the network and pretends that it is. This communication pattern can be defined as a method in which one microservice. Normally, microservice-based applications use systems that combine different communication styles. Adopting DevOps can help your organization with a cohesive strategy and efficient collaboration, among other benefits. It also has some significant drawbacks. In this course, Microservices Fundamentals, you will learn about the options for solving different challenges that arise and see recommended practices in action that you can apply to your own microservices. Microservices architecture has revolutionized the way we design and deploy scalable applications. And lastly we have Event Source mapping communication when polling queue records from lambda services to AWS SQS-Simple Queue Service for Decouple Microservice and processing events. So, if you consider 3 services: Service A, Service B, and Service C. It can be used to carry the identity of the calling microservice, or the identity of the end user or the system that initiated the request. 2. NET 6 and explore the pros and cons of microservice communication. NET sample microservices and container based application that runs on Linux Windows and macOS. As I told you before it's based on an. This content is an excerpt from the eBook, Enterprise Application Patterns Using . Integration patterns. Based on the results of the data extraction process, seven different communication patterns have been identified, and these patterns are explained below, along with a summary of the primary studies. The increased interest in microservices within the industry was the motivation for documenting these patterns. For example, over time how the system is partitioned into services might need to change. 111014 Corpus ID: 236304702; Deployment and communication patterns in microservice architectures: A systematic literature review @article{Aksakalli2021DeploymentAC, title={Deployment and communication patterns in microservice architectures: A systematic literature review}, author={Isil Karabey. Figure 4-12. Here, each microservice has its own bounded context. Microservice-to-microservice communication or, more broadly, server-to-server communication, is a. In Asynchronous event-driven communication, microservice publishes an event when something happens. A single service might split into two or more. Poor microservices communication can lead to bottlenecks, slowing communication patterns, down business processes, and reducing efficiency. Since it is aware that this is a message-based communication, it will wait to answer. These secrets might be an API key, or a client secret, or credentials for basic authentication. We explore in this chapter the role that JWT. --. When the application is large, with dozens of microservices, there are challenges and limitations if the application requires direct client-to-microservice communications. The probably easiest communication pattern to implement is simply calling another service. Source code example repository The series post’s will reference source code examples in the Github repository. Microservices enable teams to create small, siloed pieces of functionality where each team owns their whole stack. But from development through testing to release, each microservice is isolated from all other microservices. Ok, so you drank the microservice kool-aid and that’s everything you intend to do from now on. This can be done in two ways: 1. For the rest of this article, I’ll often refer to a single microservice as “service” and vice versa. At each action, the microservice updates a business entity and publishes an event that triggers the next action. Synchronous communication in Microservices refers to a communication pattern where the client making a request to a microservice waits for a response before proceeding with further actions. On the other hand, we will also study asynchronous communication, characterized by message queues, publish-subscribe patterns, and its non-blocking nature, which plays a. Drawbacks of the direct client-to-microservices communication. Table of contents Event-driven. There are many security challenges need to be addressed in the application design and implementation phases. The message sent to Microservice C mostly likely will contain information that is relevant to the concern of Microservice C. Hybrid Communication; In this article, we will only look at Synchronous communication. The illustration below shows this scenario: The illustration depicts several technical challenges. It can. Provider Microservice's Consumer Contract test suites are included in its automated test. timeoutInMilliseconds. Microservices are deployed as containers in a cluster where containers can be provisioned and scaled in response to traffic. mTLS uses x. It also enables an organization to. Another microservice might be partitioned into two or more services. This setting can be passed onto to application by injecting config service from the config module. thread. Using a direct client-to-microservice communication architecture In microservice scenarios, authentication is typically handled centrally. Before reading these articles, you might start with the following: Introduction to microservices architectures. The called microservice processes the message and sends a response or generates a new event, which the calling microservice can. We deliberate and reason to select a fitting architectural design. 2. Azure. Service discovery is a pattern used in microservice architecture to help services locate and communicate with each other. This book will take you through different design patterns at different stages of the microservice application development along with their best practices. This name doesn’t affect anything besides how Postman displays it. 1. Each microservice has its own separate database to ensure. Figure 3. The API Gateway Pattern is another common design pattern used in microservices architecture that involves an API gateway, which acts as an entry point for all incoming API. See Full PDF Download PDF. For example, a service that participates in a. Our focus should be on the scope of the microservice but not about making the service. With RPC, microservices can communicate either in a synchronous or asynchronous manner, whereas with Messaging the communication is always asynchronous. However, with the right design patterns, such as aggregator or API gateway, you can simplify service management and improve communication between services. Decouple messaging pattern. The most common type of communication between microservices is single-receiver communication with a synchronous protocol like HTTP/HTTPS when invoking a REST API. In mTLS, each microservice in a service. Whereas, for a read-heavy system, synchronous communication works well. It isn't just about building your microservice architecture—you also need high availability, addressability, resiliency, health, and diagnostics if you intend to have a stable and cohesive system. Design patterns, supported by. RestTemplate is a class available under spring. Microservices communication. 3. Microservices are increasingly used in the development world as developers work to create larger, more complex applications that are better developed and managed as a combination of smaller services that work cohesively together for more extensive, application-wide functionality. We should also follow some other design patterns (Best Practises) I. Do you want to learn how to develop cloud native applications using microservices in Java? This IBM Redbooks publication provides you with the best practices for Java microservices, covering topics such as service discovery, communication, data handling, security, testing, deployment, and management. As I told you before it's based on an. A composite microservice will make calls to all the required microservices, consolidate the data, and transform the data before sending back. Three deployment approaches and seven communication patterns are identified in the existing the microservice architectures. Central to this paradigm is the concept of inter-service communication. Asynchronous communication with AWS Serverless Eventbus which is EventBridge for applying Event Driven asynchronous Communication patterns. The complex problems shown in Figure 4-22 are hard. It auto resets and monitors services. It might be sent back from the receiver later as another asynchronous message. Each microservice in the listener. The microservice architecture enables the continuous delivery/deployment of large, complex applications. Why do we consider the API Gateway architecture instead of using direct client-to-microservice communication? We will. An aggregator service would be the one that provides the common public API which is consumed by the clients. js. Each microservice team is responsible for monitoring application performance, which usually employs logging and observability tools to keep a pulse on operations. Transportable microservice. Use Domain-Driven Design principles in your microservice design; Leverage patterns like event sourcing, database-per-service, and asynchronous communication; Build resilient web services and mitigate failures and outages; Ensure data consistency in distributed systems;Service-mesh is language agnostic: Since the microservice to service mesh proxy communication is always on top to standard protocols such as HTTP1. Synchronous and asynchronous are communication patterns used between two or more applications. In microservices patterns, it’s a fundamental web page that calls on a variety of services to obtain the necessary data or achieve the required functions. Keep in mind that not only are there more communication design patterns, there are also design patterns for every aspect of a microservice based architecture, such as. Microservices can have added complexities around testing, logging, and data management because of use cases. NATS supports 4 main patterns for communicating messages across entities. In the next part of the article, we will see about Asynchronous and Hybrid communication between the. One component calls another using language-level method calls. This is a step-by-step process for software system design and evolve from monolithic to microservices following the patterns & principles. Communication between services is an additional moving. 1. The probably easiest communication pattern to implement is simply calling another service. Mar 20, 2021. With the above-given microservice design patterns Java or microservices architecture Java we can understand how Java Microservices work. Reduces availability as a result of the multiplicative effect of failure (per article above). Most enterprise software development has moved their monolithic software architecture. In this article we will see key authentication Security Patterns In Microservice Architecture. The increased interest in microservices within the industry was the motivation for documenting. The source of output is divided on breaking the monolithic architecture into microservices. NET includes APIs to easily consume microservices from any application you build, including mobile, desktop, games, web,. Microservices Decomposition Design Patterns. As you know that we learned practices and patterns and add them into…Integration Patterns for Asynchronous communication. We deliberate and reason to select a fitting architectural design. Resilience patterns for inter-service communication A common mistake in distributed computing is assuming that the network will be reliable. Synchronous and asynchronous are communication patterns used between two or more applications. Tight coupling, on the other hand, enables components to maintain. BFF (Backends for. Whereas, for a read-heavy system, synchronous communication works well. in Java communicate with each other via an inter-process communication protocol. 2. From a technology perspective, this could include different APIs, frameworks, communication protocols, and datastores. client that acts as a synchronous client to perform HTTP requests. Some consumers are naturally idempotent. In an active composition pattern, microservices communicate using request-response style communication, where a given microservice can invoke one or more other microservices using synchronous messaging protocols such as REST/HTTP, gRPC remote procedure call, and the GraphQL API query language, among others. Key Features. In this section, we aim to identify these communication patterns for microservice architectures in the literature. Faster project development. If something fails, reverse operations undo the changes. For more serverless learning resources, visit TAGS: contributed, messaging, serverless. Now, each microservice has its own server and listens on a different port. Styles of Microservice Communication. In this chapter, we introduce a catalog and a taxonomy of the most common microservices anti-patterns in order to identify common problems. You need to consider asynchronous communication patterns like message broker systems. Microservices can publish. They foster faster innovation to adapt to changing market. Synchronous and asynchronous are communication patterns used between two or more applications. js and Express Specialization. Design patterns for microservices Azure Cloud Services The goal of microservices is to increase the velocity of application releases, by decomposing the application into small autonomous services that can be deployed independently. For more on choosing the right communication tools and patterns, see What to Choose for Your Synchronous and Asynchronous Communication Needs. A microservice is then invoked because the logic of another recognizes the need to run it. The most common type is a single-receiver communication via an asynchronous protocol, with HTTP/HTTPS being one of the most used. There are multiple patterns when implementing an Auth for your microservice system. Whether you are adopting a monolithic or microservices approach, your applications need to communicate with each other and to fit into a wider architecture. In asynchronous communication, requests can be queued up for later retries. External versus internal architecture and design patterns. Benefits of Using a Microservices Architecture. Step 7. To be able to study this, we first performed an iterative study of a variety of microservice-related knowledge sources, and we refined a meta-model which contains all the required elements to help us reconstruct existing. There are many security challenges need to be addressed in the application design and implementation phases. Microservice Communication Patterns. Sync communication can be secured using mTLS, TLS, and several additional security. Asynchronous messaging and event-driven communication are critical when propagating changes across multiple microservices and their related domain models. Microservices must communicate using an inter-process communication mechanism. Asynchronous communication is an event-driven communication pattern, where the calling microservice sends a message to the called microservice and continues processing without waiting for a response. isolation. Microservices offer a streamlined approach to software development that accelerates deployment, encourages innovation, enhances maintainability, and boosts scalability. The microservice architecture comes with lots of benefits. These request. It embraces the triggering function of Events. Synchronous communication. Drawbacks of the direct client-to-microservices communication. Microservices communication is the heartbeat of any microservices architecture and designing them could make or break the system. This pattern can be useful when a developer seeks an output by combining data from multiple services. In other words, a microfrontend is made of components — owned by different teams — that can be deployed independently. If a local transaction fails because it violates a business rule then the saga executes a series of compensating transactions that undo the changes that were made by the. This is my favorite and probably the best course to learn Service Oriented Architecture online. The strangler pattern is a microservices pattern that helps you migrate a monolith application to a microservice application. Microservice choreography. Nest Js supports MQTT (lightweight), Kafka (Powerful), RMQ (Rabbit MQ), and Redis (key based) which all are types of Publisher and Subscriber based models. A well-designed microservices architecture typically exhibits the following characteristics: Single responsibility principle: Each microservice focuses on a specific business capability, keeping it small and well-defined. We should also follow some other design patterns (Best Practises) I. In this interaction style, two services will have a one-to-one communication between them, and the client service expects a timely response from the server service. Synchronous backend microservice-to-microservice communication where an immediate response is required to continue processing. My virtual bootcamp, distributed data patterns in a microservice architecture, is now open for enrollment! It covers the key distributed data management patterns including Saga, API Composition, and CQRS. The book . --. This method relies on small, loosely coupled services that communicate through well-defined APIs, which are managed by autonomous teams. Style — High level, abstract, approaches to integration that represent a number of specific patterns. Microservices Design Patterns: Aggregator API Gateway Chained or Chain of Responsibility Asynchronous Messaging Database or Shared Data Event Sourcing. To understand how Asynchronous Communication works in Nest Js, we will use Kafka in. 6. This allows a HTTP API itself to be composed of different microservices. Microservices communicate with each other using various communication patterns. 4. Microservices architecture is a software system architecture that is designed as a collection of loosely coupled independent services. pattern transactional messaging service design inter-service communication Pattern: Transactional outbox Also known as. Where to draw the boundaries is the key task when designing and defining a microservice. Microservice architecture have become. A saga is a sequence of local transactions. The most important feature of the microservice-based architecture is that it can perform continuous delivery of a large and complex. Supports Visual St. A client makes a command or a request to a service by sending it a message. This means it doesn’t force teams to use specific tools and technologies; rather, it suggests technologies that address the pattern. Each one, as we are going to see, comes with its own benefits and tradeoffs. Style — High level, abstract, approaches to integration that represent a number of specific patterns. In microservices and network messaging, synchronous communication uses blocking and solicited semantics: one party makes a request and. As. And lastly we have Event Source mapping communication when polling queue records from lambda services to AWS SQS-Simple Queue Service for Decouple Microservice and processing. Since it is a microservice, you just need to scale that service and leave the rest. Communication between microservices should be as lightweight as possible and should typically be aware of just the contents of. For a system that is both read and. This is the 2nd part of the Microservice design pattern blog series.