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]

Read more

Summary

Introduction

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?

Objectives
Methods
Results
Conclusion

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.