O documento descreve os 12 princípios do "12 Factor App", um manifesto com boas práticas para construção de aplicações na nuvem de forma automatizada, portável e elástica, com código stateless e infraestrutura para suporte, empacotamento e disponibilização da aplicação com agilidade.
3. The Twelve-Factor App
● Manifesto com série de boas práticas;
● Automação, portabilidade, menos divergências entre ambientes;
● Implantação na nuvem com elasticidade;
● Apps stateless
4. 12 factor app
● Infraestrutura para:
● Suportar;
● Empacotar;
● Disponibilizar a app com alto nível de maturidade e agilidade
5. 1 Base de código
● App deve ter apenas 1 base de código vs implantação em vários ambientes;
Codebase
deploy prod
deploy staging
deploy dev
6. 2 Dependência
● Declare todas as dependências da app;
● Não devemos assumir que nosso container/servidor de app possua algum componente já
instalado
7. 3 Configuração
● Configurar a app sem necessitar atualizar o código;
● As configurações devem considerar o ambiente
● Exemplos são: bancos de dados, cache, filas, credenciais de serviços remotos
8. 4 Serviços de apoio
● Qualquer app que o código precisa para funcionar;
● Não faça distinção entre serviço interno e externo
deploy prod
MySQL
Amazon S3
9. 5 Construa, lance, execute
● Construa: código do repo em um pacote executável;
● Lance: pacote + configuração;
● Execute: inicia a execução do lançamento
code build
Config
release
10. 6 Processos
● A app atende a inicialização de novos processos sem comprometer seu funcionamento;
11. 7 Vínculo de portas
● Exporte serviços por ligação de portas;
15. 11 Logs
● Trate logs como fluxo de eventos coletados dos fluxos de saída de todos os processos em
execução e serviços de apoio;
16. 12 Processos de administração
● Tarefas de administração devem ocorrer sem afetar a solução como um todo;
● Exemplo: migração de dados, execução de scripts de backup