The technique you develop your software product is referred to as software composition. It's a high-level software architecture diagram that shows how different software modules will communicate to achieve specified business goals. In this chapter, we'll look at various software composition patterns that are commonly employed in businesses. Each function is divided into one process in a microservice, and each of these services will be self-contained and full-stack.
When it comes to creating microservices, functional decomposition is crucial, and it gives your application agility, adaptability, and scalability.
The Aggregator pattern is the most basic web pattern used when creating a microservice. A simple web module will operate as a load balancer in this composition design, which means it will call different services based on requirements. A simple microservice web app with an aggregator design is depicted in the diagram below. The "Aggregator," as shown in the diagram, calls various services one by one. If any business logic has to be applied to the results of services A, B, and C, the logic can be implemented in the aggregator itself.
An aggregator can once again be offered to the outside world as a service that others can consume as needed. When creating an aggregator pattern web service, remember that each of our services A, B, and C should have their cache layers and be full stack in nature.
The aggregator model is a version of the proxy microservice paradigm. Instead of using the aggregation module, we'll utilise a proxy module in this model. Proxy services can make separate calls to different services.
As the name implies, this type of composition pattern will follow the chain structure. We will not use anything between the client and the service layer in this case. Instead, we'll let the client connect directly with the services, and all of the services will be linked together such that one service's output becomes the input for the next. The graphic below depicts a common chained pattern microservice.
Branch microservices are a more advanced variation of the aggregator and chain patterns. The client can interface directly with the service in this design pattern. Furthermore, one service can communicate with multiple services at the same time. The diagrammatic depiction of Branch Microservice is shown below.
The branch microservice paradigm allows the developer to flexibly configure service calls. All service calls will be made simultaneously, which means Service A can call Service B and C at the same time.
The shared resource pattern is a collection of all the patterns discussed above. When necessary, the client or load balancer will communicate directly with each service in this way. This is the most effective design pattern, and it is extensively used in most businesses. The Shared Resource design pattern is illustrated in the diagram below.