I. O documento discute os princípios do Twelve-Factor App para construção de aplicações SaaS escaláveis e portáveis. II. Doze princípios são apresentados, incluindo código versionado, dependências declaradas, configurações como variáveis de ambiente e logs como fluxos de eventos. III. Seguindo esses princípios, aplicações podem ser desenvolvidas para fácil implantação contínua e escalabilidade.
4. Maior foco no negócio
Escalabilidade para demandas crescentes
Usuário final sem preocupação com infraestrutura
Utilizado em qualquer lugar e em diferentes plataformas
Cloud Computing
7. Fácil de implementar gradualmente
Aplicação sempre atualizada, compatível e segura
O provedor cuida de tudo
Acesso de qualquer lugar em diferentes plataformas
SaaS
20. Gerenciador de dependências
II. Dependências
Dependências declaradas e isoladas
Manifesto de
declaração
Dependências declaradas e isoladas
Ferramenta de
isolamento
21. Declaração e isolamento de dependência sempre juntos
II. Dependências
Recursos do Sistema devem ser vendorizados
34. IV. Serviços de Apoio
“Trate serviços de apoio como recursos anexados.”
35. Qualquer serviço que a aplicação consuma como parte
de sua operação (Gerenciamento de dados, cache, filas)
IV. Serviços de Apoio
Serviço de
apoio
Recurso Configurações
40. V. Build, Release, Run
“Separe estritamente os estágios de construção e execução.”
41. Para que a base de código se transforme em versão:
V. Build, Release, Run
Build + Release Run+
42. Commit + Dependências = Build
V. Build, Release, Run
Build + Configurações do Deploy = Release
(Não se esqueça do nome da versão!)
Release + ambiente de execução + start( ) = Run!
43. V. Build, Release, Run
Releases nunca voltam ao estágio de Build!
Códigos alterados geram novas Releases
Ferramentas de Deploy revertem Releases (Rollback!)
Novos códigos no Deploy iniciam uma nova Build
46. Processos de stateless e shared-nothing
VI. Processos
Dados consistentes devem ser armazenados em
serviços de apoio
Escalabilidade horizontal
47. Memórias e sistemas de arquivos apenas para
cache de transição única
VI. Processos
Sessões persistentes – NÃÃÃÃO!
(Use um datastore: memcached, redis...)
59. X. Paridade entre Desenvolvimento
E Produção
“Mantenha o desenvolvimento, homologação e produção
os mais similares possível.”
60. X. Paridade entre Desenvolvimento e Produção
( 1 ) Tempo: Dev trabalhando no deploy
local a muito tempo...
( 2 ) Pessoal: O Dev finalizou o código, mas está esperando
o time de deploy
( 3 ) Ferramentas: O Dev utiliza OSX, Nginx e SQLite.
Enquanto isso em produção temos Linux, Apache e MySQL
61. X. Paridade entre Desenvolvimento e Produção
Implantação contínua:
“Garante entrega ao usuário final sem gargalo
no ambiente de homologação”
62. X. Paridade entre Desenvolvimento e Produção
( 1 ) Tempo: Dev escreve o código e realiza o deploy em
poucas horas
( 2 ) Pessoal: O Dev finalizou o código, é envolvido com o
deploy e acompanha o comportamento em produção
( 3 ) Ferramentas: Mantenha desenvolvimento e produção
o mais similar possível!
63. X. Paridade entre Desenvolvimento e Produção
O desenvolvedor não deve usar ferramentas
adaptadoras
Deploys com mesmas versões de cada
serviço de apoio
65. XI. Logs
“Fluxos de eventos agregados e ordenados por tempo,
coletados dos fluxos de saída de todos os processos em
execução dos serviços de apoio”
70. XII. Processos Administrativos
Processos Pontuais:
Migração de uma base de dados,
Execução arbitrária de códigos...
Execução em ambiente idêntico a outros processos
Utilizar declaração e isolamento de dependências
71. E ao final...
Estamos prontos para escalar
Possuímos uma ótima portabilidade
Seguimos boas práticas
Temos uma aplicação robusta