- A tese é que a maioria dos principais desafios do desenvolvimento de software surge não dentro do código, mas na fronteira (Boundary) onde código encontra código e sistema encontra sistema
- Fronteira = ponto em que diferentes interesses, responsabilidades e contextos se encontram
- Quase toda ação no desenvolvimento, como separar funções, modularizar e adotar microsserviços, é um ato de criar fronteiras
- Ironia: criamos fronteiras para lidar com a complexidade, mas a própria fronteira se torna uma nova fonte de complexidade
Fronteiras que surgem no código
- Fronteira chamador-callee: ambiguidade de contrato, como retornar
null vs lançar exceção
- Fronteira de interface: lei do vazamento de abstração — a complexidade escondida acaba rompendo a fronteira em algum momento
- Fronteira de dependência: APIs e bibliotecas externas podem mudar sem aviso
- Fronteira de transformação: assim como no descompasso objeto-relacional, sempre que se cruza uma fronteira há distorção ou perda de informação
- Fronteira de confiança: limite entre dados validados e não validados → vulnerabilidades de segurança, como receber webhooks sem assinatura
- Fronteira entre design e implementação: o acúmulo de perda de informação em cada etapa, de requisitos → design → implementação → operação
Fronteiras físicas
- Fronteira de ordem: o estado pode mudar entre pontos assíncronos; em sistemas distribuídos isso é ainda mais grave
- Fronteira de escala: ao ultrapassar um ponto crítico, ocorre uma mudança qualitativa, não apenas quantitativa
- Fronteira de ambiente: acontecem casos como “na minha máquina funciona”
- Fronteira de infraestrutura: ao separar serviços, não é possível garantir atomicidade
Fronteiras que surgem entre pessoas
- Fronteira organizacional: Lei de Conway — a estrutura organizacional determina a estrutura do sistema. Quando equipes são reorganizadas, as fronteiras do código e da organização se desencontram
- Fronteira de comunicação: como num telefone sem fio, a intenção se deforma a cada transmissão dos requisitos, e o conhecimento tácito às vezes nem chega a ser transmitido
- Fronteira usuário-desenvolvedor: fronteiras criadas por desenvolvedores para segurança podem virar barreiras incômodas para usuários
Como governar as fronteiras
- Reconheça as fronteiras ocultas: preste atenção a acoplamentos que não aparecem no código, como dois serviços compartilhando a mesma tabela no banco de dados
- Padrões não são a resposta: padrões são apenas “soluções eficazes sob determinadas condições”; não devem ser aplicados cegamente
- Três perguntas a fazer diante de uma fronteira:
- O que está atravessando essa fronteira?
- O que acontece se essa fronteira quebrar?
- Quem é responsável por administrar essa fronteira?
- Não traçar uma fronteira também é uma escolha: manter o monólito, evitar separações precipitadas etc.
- As fronteiras evoluem: separam-se, depois se juntam, depois se dividem de novo → é preciso revisá-las de forma consciente e regular
Ainda não há comentários.