Camada de Anti Corrupção
Um problema que em alguns momentos podemos nos deparar é com algo chamado acoplamento, mais especificamente como podemos diminuir os pontos de impactos em nossos serviços? Exemplos de pontos de impacto:
- Consumir serviços de terceiros
- Utilizar bibliotecas de terceiros
- Novos sistemas comunicar com sistemas antigos (legados)
- Comunicação entre serviços e contextos
Esses exemplos criam um alto acoplamento e alto acoplamento aumenta possíveis impactos e pontos de mudança que podem fazer nossos sistemas ficarem fora do er, por exemplo:
- Serviço de terceiro não versiona API e fez uma publicação com quebras de compatibilidade
- Serviço de terceiro ficar fora do ar
- Bibliotecas mudaram sua interface publica com quebra de compatibilidade
- Novos sistemas se comunicarem com sistemas antigos, onde pode precisar adaptar ou transformar informações ou as vezes ajustar o meio de transporte
- Alta dependência entre um contexto de fatura com o contexto de cliente, exigindo sincronização de comunicação o que pode gerar gargalo e custos para tais alinhamentos.
Uma forma de diminuir a complexidade em lidar com tais situações é criar uma camada no meio disso tudo, essa tal chamada é comumente chamada de Anti corruption layer (Camada de anti corrupção).
Entendendo a solução
A ideia é muito simples, em vez da comunicação direta nos exemplos acimas, a gente adiciona um serviço fazendo a intermediação e ponte entre tais dependencias, por exemplo:
Consumir serviços de terceiros
Utilizar bibliotecas de terceiros
Novos sistemas comunicar com sistemas antigos (legados)
Comunicação entre serviços e contextos
Dessa forma caso um serviço de terceiro mude sua versão que gere quebra de compatibilidade, o único ponto de ajuste seria na camada intermediária, os serviços que a utilizam nem vão saber que houve essa quebra (o mesmo vale para atualizações de bibliotecas e demais cenários).
Conclusão
Nesse post vimos como podemos diminuir e minizar os pontos de impactos quando temos nossos serviços acoplamentos altamente com dependências que fogem do controle dos mesmos.
Abraços, até a próxima.