As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Padrão de ramificação por abstração
O padrão de figo estrangulador funciona bem quando você pode interceptar as chamadas no perímetro do monólito. No entanto, se você quiser modernizar componentes que existem mais profundamente na pilha de aplicativos legados e têm dependências ascendentes, recomendamos o padrão branch by abstraction. Esse padrão permite que você faça alterações na base de código existente para permitir que a versão modernizada coexista com segurança com a versão antiga sem causar interrupções.
Para usar o padrão de ramificação por abstração com sucesso, siga este processo:
-
Identifique componentes monolíticos que tenham dependências iniciais.
-
Crie uma camada de abstração que represente as interações entre o código a ser modernizado e seus clientes.
-
Quando a abstração estiver pronta, altere os clientes existentes para usar a nova abstração.
-
Crie uma nova implementação da abstração com a funcionalidade reformulada fora do monólito.
-
Mude a abstração para a nova implementação quando estiver pronto.
-
Quando a nova implementação fornecer todas as funcionalidades necessárias aos usuários e o monólito não estiver mais em uso, limpe a implementação antiga.
O padrão de ramificação por abstração geralmente é confundido com alternâncias de recursos
A tabela a seguir explica as vantagens e desvantagens de usar o padrão de ramificação por abstração.
Vantagens | Desvantagens |
---|---|
|
|
A ilustração a seguir mostra o padrão de ramificação por abstração de um componente de Notificação no monólito de seguros. Começa criando um resumo ou uma interface para a funcionalidade de notificação. Em pequenos incrementos, os clientes existentes são alterados para usar a nova abstração. Isso pode exigir a pesquisa na base de código para chamadas para APIs relacionadas ao componente Notificação. Você cria a nova implementação da funcionalidade de notificação como um microsserviço fora do seu monólito e a hospeda na arquitetura modernizada. Dentro do seu monólito, sua interface de abstração recém-criada atua como intermediária e destaca a nova implementação. Em pequenos incrementos, você transfere a funcionalidade de notificação para a nova implementação, que permanece inativa até que esteja totalmente testada e pronta. Quando a nova implementação estiver pronta, você muda sua abstração para usá-la. Você gostaria de usar um mecanismo de comutação que possa ser acionado facilmente (como um botão de recurso) para que você possa voltar à funcionalidade antiga facilmente se encontrar algum problema. Quando a nova implementação começar a fornecer todas as funcionalidades de notificação aos seus usuários e o monólito não estiver mais em uso, você poderá limpar a implementação antiga e remover qualquer sinalizador de recurso de troca que possa ter implementado.