1. singles are not functional;
2. strongly connected, since for each request to the CMS a lot of requests are generated;
3. interaction interfaces are complex and diverse – not even the API is used here, but the SQL interaction language;
4. are strongly connected functionally through a complex technical API – for the user only the supported compatibility of some versions of CMS with other versions of the DBMS is known.
The division of the system into microservices begins with an analysis of their boundaries, an analysis of the benefits of separation and the added complexity of a distributed system. It is better to separate the world services with a combination of the need:
1. Technological need, for example, a large load that is difficult to withstand without separation, for example, scaling, another type of support (SLA);
2. For business, the allocated service is already a separate and little dependent function – then we’ll consider DDD (model-driven design + ubiquitous language) approach to the implementation of microservices;
3. Need to change technology platform.
Microservice meets the following characteristics, according to M. Fowler (martinfowler.com). They can be reduced to:
1. Must be a component or service. Each microservice is a complete, fully-fledged independent service from the point of view of the developer, system administrator and user. It should have the ability to be easily replaced with another one, both in the developer code, both in the process of work (should be) and presented to others or removed in the user interface. Failure to meet the replaceability conditions at different levels leads to one service divided into parts – a distributed monolith.
2. Organization of business opportunities.
3. Products are not projects.
4. Smart endpoints and stupid connections. Not requiring complex integration with debugged services (service-oriented SOA architecture is involved in the integration of complex systems)
5. Decentralized management. This refers to orchestration, for example, Kubernetes, network management, for example, Istio, delivery management, for example, Knative.
6. Decentralized data management. Due to the self-sufficiency of the service and independence from others, it must have an independent state – the database, and for the choice of the database management system to be independent – it has its own.