Robust Contract Evolution in a TypeSafe MicroService Architectures

Detalhes bibliográficos
Autor(a) principal: Seco, João Costa
Data de Publicação: 2020
Outros Autores: Ferreira, Paulo, Lourenço, Hugo, Ferreira, Carla, Ferrão, Lúcio
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 relation΀on 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