Microservice-based Architectures: An Evolutionary Software Development Model
Aziz Fellah, Ajay Bandi · EPiC series in computing · 2021
Microservices have recently emerged as an architectural style that gained widespread popularity in industries. Not long time ago, software applications were designed monolith- ically, that is all components were woven together as one single executable artifact unit sharing the resources of the same machine. In this paper, we look at microservice architec- tures through evolutionary lenses as it does not capture the essence of a new software move- ment. Microservices offer a new trend in software architecture and deliver a set of benefits and best practices. However, this is by no means without their own share of challenges and problems that are self-inflicted or inherited from its predecessors (i.e., component-based software architecture (CBSA), service-oriented architecture, (SOA), and service-oriented computing (SOC). The evolution of these different paradigms and their gradual interweav- ing have fostered the development of microservices afterwards. We introduce two finite state-based formalisms called, monitoring microservice automata (MMA) and container microservice automata (CMA). The former is a powerful and parallel formalism to model microservices’ infrastructures, including monitoring microservices’ functionalities, resource usage, compositions, and interface operations. The later models each microservice func- tionality independently as an automaton that accounts for local behavior that contains a microservice and its code. Such as code is required to run within an isolated environment and a system which is fully supported by MMA. As another phase of the evolution of ag- ile software development, microservice architectures have made their footprints in several industries such as Amazon, Twiter, PayPal, LinkedIn, Netflix, and SoundCloud.