Não construa microsserviços, busque acoplamento fraco

blog

LarLar / blog / Não construa microsserviços, busque acoplamento fraco

Jul 12, 2023

Não construa microsserviços, busque acoplamento fraco

Por: Chris Bertinato em 29 de agosto de 2023 Dada a forma como a demanda por desempenho confiável de aplicativos está sempre crescendo, não é surpresa que muitas empresas construam seus sistemas tendo em mente a expansão futura. Muitos

Por: Chris Bertinato em 29 de agosto de 2023

Dado que a procura por um desempenho fiável das aplicações está sempre a crescer, não é surpresa que muitas empresas construam os seus sistemas tendo em mente a expansão futura. Muitos especialistas do setor apontaram os microsserviços como a melhor maneira de preparar um sistema para o futuro – mas talvez seja melhor usar o termo “serviços do tamanho certo”, já que não existe uma estratégia única que funcione para todas as empresas em todos os momentos. . Em vez de pensar sobre quais das últimas tendências adotar como estratégia, as equipes deveriam reconhecer e focar no fator subjacente do acoplamento. Os sistemas são mais flexíveis e dinâmicos se houver um acoplamento frouxo entre os componentes com maior probabilidade de serem alterados.

O acoplamento, no contexto de sistemas, refere-se a como os componentes de um sistema estão conectados. As interfaces são necessárias para acoplamento fraco. Para sistemas elétricos, essas interfaces são implementadas como conectores físicos com pinos e soquetes e protocolos descritos em termos de níveis de tensão. A analogia dos sistemas de software com um conector elétrico é uma interface de programação de aplicativos (API), que pode ser implementada como um conjunto de funções ou recursos baseados em HTTP, entre outros. Mas uma interface por si só não é suficiente para um acoplamento fraco. Essa interface também deve ser um tanto estável, o que significa que um usuário pode contar com a presença dessa interface, com suas entradas permanecendo as mesmas por um longo tempo ou, pelo menos, mudando de forma previsível.

Quando os componentes de um sistema estão fracamente acoplados, esses componentes podem ser alterados internamente sem interromper significativamente o restante do sistema. Considere um exemplo cotidiano: a lâmpada. Os soquetes das lâmpadas têm tamanho padrão com roscas padrão e voltagem padrão. A própria lâmpada evoluiu através de vários tipos de materiais de filamento para LEDs, tudo sem a necessidade de troca de lâmpadas e luminárias. Agora considere um exemplo simples em sistemas de software: um servidor HTTP e um armazenamento de dados, como cache, fila ou banco de dados. Na maioria dos casos, seria benéfico colocar uma interface entre o servidor e o armazenamento de dados que facilitaria a alteração da implementação do armazenamento de dados. Uma vez que esses dois componentes estão apenas fracamente acoplados, as coisas que provavelmente mudarão poderão fazê-lo sem exigir mudanças significativas nas outras coisas.

Se os componentes do seu sistema estiverem muito interligados, mesmo a menor mudança poderá causar estragos em algum outro lugar do sistema. Você pode comparar essa estrutura a um grupo de plantas cultivadas nas proximidades. Como todos os caules estão entrelaçados, tentar trocar uma planta por uma nova será um desafio, pois um movimento em falso pode facilmente arrancar muitas outras plantas.

Em contraste, num sistema fracamente acoplado, as alterações podem ser feitas com a confiança de que quando um componente enfrenta um problema, o resto do sistema permanecerá resiliente. Essa confiança resulta em maior flexibilidade para fazer alterações, permite menor tempo de lançamento no mercado para novos recursos e produtos e potencialmente proporciona uma vantagem competitiva.

Um benefício corolário do acoplamento fraco é a capacidade de evolução: quando as interfaces estão localizadas nos locais com maior probabilidade de mudança, será mais fácil para o sistema evoluir. As interfaces devem ser estáveis ​​e opacas, para que tudo o que acontece por trás delas seja geralmente desconhecido e irrelevante para o usuário dessa interface. Assim, enquanto as interfaces permanecerem estáveis, os sistemas por trás delas serão livres para mudar e, portanto, evoluir.

Embora seja verdade que as estratégias de microsserviços suportam acoplamento flexível, elas não são o único caminho. Estratégias arquitetônicas mais simples podem proporcionar a projetos menores ou mais novos os benefícios do acoplamento fraco de uma forma mais sustentável, gerando menos sobrecarga do que a construção de uma infraestrutura focada em microsserviços.

As escolhas arquitetônicas têm tanto a ver com o componente humano de construção e operação de sistemas de software quanto com preocupações técnicas como escalabilidade e desempenho. E o componente humano é onde os microsserviços podem falhar.