The Code Codex
Tema
← Notas / Arquitetura

nota · lista17 out 2024 · 2 min

Os Doze Fatores da construção de software

Metodologia publicada pelo pessoal do Heroku em 2011 para aplicações que rodam como serviço na nuvem. Mais de uma década depois, continua sendo a base do que esperamos de uma aplicação em container.

#FatorO que dizNa prática
IBase de códigoUma base de código versionada, muitos deploysO mesmo repositório gera dev, homologação e produção
IIDependênciasDeclare e isole as dependênciasgo.mod, pom.xml, package.json; nada instalado “na mão” no servidor
IIIConfiguraçõesGuarde a configuração no ambienteURL do banco e chaves em variáveis de ambiente, não no código
IVServiços de apoioTrate serviços de apoio como recursos anexadosTrocar o banco local por um gerenciado muda só a configuração
VBuild, release, runSepare estritamente os estágiosImagem gerada uma vez e promovida entre ambientes
VIProcessosRode como processos sem estadoSessão no Redis, não na memória da instância
VIIVínculo de portaExporte serviços por uma portaA aplicação sobe o próprio servidor HTTP na porta configurada
VIIIConcorrênciaEscale com mais processosMais réplicas em vez de uma máquina maior
IXDescartabilidadeInicie rápido e desligue com elegânciaTratar SIGTERM, terminar o que está em andamento e sair
XParidade dev/prodAmbientes o mais parecidos possívelO mesmo Postgres em dev (via container) e em produção
XILogsTrate logs como fluxo de eventosEscrever em stdout e deixar a plataforma coletar
XIIProcessos de adminTarefas administrativas como processos pontuaisMigrations rodando como job, com o mesmo código da aplicação

Muitos desses fatores são o que torna uma aplicação boa de rodar em containers.