Robust Contract Evolution in a TypeSafe MicroService Architectures
Autor(a) principal: | |
---|---|
Data de Publicação: | 2020 |
Outros Autores: | , , , |
Tipo de documento: | Artigo |
Idioma: | eng |
Título da fonte: | Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
Texto Completo: | http://hdl.handle.net/10362/142220 |
Resumo: | This work was partially supported by FCT/MCTES grant PTDC/EEICTP/4293/2014. Publisher Copyright: © João Costa Seco, Paulo Ferreira, Hugo Lourenço, Carla Ferreira, and Lúcio Ferrão. |
id |
RCAP_d6f97010a283fdfe87ddbc4c67f43ea5 |
---|---|
oai_identifier_str |
oai:run.unl.pt:10362/142220 |
network_acronym_str |
RCAP |
network_name_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository_id_str |
7160 |
spelling |
Robust Contract Evolution in a TypeSafe MicroService Architecturesmicroservicesservice compatibilitysoftware evolutiontype safetyArtificial IntelligenceComputational Theory and MathematicsSoftwareTheoretical Computer ScienceModelling and SimulationThis work was partially supported by FCT/MCTES grant PTDC/EEICTP/4293/2014. Publisher Copyright: © João Costa Seco, Paulo Ferreira, Hugo Lourenço, Carla Ferreira, and Lúcio Ferrão.Microservice architectures allow for short deployment cycles and immediate effects, but offer no safety mechanisms for service contracts when they 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. The strategy to evolve a producer service without disrupting its consumers is often to maintain multiple versions of the same interface and dealing with an explicitly managed handoff period and its inherent disadvantages. We present a microservice management system that statically verifies service interface signatures against their references and supports the seamless evolution of compatible interfaces. We define a compatibility relationon types that captures real evolution patterns and embodies known good practices on the evolution of interfaces. Namely, we allow for 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 proposed in this paper is instantiated in a core programming language whose semantics is defined by a labelled 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, and hence ensure 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 57% of deployments that would require adaptation and recompilation are safe under our approach.NOVALincsRUNSeco, João CostaFerreira, PauloLourenço, HugoFerreira, CarlaFerrão, Lúcio2022-07-20T22:30:53Z20202020-01-01T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/articleapplication/pdfhttp://hdl.handle.net/10362/142220eng2473-7321PURE: 43646241https://doi.org/10.22152/programming-journal.org/2020/4/10info:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2024-03-11T05:19:43Zoai:run.unl.pt:10362/142220Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-20T03:50:12.418728Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse |
dc.title.none.fl_str_mv |
Robust Contract Evolution in a TypeSafe MicroService Architectures |
title |
Robust Contract Evolution in a TypeSafe MicroService Architectures |
spellingShingle |
Robust Contract Evolution in a TypeSafe MicroService Architectures Seco, João Costa microservices service compatibility software evolution type safety Artificial Intelligence Computational Theory and Mathematics Software Theoretical Computer Science Modelling and Simulation |
title_short |
Robust Contract Evolution in a TypeSafe MicroService Architectures |
title_full |
Robust Contract Evolution in a TypeSafe MicroService Architectures |
title_fullStr |
Robust Contract Evolution in a TypeSafe MicroService Architectures |
title_full_unstemmed |
Robust Contract Evolution in a TypeSafe MicroService Architectures |
title_sort |
Robust Contract Evolution in a TypeSafe MicroService Architectures |
author |
Seco, João Costa |
author_facet |
Seco, João Costa Ferreira, Paulo Lourenço, Hugo Ferreira, Carla Ferrão, Lúcio |
author_role |
author |
author2 |
Ferreira, Paulo Lourenço, Hugo Ferreira, Carla Ferrão, Lúcio |
author2_role |
author author author author |
dc.contributor.none.fl_str_mv |
NOVALincs RUN |
dc.contributor.author.fl_str_mv |
Seco, João Costa Ferreira, Paulo Lourenço, Hugo Ferreira, Carla Ferrão, Lúcio |
dc.subject.por.fl_str_mv |
microservices service compatibility software evolution type safety Artificial Intelligence Computational Theory and Mathematics Software Theoretical Computer Science Modelling and Simulation |
topic |
microservices service compatibility software evolution type safety Artificial Intelligence Computational Theory and Mathematics Software Theoretical Computer Science Modelling and Simulation |
description |
This work was partially supported by FCT/MCTES grant PTDC/EEICTP/4293/2014. Publisher Copyright: © João Costa Seco, Paulo Ferreira, Hugo Lourenço, Carla Ferreira, and Lúcio Ferrão. |
publishDate |
2020 |
dc.date.none.fl_str_mv |
2020 2020-01-01T00:00:00Z 2022-07-20T22:30:53Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/article |
format |
article |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
http://hdl.handle.net/10362/142220 |
url |
http://hdl.handle.net/10362/142220 |
dc.language.iso.fl_str_mv |
eng |
language |
eng |
dc.relation.none.fl_str_mv |
2473-7321 PURE: 43646241 https://doi.org/10.22152/programming-journal.org/2020/4/10 |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf |
dc.source.none.fl_str_mv |
reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação instacron:RCAAP |
instname_str |
Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
instacron_str |
RCAAP |
institution |
RCAAP |
reponame_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
collection |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository.name.fl_str_mv |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
repository.mail.fl_str_mv |
|
_version_ |
1799138099294371840 |