SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
Construindo aplicações saudáveis
e prontas para envelhecer !
The 12(15) Factors
Roberto Santacroce Martins
12 Factor App
- Foi criada por Adam Wiggins enquanto trabalhava no Heroku por volta de
novembro de 2012
- Crescimento orgânico de uma aplicação pelo tempo
- Altera a dinâmica de colaboração entre os desenvolvedores
- Software As a Service (Software como um Serviço)
- Auxilia você a medir o quanto a sua aplicação está pronta para o Cloud
- Revisitado pela Pivotal em 2016 - Beyond the 12 Factor App (Kevin
Hoffman)
12 Factor App
● ESCALABILIDADE ELÁSTICA
● SISTEMA DE ARQUIVOS EFÊMERO
● STATELESSNESS (SEM ESTADO.)
● TRATE TUDO COMO SERVIÇO
● ESCALE E FAÇA DEPLOY RAPIDAMENTE
A promessa
“Java Servlet API 2.2 includes one new feature so significant it may change the way
Web works. That feature: Web applications.”
“With Web apps, the entire application can be contained in a single archive file and
deployed by placing the file into a specific directory.”
- Javaworld.com, 1999
OS 12 FATORES
● Base de Código
● Dependências
● Configurações
● Serviços de Apoio
● Build, release and run
● Processos
● Port Binding
● Concorrência
● Descartabilidade
● Dev/Prod Semelhantes
● Logs
● Processos de Admin
OS 15 FATORES
Um Repositório, Um App
API First
Gerenciamento de Dependências
Design, Build, Release and
Run
Configurações, Credenciais e
Código
Logs
Descartabilidade
Serviços de Apoio
Dev/Prod Semelhantes
Processos Administrativos
Port Binding
Processos Stateless (Sem
Estado)
Concorrência
Telemetria
Autenticação e autorização
OS 15 FATORES
Um Repositório, Um App
API First
Gerenciamento de Dependências
Design, Build, Release and
Run
Configurações, Credenciais e
Código
Logs
Descartabilidade
Serviços de Apoio
Dev/Prod Semelhantes
Processos Administrativos
Port Binding
Processos Stateless (Sem
Estado)
Concorrência
Telemetria
Autenticação e autorização
Um Repositório, Um App
Repositório de código ÚNICO para MÚLTIPLOS RELEASES IMUTÁVEIS um para
cada ambiente
Múltiplas aplicações com o um único código fonte é geralmente um sinal de que
muitos times estão trabalhando no mesmo código
"organizations which design systems ... are constrained to produce designs which are
copies of the communication structures of these organizations" Conway's Law - Circa
1968
OS 15 FATORES
Um Repositório, Um App
API First
Gerenciamento de Dependências
Design, Build, Release and
Run
Configurações, Credenciais e
Código
Logs
Descartabilidade
Serviços de Apoio
Dev/Prod Semelhantes
Processos Administrativos
Port Binding
Processos Stateless (Sem
Estado)
Concorrência
Telemetria
Autenticação e autorização
API First
Integrações do inferno, os ambiente não tem arco-iris nem tampouco unicornios
Extensão do "Contract First Pattern"
Desenvolvedores mantém uma interface coerente e com o auxílio de Continuous
Integration valida as comunicações
API Mock
Mobile First
OS 15 FATORES
Um Repositório, Um App
API First
Gerenciamento de Dependências
Design, Build, Release and
Run
Configurações, Credenciais e
Código
Logs
Descartabilidade
Serviços de Apoio
Dev/Prod Semelhantes
Processos Administrativos
Port Binding
Processos Stateless (Sem
Estado)
Concorrência
Telemetria
Autenticação e autorização
Gerenciamento de Dependências
Servidor da Mamãe, nele temos o application server, o gerenciador de filas, o
gerenciador de backup, o firewall e a NOSSA APLICAÇÃO
Modelo Enterprise (criança) - Cloud (papai)
Aplicações precisam amadurecer para tirar melhor vantagens do ambiente
Gerenciadores de dependencias explícitos como: Maven, Gradle, NPM, CPAN e outros
...
OS 15 FATORES
Um Repositório, Um App
API First
Gerenciamento de Dependências
Design, Build, Release and
Run
Configurações, Credenciais e
Código
Logs
Descartabilidade
Serviços de Apoio
Dev/Prod Semelhantes
Processos Administrativos
Port Binding
Processos Stateless (Sem
Estado)
Concorrência
Telemetria
Autenticação e autorização
Design, Build, Release and Run
Design: Mapeamento de
Dependências
Build: Compilação e
produção do artefato
Release: Empacota a
aplicação com suas
configurações
Run: Deploy
Modelo de deploy tradicional
Deploy moderno de um aplicação java
Modelo de deploy moderno
OS 15 FATORES
Um Repositório, Um App
API First
Gerenciamento de Dependências
Design, Build, Release and
Run
Configurações, Credenciais e
Código
Logs
Descartabilidade
Serviços de Apoio
Dev/Prod Semelhantes
Processos Administrativos
Port Binding
Processos Stateless (Sem
Estado)
Concorrência
Telemetria
Autenticação e autorização
Configurações, Credenciais e Código
Configurações são parâmetros que MUDAM quando o AMBIENTE muda
Arquivos properties, XML ou YAML nem sempre são a melhor opção
Utilize uma mescla de arquivos de configuração + variáveis de ambiente
Uma boa prática é usar um servidor de configuração capaz de fornecer as
configurações para as aplicações em tempo de execução (Spring Cloud Config, Consul,
etc …)
LINUX
/etc/...
TOMCAT
context.xml
server.xml
Configurações HOJE
WAR
web.xml
AMBIENTE
PATH
DATABASE_URL
TOKEN_ACCESS_CODE
JAVA_OPTS
Configurações 12 Factors
Java Application
OS 15 FATORES
Um Repositório, Um App
API First
Gerenciamento de Dependências
Design, Build, Release and
Run
Configurações, Credenciais e
Código
Logs
Descartabilidade
Serviços de Apoio
Dev/Prod Semelhantes
Processos Administrativos
Port Binding
Processos Stateless (Sem
Estado)
Concorrência
Telemetria
Autenticação e autorização
Logs
Trate logs de forma efêmera, o ambiente é responsável por gerenciar o local de
armazenamento dos logs e a sua rotatividade
Pense em logs como eventos de informações relacionadas a sua aplicação
Utilize ferramentas como agregaçõa de logs como Elasticsearch Logstash Kibana e/ou
Splunk
OS 15 FATORES
Um Repositório, Um App
API First
Gerenciamento de Dependências
Design, Build, Release and
Run
Configurações, Credenciais e
Código
Logs
Descartabilidade
Serviços de Apoio
Dev/Prod Semelhantes
Processos Administrativos
Port Binding
Processos Stateless (Sem
Estado)
Concorrência
Telemetria
Autenticação e autorização
Descartabilidade
Aplicações não devem manter ESTADO em memória
Aplicações podem ir e vir com intervenção ou exceções
Aplicações devem iniciar em segundos e não minutos (aumentar o timeout não resolve
o problema)
Aplicação devem morrer de forma graciosa
Nos permite extender a aplicação rapidamente no ambiente de Cloud
OS 15 FATORES
Um Repositório, Um App
API First
Gerenciamento de Dependências
Design, Build, Release and
Run
Configurações, Credenciais e
Código
Logs
Descartabilidade
Serviços de Apoio
Dev/Prod Semelhantes
Processos Administrativos
Port Binding
Processos Stateless (Sem
Estado)
Concorrência
Telemetria
Autenticação e autorização
Serviços de Apoio (Backing Services)
Todo o serviço que sua
aplicação depende para
funcionar
Outras aplicações devem ser
tratadas como Serviços de
Apoio
Essas dependências devem ser
DECLARATIVAS
Banco de dados, ftp, smtp,
gerenciadores de filas, etc ….
OS 15 FATORES
Um Repositório, Um App
API First
Gerenciamento de Dependências
Design, Build, Release and
Run
Configurações, Credenciais e
Código
Logs
Descartabilidade
Serviços de Apoio
Dev/Prod Semelhantes
Processos Administrativos
Port Binding
Processos Stateless (Sem
Estado)
Concorrência
Telemetria
Autenticação e autorização
Dev/Prod Semelhantes - Every Commit Is a Candidate for Deployment
"Funciona na minha maquina" - Programador desavisado
Manter de forma DECLARATIVA as dependências para construir o ambiente
Tempo: Espaço de tempo muito grande entre o código e o deploy
Pessoas: Deploy e/ou tarefas de provisionamento são feitas por humanos criando um
mar de possíveis erros
Recursos: Manter um ambiente local o mais próximo da produção inclusive com
ferramentas, etc ….
Containerless
O container está morto
Longa vida ao container
SERVLET CONTAINER
APPLICATION SERVER
DOCKER
LXC
OS 15 FATORES
Um Repositório, Um App
API First
Gerenciamento de Dependências
Design, Build, Release and
Run
Configurações, Credenciais e
Código
Logs
Descartabilidade
Serviços de Apoio
Dev/Prod Semelhantes
Processos Administrativos
Port Binding
Processos Stateless (Sem
Estado)
Concorrência
Telemetria
Autenticação e autorização
Processos Administrativos
Migrações de Banco de
Dados
REPL: Ambiente interativo
de programação
Batch scripts
Devem ser separados da
aplicação
OS 15 FATORES
Um Repositório, Um App
API First
Gerenciamento de Dependências
Design, Build, Release and
Run
Configurações, Credenciais e
Código
Logs
Descartabilidade
Serviços de Apoio
Dev/Prod Semelhantes
Processos Administrativos
Port Binding
Processos Stateless (Sem
Estado)
Concorrência
Telemetria
Autenticação e autorização
Port Binding
Platform as a Service
Evite containers que gerencia aplicações enterprise, quando usar sempre manter 1:1
Container:Aplicação
Rode seus serviços anexando PORTAS e use DNS para facilitar a vida dos usuários
Aplicações são Backing Services (Serviços de Apoio)
OS 15 FATORES
Um Repositório, Um App
API First
Gerenciamento de Dependências
Design, Build, Release and
Run
Configurações, Credenciais e
Código
Logs
Descartabilidade
Serviços de Apoio
Dev/Prod Semelhantes
Processos Administrativos
Port Binding
Processos Stateless (Sem
Estado)
Concorrência
Telemetria
Autenticação e autorização
Processos Stateless (Sem Estado)
Não deve depender dos dados em memória para iniciar o seu processamento
Todos os ESTADOS que devem ser persistidos por algum tempo devem estar em
Backing Services/Serviços de Apoio
"Sharing Nothing Pattern": O sistema de arquivos não é um Backing Service e não deve
ser usado para troca de informações. Ele é efêmero.
Data Caching: Não use cache em sua aplicação pode acabar com a sua RAM. Use um
serviço especializado (Backing Service) para a tarefa (Gemfire, Redis, etc ….)
OS 15 FATORES
Um Repositório, Um App
API First
Gerenciamento de Dependências
Design, Build, Release and
Run
Configurações, Credenciais e
Código
Logs
Descartabilidade
Serviços de Apoio
Dev/Prod Semelhantes
Processos Administrativos
Port Binding
Processos Stateless (Sem
Estado)
Concorrência
Telemetria
Autenticação e autorização
Concorrência
Se você aumenta Memória, CPU e/ou RAM você está "Escalando Verticalmente"
Quando você tem muitas instâncias da sua aplicação você está
"Scaling Out" ou "Escalando Horizontalmente"
Se você segue os princípios de Descartabilidade, Stateless e Share-nothing suas
aplicações estão prontas para "Escalar Horizontalmente"
OS 15 FATORES
Um Repositório, Um App
API First
Gerenciamento de Dependências
Design, Build, Release and
Run
Configurações, Credenciais e
Código
Logs
Descartabilidade
Serviços de Apoio
Dev/Prod Semelhantes
Processos Administrativos
Port Binding
Processos Stateless (Sem
Estado)
Concorrência
Telemetria
Autenticação e autorização
Telemetria
Application Performance Monitoring (APM)
New Relic, jvisualvm
Domain-specific telemetry
Health and System Logs
Informações sobre a saúde da aplicação (check-up)
OS 15 FATORES
Um Repositório, Um App
API First
Gerenciamento de Dependências
Design, Build, Release and
Run
Configurações, Credenciais e
Código
Logs
Descartabilidade
Serviços de Apoio
Dev/Prod Semelhantes
Processos Administrativos
Port Binding
Processos Stateless (Sem
Estado)
Concorrência
Telemetria
Autenticação e autorização
Autenticação e Autorização
Pense no inicio, hoje toda aplicação carrega consigo o requisito funcional de segurança
Não deixe a confiança te trair
Faça um vasto uso de criptografia
RBAC - Role-Based access control
Padrões são bem vindos para a implementação (OAUTH2, OpenID, etc …)
RESUMO
1. Desacople os dados. Você não os quer dentro do seu sistema
2. Resiliência - Componentes "fazendo uma coisa e fazendo muito bem" (Do one thing
and do it well)
3. Mantenha a comunicação a um mínimo possível. Você tem que ter acesso aos dados
mesmo se os componentes morrerem
3. Pense em como vai performar com alto volume
4. Segurança - Pense nisso desde o inicio. SÉRIO !
UM POUCO DE HISTÓRIA
The Unix Philosophy foi iniciado com o Ken Thompson
Um conjunto de normas culturais e uma abordagem filosófica para o
- minimalismo computacional: usar o mínimo de software e hardware o possível
"This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together.
Write programs to handle text streams, because that is a universal interface." - Peter H. Salus
The Art of Unix Programming - Eric Steven Raymond
Worse is Better - Richard Gabriel - less functionality is better usability

Mais conteúdo relacionado

Semelhante a Construindo aplicações saudáveis e prontas para envelhecer

The twelve factor app - Princípios e boas práticas aplicados no mundo real
The twelve factor app - Princípios e boas práticas aplicados no mundo realThe twelve factor app - Princípios e boas práticas aplicados no mundo real
The twelve factor app - Princípios e boas práticas aplicados no mundo realJosé Filipe Lyra
 
Introdução ao 12 Factors APP
Introdução ao 12 Factors APPIntrodução ao 12 Factors APP
Introdução ao 12 Factors APPDouglas Alonso
 
Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaPaula Santana
 
Architecture In a Box - Plataforma de Aplicações
Architecture In a Box - Plataforma de AplicaçõesArchitecture In a Box - Plataforma de Aplicações
Architecture In a Box - Plataforma de AplicaçõesMarkus Christen
 
CNA - A New Way of Designing
CNA - A New Way of DesigningCNA - A New Way of Designing
CNA - A New Way of DesigningDiego Dezembro
 
APOS Enterprise Linux - Sistema operacional para point-of-service
APOS Enterprise Linux - Sistema operacional para point-of-serviceAPOS Enterprise Linux - Sistema operacional para point-of-service
APOS Enterprise Linux - Sistema operacional para point-of-serviceGabriel Fernandes
 
OpenShift : TaSafoConf 2012
OpenShift : TaSafoConf 2012OpenShift : TaSafoConf 2012
OpenShift : TaSafoConf 2012Edgar Silva
 
Desenvolvendo com Java Open Source
Desenvolvendo com Java Open SourceDesenvolvendo com Java Open Source
Desenvolvendo com Java Open Sourcearmeniocardoso
 
CakeSP - Specta Platform: CakePHP, Flex, Fake
CakeSP - Specta Platform: CakePHP, Flex, FakeCakeSP - Specta Platform: CakePHP, Flex, Fake
CakeSP - Specta Platform: CakePHP, Flex, FakeSpecta TI
 
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integraçõesPHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integraçõesiMasters
 
Quasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenhoQuasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenhoPatrick Monteiro
 
Trabalhando com ALM na nuvem
Trabalhando com ALM na nuvemTrabalhando com ALM na nuvem
Trabalhando com ALM na nuvemAdriano Bertucci
 
Construindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor AppConstruindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor AppMarcela Godoy Cruz
 
API management: um aliado para construção de APIs
API management: um aliado para construção de APIsAPI management: um aliado para construção de APIs
API management: um aliado para construção de APIsRafael de Paula Souza
 
Apresentação de minha Monografia do curso de Sistema e Mídias Digitais
Apresentação de minha Monografia do curso de Sistema e Mídias DigitaisApresentação de minha Monografia do curso de Sistema e Mídias Digitais
Apresentação de minha Monografia do curso de Sistema e Mídias DigitaisÉdipo Souza
 
Trabalhando com TFS na nuvem (Microsoft Azure). Quais vantagens de migrar o A...
Trabalhando com TFS na nuvem (Microsoft Azure). Quais vantagens de migrar o A...Trabalhando com TFS na nuvem (Microsoft Azure). Quais vantagens de migrar o A...
Trabalhando com TFS na nuvem (Microsoft Azure). Quais vantagens de migrar o A...Marcus Garcia
 
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...tdc-globalcode
 
12 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 201812 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 2018Graziella Bonizi
 
AAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambAAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambMicrosoft Brasil
 

Semelhante a Construindo aplicações saudáveis e prontas para envelhecer (20)

The twelve factor app - Princípios e boas práticas aplicados no mundo real
The twelve factor app - Princípios e boas práticas aplicados no mundo realThe twelve factor app - Princípios e boas práticas aplicados no mundo real
The twelve factor app - Princípios e boas práticas aplicados no mundo real
 
Introdução ao 12 Factors APP
Introdução ao 12 Factors APPIntrodução ao 12 Factors APP
Introdução ao 12 Factors APP
 
Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageria
 
Architecture In a Box - Plataforma de Aplicações
Architecture In a Box - Plataforma de AplicaçõesArchitecture In a Box - Plataforma de Aplicações
Architecture In a Box - Plataforma de Aplicações
 
CNA - A New Way of Designing
CNA - A New Way of DesigningCNA - A New Way of Designing
CNA - A New Way of Designing
 
APOS Enterprise Linux - Sistema operacional para point-of-service
APOS Enterprise Linux - Sistema operacional para point-of-serviceAPOS Enterprise Linux - Sistema operacional para point-of-service
APOS Enterprise Linux - Sistema operacional para point-of-service
 
OpenShift : TaSafoConf 2012
OpenShift : TaSafoConf 2012OpenShift : TaSafoConf 2012
OpenShift : TaSafoConf 2012
 
Desenvolvendo com Java Open Source
Desenvolvendo com Java Open SourceDesenvolvendo com Java Open Source
Desenvolvendo com Java Open Source
 
CakeSP - Specta Platform: CakePHP, Flex, Fake
CakeSP - Specta Platform: CakePHP, Flex, FakeCakeSP - Specta Platform: CakePHP, Flex, Fake
CakeSP - Specta Platform: CakePHP, Flex, Fake
 
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integraçõesPHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
 
Quasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenhoQuasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenho
 
Trabalhando com ALM na nuvem
Trabalhando com ALM na nuvemTrabalhando com ALM na nuvem
Trabalhando com ALM na nuvem
 
Construindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor AppConstruindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor App
 
API management: um aliado para construção de APIs
API management: um aliado para construção de APIsAPI management: um aliado para construção de APIs
API management: um aliado para construção de APIs
 
Apresentação de minha Monografia do curso de Sistema e Mídias Digitais
Apresentação de minha Monografia do curso de Sistema e Mídias DigitaisApresentação de minha Monografia do curso de Sistema e Mídias Digitais
Apresentação de minha Monografia do curso de Sistema e Mídias Digitais
 
PHP nas Nuvens
PHP nas NuvensPHP nas Nuvens
PHP nas Nuvens
 
Trabalhando com TFS na nuvem (Microsoft Azure). Quais vantagens de migrar o A...
Trabalhando com TFS na nuvem (Microsoft Azure). Quais vantagens de migrar o A...Trabalhando com TFS na nuvem (Microsoft Azure). Quais vantagens de migrar o A...
Trabalhando com TFS na nuvem (Microsoft Azure). Quais vantagens de migrar o A...
 
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
 
12 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 201812 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 2018
 
AAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambAAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcamb
 

Construindo aplicações saudáveis e prontas para envelhecer

  • 1. Construindo aplicações saudáveis e prontas para envelhecer ! The 12(15) Factors Roberto Santacroce Martins
  • 2. 12 Factor App - Foi criada por Adam Wiggins enquanto trabalhava no Heroku por volta de novembro de 2012 - Crescimento orgânico de uma aplicação pelo tempo - Altera a dinâmica de colaboração entre os desenvolvedores - Software As a Service (Software como um Serviço) - Auxilia você a medir o quanto a sua aplicação está pronta para o Cloud - Revisitado pela Pivotal em 2016 - Beyond the 12 Factor App (Kevin Hoffman)
  • 3. 12 Factor App ● ESCALABILIDADE ELÁSTICA ● SISTEMA DE ARQUIVOS EFÊMERO ● STATELESSNESS (SEM ESTADO.) ● TRATE TUDO COMO SERVIÇO ● ESCALE E FAÇA DEPLOY RAPIDAMENTE
  • 4. A promessa “Java Servlet API 2.2 includes one new feature so significant it may change the way Web works. That feature: Web applications.” “With Web apps, the entire application can be contained in a single archive file and deployed by placing the file into a specific directory.” - Javaworld.com, 1999
  • 5. OS 12 FATORES ● Base de Código ● Dependências ● Configurações ● Serviços de Apoio ● Build, release and run ● Processos ● Port Binding ● Concorrência ● Descartabilidade ● Dev/Prod Semelhantes ● Logs ● Processos de Admin
  • 6. OS 15 FATORES Um Repositório, Um App API First Gerenciamento de Dependências Design, Build, Release and Run Configurações, Credenciais e Código Logs Descartabilidade Serviços de Apoio Dev/Prod Semelhantes Processos Administrativos Port Binding Processos Stateless (Sem Estado) Concorrência Telemetria Autenticação e autorização
  • 7. OS 15 FATORES Um Repositório, Um App API First Gerenciamento de Dependências Design, Build, Release and Run Configurações, Credenciais e Código Logs Descartabilidade Serviços de Apoio Dev/Prod Semelhantes Processos Administrativos Port Binding Processos Stateless (Sem Estado) Concorrência Telemetria Autenticação e autorização
  • 8. Um Repositório, Um App Repositório de código ÚNICO para MÚLTIPLOS RELEASES IMUTÁVEIS um para cada ambiente Múltiplas aplicações com o um único código fonte é geralmente um sinal de que muitos times estão trabalhando no mesmo código "organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations" Conway's Law - Circa 1968
  • 9. OS 15 FATORES Um Repositório, Um App API First Gerenciamento de Dependências Design, Build, Release and Run Configurações, Credenciais e Código Logs Descartabilidade Serviços de Apoio Dev/Prod Semelhantes Processos Administrativos Port Binding Processos Stateless (Sem Estado) Concorrência Telemetria Autenticação e autorização
  • 10. API First Integrações do inferno, os ambiente não tem arco-iris nem tampouco unicornios Extensão do "Contract First Pattern" Desenvolvedores mantém uma interface coerente e com o auxílio de Continuous Integration valida as comunicações API Mock Mobile First
  • 11. OS 15 FATORES Um Repositório, Um App API First Gerenciamento de Dependências Design, Build, Release and Run Configurações, Credenciais e Código Logs Descartabilidade Serviços de Apoio Dev/Prod Semelhantes Processos Administrativos Port Binding Processos Stateless (Sem Estado) Concorrência Telemetria Autenticação e autorização
  • 12. Gerenciamento de Dependências Servidor da Mamãe, nele temos o application server, o gerenciador de filas, o gerenciador de backup, o firewall e a NOSSA APLICAÇÃO Modelo Enterprise (criança) - Cloud (papai) Aplicações precisam amadurecer para tirar melhor vantagens do ambiente Gerenciadores de dependencias explícitos como: Maven, Gradle, NPM, CPAN e outros ...
  • 13. OS 15 FATORES Um Repositório, Um App API First Gerenciamento de Dependências Design, Build, Release and Run Configurações, Credenciais e Código Logs Descartabilidade Serviços de Apoio Dev/Prod Semelhantes Processos Administrativos Port Binding Processos Stateless (Sem Estado) Concorrência Telemetria Autenticação e autorização
  • 14. Design, Build, Release and Run Design: Mapeamento de Dependências Build: Compilação e produção do artefato Release: Empacota a aplicação com suas configurações Run: Deploy
  • 15. Modelo de deploy tradicional
  • 16. Deploy moderno de um aplicação java
  • 17. Modelo de deploy moderno
  • 18. OS 15 FATORES Um Repositório, Um App API First Gerenciamento de Dependências Design, Build, Release and Run Configurações, Credenciais e Código Logs Descartabilidade Serviços de Apoio Dev/Prod Semelhantes Processos Administrativos Port Binding Processos Stateless (Sem Estado) Concorrência Telemetria Autenticação e autorização
  • 19. Configurações, Credenciais e Código Configurações são parâmetros que MUDAM quando o AMBIENTE muda Arquivos properties, XML ou YAML nem sempre são a melhor opção Utilize uma mescla de arquivos de configuração + variáveis de ambiente Uma boa prática é usar um servidor de configuração capaz de fornecer as configurações para as aplicações em tempo de execução (Spring Cloud Config, Consul, etc …)
  • 22. OS 15 FATORES Um Repositório, Um App API First Gerenciamento de Dependências Design, Build, Release and Run Configurações, Credenciais e Código Logs Descartabilidade Serviços de Apoio Dev/Prod Semelhantes Processos Administrativos Port Binding Processos Stateless (Sem Estado) Concorrência Telemetria Autenticação e autorização
  • 23. Logs Trate logs de forma efêmera, o ambiente é responsável por gerenciar o local de armazenamento dos logs e a sua rotatividade Pense em logs como eventos de informações relacionadas a sua aplicação Utilize ferramentas como agregaçõa de logs como Elasticsearch Logstash Kibana e/ou Splunk
  • 24. OS 15 FATORES Um Repositório, Um App API First Gerenciamento de Dependências Design, Build, Release and Run Configurações, Credenciais e Código Logs Descartabilidade Serviços de Apoio Dev/Prod Semelhantes Processos Administrativos Port Binding Processos Stateless (Sem Estado) Concorrência Telemetria Autenticação e autorização
  • 25. Descartabilidade Aplicações não devem manter ESTADO em memória Aplicações podem ir e vir com intervenção ou exceções Aplicações devem iniciar em segundos e não minutos (aumentar o timeout não resolve o problema) Aplicação devem morrer de forma graciosa Nos permite extender a aplicação rapidamente no ambiente de Cloud
  • 26. OS 15 FATORES Um Repositório, Um App API First Gerenciamento de Dependências Design, Build, Release and Run Configurações, Credenciais e Código Logs Descartabilidade Serviços de Apoio Dev/Prod Semelhantes Processos Administrativos Port Binding Processos Stateless (Sem Estado) Concorrência Telemetria Autenticação e autorização
  • 27. Serviços de Apoio (Backing Services) Todo o serviço que sua aplicação depende para funcionar Outras aplicações devem ser tratadas como Serviços de Apoio Essas dependências devem ser DECLARATIVAS Banco de dados, ftp, smtp, gerenciadores de filas, etc ….
  • 28. OS 15 FATORES Um Repositório, Um App API First Gerenciamento de Dependências Design, Build, Release and Run Configurações, Credenciais e Código Logs Descartabilidade Serviços de Apoio Dev/Prod Semelhantes Processos Administrativos Port Binding Processos Stateless (Sem Estado) Concorrência Telemetria Autenticação e autorização
  • 29. Dev/Prod Semelhantes - Every Commit Is a Candidate for Deployment "Funciona na minha maquina" - Programador desavisado Manter de forma DECLARATIVA as dependências para construir o ambiente Tempo: Espaço de tempo muito grande entre o código e o deploy Pessoas: Deploy e/ou tarefas de provisionamento são feitas por humanos criando um mar de possíveis erros Recursos: Manter um ambiente local o mais próximo da produção inclusive com ferramentas, etc ….
  • 30. Containerless O container está morto Longa vida ao container SERVLET CONTAINER APPLICATION SERVER DOCKER LXC
  • 31.
  • 32.
  • 33.
  • 34. OS 15 FATORES Um Repositório, Um App API First Gerenciamento de Dependências Design, Build, Release and Run Configurações, Credenciais e Código Logs Descartabilidade Serviços de Apoio Dev/Prod Semelhantes Processos Administrativos Port Binding Processos Stateless (Sem Estado) Concorrência Telemetria Autenticação e autorização
  • 35. Processos Administrativos Migrações de Banco de Dados REPL: Ambiente interativo de programação Batch scripts Devem ser separados da aplicação
  • 36. OS 15 FATORES Um Repositório, Um App API First Gerenciamento de Dependências Design, Build, Release and Run Configurações, Credenciais e Código Logs Descartabilidade Serviços de Apoio Dev/Prod Semelhantes Processos Administrativos Port Binding Processos Stateless (Sem Estado) Concorrência Telemetria Autenticação e autorização
  • 37. Port Binding Platform as a Service Evite containers que gerencia aplicações enterprise, quando usar sempre manter 1:1 Container:Aplicação Rode seus serviços anexando PORTAS e use DNS para facilitar a vida dos usuários Aplicações são Backing Services (Serviços de Apoio)
  • 38. OS 15 FATORES Um Repositório, Um App API First Gerenciamento de Dependências Design, Build, Release and Run Configurações, Credenciais e Código Logs Descartabilidade Serviços de Apoio Dev/Prod Semelhantes Processos Administrativos Port Binding Processos Stateless (Sem Estado) Concorrência Telemetria Autenticação e autorização
  • 39. Processos Stateless (Sem Estado) Não deve depender dos dados em memória para iniciar o seu processamento Todos os ESTADOS que devem ser persistidos por algum tempo devem estar em Backing Services/Serviços de Apoio "Sharing Nothing Pattern": O sistema de arquivos não é um Backing Service e não deve ser usado para troca de informações. Ele é efêmero. Data Caching: Não use cache em sua aplicação pode acabar com a sua RAM. Use um serviço especializado (Backing Service) para a tarefa (Gemfire, Redis, etc ….)
  • 40. OS 15 FATORES Um Repositório, Um App API First Gerenciamento de Dependências Design, Build, Release and Run Configurações, Credenciais e Código Logs Descartabilidade Serviços de Apoio Dev/Prod Semelhantes Processos Administrativos Port Binding Processos Stateless (Sem Estado) Concorrência Telemetria Autenticação e autorização
  • 41. Concorrência Se você aumenta Memória, CPU e/ou RAM você está "Escalando Verticalmente" Quando você tem muitas instâncias da sua aplicação você está "Scaling Out" ou "Escalando Horizontalmente" Se você segue os princípios de Descartabilidade, Stateless e Share-nothing suas aplicações estão prontas para "Escalar Horizontalmente"
  • 42. OS 15 FATORES Um Repositório, Um App API First Gerenciamento de Dependências Design, Build, Release and Run Configurações, Credenciais e Código Logs Descartabilidade Serviços de Apoio Dev/Prod Semelhantes Processos Administrativos Port Binding Processos Stateless (Sem Estado) Concorrência Telemetria Autenticação e autorização
  • 43. Telemetria Application Performance Monitoring (APM) New Relic, jvisualvm Domain-specific telemetry Health and System Logs Informações sobre a saúde da aplicação (check-up)
  • 44. OS 15 FATORES Um Repositório, Um App API First Gerenciamento de Dependências Design, Build, Release and Run Configurações, Credenciais e Código Logs Descartabilidade Serviços de Apoio Dev/Prod Semelhantes Processos Administrativos Port Binding Processos Stateless (Sem Estado) Concorrência Telemetria Autenticação e autorização
  • 45. Autenticação e Autorização Pense no inicio, hoje toda aplicação carrega consigo o requisito funcional de segurança Não deixe a confiança te trair Faça um vasto uso de criptografia RBAC - Role-Based access control Padrões são bem vindos para a implementação (OAUTH2, OpenID, etc …)
  • 46. RESUMO 1. Desacople os dados. Você não os quer dentro do seu sistema 2. Resiliência - Componentes "fazendo uma coisa e fazendo muito bem" (Do one thing and do it well) 3. Mantenha a comunicação a um mínimo possível. Você tem que ter acesso aos dados mesmo se os componentes morrerem 3. Pense em como vai performar com alto volume 4. Segurança - Pense nisso desde o inicio. SÉRIO !
  • 47. UM POUCO DE HISTÓRIA The Unix Philosophy foi iniciado com o Ken Thompson Um conjunto de normas culturais e uma abordagem filosófica para o - minimalismo computacional: usar o mínimo de software e hardware o possível "This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface." - Peter H. Salus The Art of Unix Programming - Eric Steven Raymond Worse is Better - Richard Gabriel - less functionality is better usability