0

[2002.06185] Robust Contract Evolution in a TypeSafe MicroServices Architecture

 2 months ago
source link: https://arxiv.org/abs/2002.06185
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Computer Science > Programming Languages

[Submitted on 14 Feb 2020]

Robust Contract Evolution in a TypeSafe MicroServices Architecture

João Costa Seco (Universidade NOVA de Lisboa, Portugal), Paulo Ferreira (OutSystems, Portugal), Hugo Lourenço (OutSystems, Portugal), Carla Ferreira (Universidade NOVA de Lisboa, Portugal), Lucio Ferrao (OutSystems, Portugal)

Download PDF

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.
Subjects: Programming Languages (cs.PL)
Cite as: arXiv:2002.06185 [cs.PL]
  (or arXiv:2002.06185v1 [cs.PL] for this version)
  https://doi.org/10.48550/arXiv.2002.06185
Journal reference: The Art, Science, and Engineering of Programming, 2020, Vol. 4, Issue 3, Article 10
Related DOI:

https://doi.org/10.22152/programming-journal.org/2020/4/10

Submission history

From: João Costa Seco [view email] [via PROGRAMMINGJOURNAL proxy]
[v1] Fri, 14 Feb 2020 18:58:26 UTC (342 KB)

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK