Como implantar vários micro serviços dependentes


7

Queremos implantar vários microsserviços no AWS ECS.

O problema que precisamos resolver é como implantá-los de maneira atômica:

Vamos dizer que temos os serviços front-end que requerem o serviço de usuário versão 2.0.

Como garantir que o serviço do usuário esteja disponível antes da implantação do front-end.

Temos a ideia de replicar toda a infra, implantar tudo e disponibilizá-la. Mas me parece complexo. Como você cria essas instâncias sobressalentes, implanta os serviços e faz a troca?

Estamos usando dois ALB e grupos de destino para cada serviço (mapeamento de porta dinâmico).

Respostas:


6

Essa pergunta pode ser uma indicação de um corte arquitetural ruim em microsserviços. De O que são microsserviços? :

Esses serviços são construídos com base nos recursos de negócios e implementáveis ​​de forma independente por máquinas de implantação totalmente automatizadas.

O ponto principal esquecido nesse caso seria o aspecto de implantação independente .

O ponto também pode ser simplesmente mal compreendido: isso não significa necessariamente que cada microsserviço deve ser capaz de executar toda a sua funcionalidade por si só, apenas significa que é capaz de resgatar normalmente quando algum outro microsserviço do qual sua funcionalidade depende não estiver disponível, talvez acompanhando o material "todo" para execução posterior, quando esse microsserviço estiver disponível.

Visto de uma perspectiva diferente: o tratamento da indisponibilidade de dependências externas de serviço deve, na verdade, fazer parte de cada funcionalidade de microsserviço - para que você possa considerar o microsserviço totalmente funcional, mesmo quando suas dependências de tempo de execução não forem satisfeitas :)

Vale a pena notar, eu acho, que nos comentários acima, estou me referindo à indisponibilidade de microsserviços, independentemente de sua razão, seja ordem de dependência de implantação ou outra coisa (interrupções, por exemplo).

Outra coisa a considerar seria a diferença mais fina entre implantar os microsserviços e colocá-los em ação alternando o tráfego para eles. A troca de tráfego geralmente é mais rápida que a própria implantação, portanto, a disponibilidade em todo o nível do sistema pode ser aumentada implantando-se primeiro todos os microsserviços e somente depois executando a troca de tráfego para todos eles.


Isso foi o que eu pensei! Muito obrigado por essas explicações.
21418 Kaymaz

1

Tivemos uma situação semelhante em que um de nossos aplicativos tinha que ser construído, implantado e estar em funcionamento antes do segundo. Isso ocorreu porque o aplicativo A possui algumas funcionalidades que devem ser executadas antes de serem referenciadas pelo aplicativo B. A maneira como conseguimos isso foi construindo-o em um único pipeline de entrega. Dessa forma, todas as dependências foram implantadas sequencialmente ou paralelamente, conforme necessário. Também tivemos nossos scripts de banco de dados em sequência, além dos recursos de reversão, apenas por precaução. Reescrevendo o seu caso, você pode implantar sua API antes do serviço de front-end. Espero que isto ajude.


0

A solução aqui é implantar os microsserviços usando o padrão de implantação azul / verde.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.