O desacoplamento na arquitetura de software reduz a complexidade.
- por Derek Comartin
- Publicado em Derek Comartin (CodeOpinion)
- Selecionado em
- Architecture
O que acontece quando alguém clica no botão "Fazer Encomenda"?
Para o utilizador final, é bastante simples. É só clicar num botão. Mas num sistema grande, muita coisa pode acontecer por trás deste botão. Precisamos de guardar a encomenda, registar o pagamento, cobrar o cartão de crédito do cliente, reservar o stock, enviar um e-mail de confirmação e talvez registar os pontos de fidelização. Podem também existir análises, recomendações ou outros processos que reagem ao pedido.
Como há muitas coisas a acontecer, também há muitas coisas que podem correr mal.
Costumamos ouvir dizer que o desacoplamento é ótimo. Utilize abstrações. Use injeção de dependência. Substitua as chamadas diretas por mensagens e filas. Utilize arquitetura orientada a eventos e publicação/subscrição.
Todas estas coisas podem ser úteis, mas não são objetivos. Mais importante ainda, não são gratuitas.
Cada passo que dá para além de uma chamada de método em memória acrescenta um novo tipo de complexidade e um novo custo. Pode ganhar capacidade de implementação independente, extensibilidade, escalabilidade ou diferentes características de disponibilidade. Mas está a introduzir algo mais que agora precisa de compreender, operar e depurar.