Hands-On Microservices:Monitoring and Testing
上QQ阅读APP看书,第一时间看更新

Anatomy of a microservice

One of the biggest challenges in using a microservice architecture is deciding how to break an existing, complex monolithic system into several services. A microservice architecture structures a complex system into more manageable, separate services, each of which focuses on a specific part of your business goal.

As we know, managing complex monolithic applications is much harder than managing a small service, for developers as well as Quality Assurance (QA) teams. A potential method of reducing the complexity of a monolithic application is by using a distributed application development approach, which refers to the decomposition of a monolithic application into several smaller microservices. It is important to consider how microservices can be made to achieve the same business goal as the original monolithic application. Microservices provide a perfect modularity due to their independent design, development, deployment, and maintenance. Let’s look at the following monolithic application diagram:

As you can see, the application is packaged as a single WAR or EAR file. All the services related to this application run in the single-server process. It uses the central database and is based on a centralized services approach.

Let’s move on to looking at how to decompose this application into microservices. One of the challenges of decomposing a monolithic application is deciding into which modules it should be divided. This depends on your business application and how many modules you want to create.