There are two ways at least that are frequently encountered for the migration process itself. In some cases, the migration towards microservices architecture is organized in small increments, rather than a big overall migration project. In those cases, the migration is implemented as an iterative and incremental process. They might also be referred to as phased adoption. This has been the practice even for the migration towards Service Oriented Architecture. There are times when the migration has a predefined starting point but not necessarily a defined upfront endpoint.
Agility is a very relevant aspect when moving towards a
microservices architecture. New functionalities are often added during the
migration. This clearly shows that the preexisting system was hindering
development and improvements. New functionalities are added as microservices,
and existing functionalities are reimplemented also as microservices. The
difficulty is only in getting the infrastructure ready for adding microservices.
Domain-driven design practices can certainly help here.
Not all the existing functionality is migrated. It does not
align with the “hide the internal implementation detail” principle of
microservices nor does it align with the typical MSA characteristic of
decentralized data management. If the data is not migrated, it may hinder the
evolving of independent services. Both the service and the data scalability are
also hindered. If the scalability is not a concern, then the data migration can
be avoided altogether.
The main challenges in architecture transformation are
represented by (i) the high level of coupling, (ii) the difficulties in
identifying the boundaries of services (iii) and system decomposition. There
could be some more improvement and visibility in this area with the use of
architecture recovery tools so that the services are well-defined at the
architectural level.
Some good examples of microservices have consistently shown
a pattern of following the “model around business concepts”.
The general rule of thumb inferred from various
microservices continues to be 1) First, to build and share reusable technical
competence/knowledge which includes (i.) kickstarting a MSA and (ii.) reusing
solutions, 2) Second, to check business-IT alignment which is a key concern
during the migration and 3) Third, to monitor the development effort and
migrate when it grows too much which would show a high correlation between
migration to microservices and increasingly prohibitive effort in implementing
new functionalities in the monolith.
No comments:
Post a Comment