Abstract
Microservice architecture has become the leading design for cloud-native systems. The highly decentralized approach to software development consists of relatively independent services, which provides benefits such as faster deployment cycles, better scalability, and good separation of concerns among services. With this new architecture, one can naturally expect a broad range of advancements and simplifications over legacy systems. However, microservice system design remains challenging, as it is still difficult for engineers to understand the system module boundaries. Thus, understanding and explaining the microservice systems might not be as easy as initially thought. This study aims to classify recently published approaches and techniques to analyze microservice systems. It also looks at the evolutionary perspective of such systems and their analysis. Furthermore, the identified approaches target various challenges and goals, which this study analyzed. Thus, it provides the reader with a roadmap to the discipline, tools, techniques, and open challenges for future work. It provides a guide towards choices when aiming for analyzing cloud-native systems. The results indicate five analytical approaches commonly used in the literature, possibly in combination, towards problems classified into seven categories.
Highlights
Cloud-native systems take full advantage of distributed computing offered by the cloud delivery model
The goal of this study is to report on the practice of analyzing microservice architecture
A specific subset of dynamic techniques is commonly applied to fault analysis and root cause analysis: log analysis and execution trace analysis are perfect for this task, as they examine traces directly related to program execution [35,40,42,43,44]
Summary
Cloud-native systems take full advantage of distributed computing offered by the cloud delivery model. These systems are fueled mainly by microservice architecture [1], an architectural style where the system is broken down into reusable, lightweight, and granular services that interact with one another. Microservices are independently deployed, have lower coupling, and are self-contained This means that services can be developed and tested by different development teams, dramatically lowering development time. It is expected that microservices become easier to maintain due to their smaller size and scope. Is this really the case from a global perspective?
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have