O Que é um Deployment Unit? A Coisa Que Você de Fato Shipa
Um deployment unit é o menor artifact autocontido que você deploya, escala e faz rollback como uma única coisa.
Escolhas de arquitetura no fim se resumem ao que você shipa como uma peça só. Um monolith tem um grande deployment unit; um sistema de microservices tem muitos pequenos. O tamanho e as fronteiras dos seus deployment units determinam sua cadência de release, seu blast radius e o formato das suas pipelines, então vale nomear o conceito diretamente.
A unidade de deploy
Um deployment unit é o que é liberado junto: uma container image, uma serverless function, um serviço empacotado. Ele é deployado, versionado, escalado e revertido como um só. Suas fronteiras decidem o que precisa mudar junto e o que pode mudar de forma independente.
O tamanho é um trade-off
- Units maiores: pipelines mais simples, mas releases grosseiras e blast radius maior.
- Units menores: releases granulares e independentes, mas mais pipelines.
- A fronteira determina o que deploya junto.
- Ela molda com que frequência e quão seguramente você pode shipar.
Blast radius
Um deploy ruim afeta todo o seu unit. Um unit pequeno limita o dano a um serviço; um grande arrisca a aplicação inteira. Dimensionar units deliberadamente é em parte uma decisão sobre quanto um único deploy que falhou tem permissão de quebrar.
Uma pipeline por unit
Cada deployment unit tipicamente tem sua própria pipeline de build-test-deploy. O número e o tamanho dos seus units, portanto, definem diretamente quantas pipelines você mantém e quão independentes suas releases podem ser.
Imutável e versionado
Um bom deployment unit é imutável e versionado: uma dada versão é os mesmos bytes em todo lugar, então você pode promovê-lo entre ambientes e fazer rollback para uma versão anterior com confiança. Este é o princípio build-once, deploy-many aplicado ao unit.
Provisionamento por unit
Muitos units pequenos significam muitos deploys frequentes e os build jobs por trás deles. Runners quentes e de provisionamento rápido (como o Latchkey oferece) evitam que essa maior frequência de deploy fique gargalada no tempo de fila de build.
Principais conclusões
- Um deployment unit é o menor artifact que você deploya e faz rollback como um só.
- Seu tamanho troca simplicidade de pipeline por granularidade de release e blast radius.
- Units imutáveis e versionados viabilizam promoção entre ambientes e rollback limpo.