Centralização de configurações de serviços num ambiente de micro-serviços

Abstract

Tese de mestrado em Engenharia Informática (Engenharia de Software) Universidade de Lisboa, Faculdade de Ciências, 2020Configurações são um conceito bastante simples, afinal de contas podem ser apenas pares de chave-valor. Mas se pensarmos bem são elas que moldam quase tudo o que nos rodeia, pelo menos no que é manufaturado, como uma caneta, por exemplo, que pode possuir diferentes cores, pois a cor da qual uma caneta escreve é uma das suas configurações, sendo um simples par de chave-valor, onde uma caneta azul possui a chave cor correspondente ao valor azul nas suas configurações. Contudo nem sempre é assim tão simples, aliás em sistemas informáticos as configurações podem ficar bastante complexas e confusas, sendo que quanto maior o sistema maior o número de configurações que este necessita. Nos últimos anos bastantes empresas que desenvolvem sistemas informáticos, por diversos motivos, têm decidido mudar a arquitectura dos seus sistemas para Micro-Serviços. No entanto, com esta mudança também surgiram novos problemas. Será que devemos colocar todas as configurações de um serviço centralizado ou distribuído pelos vários serviços? Será que devemos manter os ficheiros de configurações locais a cada serviço ou externas? Estas foram algumas das perguntas mais frequentes nestas transições. A resposta na maioria dos casos é a utilização uniforme de configurações externas de forma a não fragmentar as configurações pelos vários serviços. Utilizar configurações externas permite assim uma melhor gestão das mesmas, no entanto ainda existem pontos que podem ser melhorados. Um desses pontos é o número de configurações necessárias e como estas interagem umas com as outras. Ao utilizar uma arquitetura de Micro-Servic¸os estas configurações são ainda em maior quantidade, do que num sistema monolítico por exemplo, pois cada serviço necessita não só das suas próprias configurações, mas também de configurações mais gerais do sistema. Isto pode levar a configurações duplicadas, sendo assim difíceis de corrigir ou alterar caso necessário visto que uma configuração pode ter de ser modificada em diferentes locais. A solução aqui apresentada tenta minimizar estes problemas, adicionando um serviço de gestão de configurações independente do produto. Esta proposta irá possuir um sistema hierárquico de configurações, para assim diminuir o número de configurações duplicadas. Também estará provida de um sistema de versões, possibilitando assim uma fácil detecção de mudanças, um mecanismo para voltar a um estado anterior e uma forma de rever alterações antes destas serem aplicadas.Configurations are a simple concept, for they are just key-value pairs. Despite being a simple concept, they shape almost everything around us, at least what is manufactured, such as a pen, for example, that may have different colors: the color of which a pen writes is one of its configurations. a simple key-value pair, where a blue pen has the key color corresponding to the value blue in its configurations. However it is not always so simple, in computer systems configurations can be very complex and confusing, and the larger the system, the greater the number of configurations it needs. In recent years many companies that develop computer systems have, for various reasons, decided to change the architecture of their systems to Micro-Services. However, with this change new problems arose. Should we put all the configurations in one place or in multiple places? Should we keep the local configuration files for each service or external? These were some of the most frequently asked questions in these transitions. The answer in most cases is the uniform use of external configurations so as not to fragment the configurations across the multiple services. Using external configurations allows for a better management, however there are still points that can be improved. One of these points is the number of configurations required and how they interact with one another. When using a Micro-Services architecture, these configurations are still in greater quantity than in a monolithic system, for example, because each service requires not only its own configurations, but also more general configurations of the whole sistem. This can lead to duplicate configurations and therefore more difficult to fix or change, since they can be in different files in different folders. The solution presented here attempts to minimize these problems by adding a configuration service independent from the product. This proposal features a hierarchical system of configurations in order to reduce the number of duplicate configurations. It will also be provided with a versioning system, allowing for easy detection, reviewing and reversion of changes

    Similar works