I am confused about the point at which a web application diverges into microservices - is it at url level or models level? As an example, Suppose I have a monolithic app that serves 3 pages. Say each page serves a separate usecase and I want to back each of them with their own microservices. Now, which of these is the correct way of implementing a microservice based architecture:
A microservices architecture is a type of application architecture where the application is developed as a collection of services. It provides the framework to develop, deploy, and maintain microservices architecture diagrams and services independently.
With a microservices architecture, an application is built as independent components that run each application process as a service. These services communicate via a well-defined interface using lightweight APIs. Services are built for business capabilities and each service performs a single function.
While there are literally dozens of ways to implement a microservices architecture pattern, three main topologies stand out as the most common and popular: the API REST-based topology, application REST-based topology, and the centralized messaging topology.
You trouble is how model your microservices.
In term of microservices the second approach is most appropriate, which expose its logic through API.
Always when you model your microservices keep in mind the follow facts.
Loose Coupling: When services are loosely coupled, a change to one service should not require a change to another. The whole point of this Microservice thing is being able to make a change to one service, and deploy it, independent of a need to change any other part of the system. This is really quite important.
Strong Cohesion: We want related behaviour to sit together, and unrelated behaviour to sit elsewhere. Why? Well, if we want to change behaviour, we want to be able to change it in one place, and release that change as soon as possible.
As usual in Software Engineering, the answer is it depends. I can't imagine a reason right now but the option 1 could be useful in some particular scenarios.
However, considering the formal definition of microservices, the option 2 illustrates it better. One of the main advantages of having microservices is being able to reuse it. Different applications have different requirements and needs on presenting the information. Making your microservices return a JSON representation of your data will give you more flexibility on how to format this information.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With