# On Microservice Analysis and Architecture Evolution:
## 4 Review of the Selected Studies
### Challenges and Goals
#### 4.2.5 Microservice Evolution  
Microservice architecture is notable for being one that facilitates a rapid pace of development, leading to a quickly evolving architecture. Thus, tools and techniques are needed to manage this rapid evolution, both to verify that the current state of the architecture is acceptable and to ensure that the system remains maintainable and sustainable throughout the evolutionary process.  
To this end, several techniques exist in the literature for addressing architecture evolution. As mentioned above, several works aim to perform Software Architectural Reconstruction on microservice systems, and these techniques also apply to evolution. [PERSON] et al. [34] specifically seek to address issues of continuing documentation of new and evolving microservices that emerge during development. The approach proposed by [PERSON] et al. [57] similarly addresses the evolution of the microservice system using SAR and further develops it by integrating SAR with their previously developed microservice-specific modeling language, which allows for easier documentation and representation of microservice architecture. The SAR performed by [PERSON] et al. [26] follows four specific architectural views, each of which provides a different viewpoint of how a microservice system evolves: the service viewpoint shows how the services and their relationships evolve, the domain viewpoint shows how the domain model used by microservices evolves, the technology viewpoint demonstrates changes in the technology stack used in the system, and the operational viewpoint shows users how their system evolves in its deployment. Relatedly, [PERSON] et al. [2] construct a service dependency graph among microservices to visualize the evolution of architectural change, and they further protect the evolution process by providing a mechanism to retrieve existing microservices that suit user needs to prevent unnecessary development as well as suggest test cases for regression testing to prevent damaging changes.  
One threat to the sustainable evolution of microservices is poor coding design. Several works seek to address this aspect of evolution. For example, microservice antipatterns threaten to invalidate the benefits gained using microservice in the first place, and [PERSON] et al. [31] analyze existing literature to identify a catalog of 16 microservice antipatterns, the definitions of which can be used to combat poor microservice design. [PERSON] et al. [27; 28], and [PERSON] et al. [29] take this further and propose methods of automatically detecting selected microservice antipatterns or code smells using static-code analysis. Works identifying technical debt are also closely related to the concept of antipatterns, and the surveys performed by [PERSON] et al. [65] and [PERSON] et al. [63] and the solutions they proposed show promise for preventing technical debt from cripling microservice evolution. [PERSON] et al. developed a tool, \(\mu\)TOSCA, to identify and resolve architectural smells [22]. \(\mu\)TOSCA uses the Kubernetes deployment file to resolve architectural smells using the developed tool \(\mu\)FRESHENER via refactoring.  
Beyond issues relating to architecture and antipatterns, a number of metrics exist that indicate the health of a microservice system. These metrics provide a key insight into how maintainable a microservice system is. [PERSON] et al. [39] analyze runtime data of microservices to calculate several maintainability metrics relating to the microservice coupling, cohesion, complexity, and size. [PERSON] et al. [40] take a different approach; they analyze performance metrics to identify performance degradation in microservices, a key indication that the current design is not sustainable.