Abstract

Microservices architectures allow for short deployment cycles and immediate effects but offer no safety mechanisms when service contracts need to be changed. Maintaining the soundness of microservice architectures is an error-prone task that is only accessible to the most disciplined development teams. We present a microservice management system that statically verifies service interfaces and supports the seamless evolution of compatible interfaces. We define a compatibility relation that captures real evolution patterns and embodies known good practices on the evolution of interfaces. Namely, we allow for the addition, removal, and renaming of data fields of a producer module without breaking or needing to upgrade consumer services. The evolution of interfaces is supported by runtime generated proxy components that dynamically adapt data exchanged between services to match with the statically checked service code.The model was instantiated in a core language whose semantics is defined by a labeled transition system and a type system that prevents breaking changes from being deployed. Standard soundness results for the core language entail the existence of adapters, hence the absence of adaptation errors and the correctness of the management model. This adaptive approach allows for gradual deployment of modules, without halting the whole system and avoiding losing or misinterpreting data exchanged between system nodes. Experimental data shows that an average of 69% of deployments that would require adaptation and recompilation are safe under our approach.

Highlights

  • Development speed of microservice-based architectures is very attractive from the perspective of agile software development and evolution methodologies

  • That microservices can be seen as service-oriented architectures (SOA), they are at the end of the spectrum of SOA with a huge push for loosely-coupled services

  • We present the results of both our model and system architecture, we show that the deployment of new modules preserves the well-formedness of the microservice system

Read more

Summary

Introduction

Development speed of microservice-based architectures is very attractive from the perspective of agile software development and evolution methodologies. The contributions of this paper are the following: A model for an integrated lifecycle management system targeting a microservices infrastructure; A compatibility relation on service contracts, based on real traces of evolution, that ensures that it is always possible to generate adapter code for values of compatible types; An adaptation protocol flexible enough to transfer data between different (but compatible) versions of services without losing data (lemma 6); A semantics for a microservice management system whose operations include remote calls between services, deployment and undeployment of services; A type based structuring discipline for microservices, and a corresponding lightweight preflight check procedure for deployment operations. We conclude the paper by evaluating the impact of the approach, discussing related work and presenting some final remarks

System Architecture and Overview
Running Example
System Behaviour
A core language for services and modules
Type System
C Y ok M
Deploy semantics
Technical Results
Experimental Results
10 Related Work
11 Final Remarks
Full Text
Paper version not known

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