Cloud-Native Applications nada mais é que uma abordagem para construção e execução de aplicações que exploram ao máximo as vantagens provenientes do modelo de Cloud Computing.
9. CNA
Cloud-Native Applications
O que é?
É uma abordagem para construção e
execução de aplicações que
exploram ao máximo as
vantagens provenientes do modelo de
Cloud Computing.
10. DevOps
DevOps é a colaboração entre desenvolvedores de software e operações de TI.
Ref.: http://pivotal.io/cloud-native
20. 12
The Twelve-Factor App
O que é?
É uma metodologia para
construir softwares-como-serviço
(SaaS), concebida pelos profissionais da
Heroku.
Ref.: http://12factor.net/pt_br
21. Os “12 + 3 Mandamentos”...
•Uma base de código com rastreamento utilizando controle de revisão, muitos deploysI. Base de Código
•Declare e isole as dependênciasII. Dependências
•Armazene as configurações no ambienteIII. Configurações
•Trate os serviços de apoio, como recursos ligadosIV. Serviços de Apoio
•Separe estritamente os builds e execute em estágiosV. Build, release, run
•Execute a aplicação como um ou mais processos que não armazenam estadoVI. Processos
•Exporte serviços por ligação de portaVII. Vínculo de porta
•Dimensione por um modelo de processoVIII. Concorrência
•Maximize a robustez com inicialização e desligamento rápidoIX. Descartabilidade
•Mantenha o desenvolvimento, teste, produção o mais semelhante possívelX. Dev/prod semelhantes
•Trate logs como fluxo de eventosXI. Logs
•Execute tarefas de administração/gerenciamento como processos pontuaisXII. Processos de Admin
•Inicie o desenvolvimento no nível da APIXIII. API First
•Monitore em tempo realXIV. Telemetria
•Proteja a aplicaçãoXV. Segurança
12
+3
Ref.: http://www.cdta.org/sites/default/files/awards/beyond_the_12-factor_app_pivotal.pdf
Kevin Hoffman
22. Os “12 + 3 Mandamentos”...
I. Base de Código
II. Dependências
III. Configurações
IV. Serviços de Apoio
V. Build, release, run
VI. Processos
VII. Vínculo de porta
VIII. Concorrência
IX. Descartabilidade
X. Dev/prod semelhantes
XI. Logs
XII. Processos de Admin
XIII. API First
XIV. Telemetria
XV. Segurança
12
+3
Ref.: http://www.cdta.org/sites/default/files/awards/beyond_the_12-factor_app_pivotal.pdf
Tenha uma única base de código
por aplicação!
“SIMPLIFIQUE A AUTOMAÇÃO”
23. Os “12 + 3 Mandamentos”...
I. Base de Código
II. Dependências
III. Configurações
IV. Serviços de Apoio
V. Build, release, run
VI. Processos
VII. Vínculo de porta
VIII. Concorrência
IX. Descartabilidade
X. Dev/prod semelhantes
XI. Logs
XII. Processos de Admin
XIII. API First
XIV. Telemetria
XV. Segurança
12
+3
Ref.: http://www.cdta.org/sites/default/files/awards/beyond_the_12-factor_app_pivotal.pdf
Declare e isole dependências
através de manifestos!
“SIMPLIFIQUE O SETUP”
24. Os “12 + 3 Mandamentos”...
I. Base de Código
II. Dependências
III. Configurações
IV. Serviços de Apoio
V. Build, release, run
VI. Processos
VII. Vínculo de porta
VIII. Concorrência
IX. Descartabilidade
X. Dev/prod semelhantes
XI. Logs
XII. Processos de Admin
XIII. API First
XIV. Telemetria
XV. Segurança
12
+3
Ref.: http://www.cdta.org/sites/default/files/awards/beyond_the_12-factor_app_pivotal.pdf
Armazene configurações em
variáveis de ambiente!
“AUMENTE A RESILIÊNCIA”
25. Os “12 + 3 Mandamentos”...
I. Base de Código
II. Dependências
III. Configurações
IV. Serviços de Apoio
V. Build, release, run
VI. Processos
VII. Vínculo de porta
VIII. Concorrência
IX. Descartabilidade
X. Dev/prod semelhantes
XI. Logs
XII. Processos de Admin
XIII. API First
XIV. Telemetria
XV. Segurança
12
+3
Ref.: http://www.cdta.org/sites/default/files/awards/beyond_the_12-factor_app_pivotal.pdf
Trate qualquer serviço
consumido via rede como
recurso passível de troca sem
mudanças no código!
“FLEXIBILIZE AS DEPENDÊNCIAS”
26. Os “12 + 3 Mandamentos”...
I. Base de Código
II. Dependências
III. Configurações
IV. Serviços de Apoio
V. Build, release, run
VI. Processos
VII. Vínculo de porta
VIII. Concorrência
IX. Descartabilidade
X. Dev/prod semelhantes
XI. Logs
XII. Processos de Admin
XIII. API First
XIV. Telemetria
XV. Segurança
12
+3
Ref.: http://www.cdta.org/sites/default/files/awards/beyond_the_12-factor_app_pivotal.pdf
Separe estritamente os estágios
de construção e execução!
“IMPOSSIBILITE ALTERAÇÕES EM
TEMPO DE EXECUÇÃO”
27. Os “12 + 3 Mandamentos”...
I. Base de Código
II. Dependências
III. Configurações
IV. Serviços de Apoio
V. Build, release, run
VI. Processos
VII. Vínculo de porta
VIII. Concorrência
IX. Descartabilidade
X. Dev/prod semelhantes
XI. Logs
XII. Processos de Admin
XIII. API First
XIV. Telemetria
XV. Segurança
12
+3
Execute aplicações como
processos stateless e
share-nothing!
“ACABE COM AS AFINIDADES”
Ref.: http://www.cdta.org/sites/default/files/awards/beyond_the_12-factor_app_pivotal.pdf
STATELESS STATEFUL
28. Os “12 + 3 Mandamentos”...
I. Base de Código
II. Dependências
III. Configurações
IV. Serviços de Apoio
V. Build, release, run
VI. Processos
VII. Vínculo de porta
VIII. Concorrência
IX. Descartabilidade
X. Dev/prod semelhantes
XI. Logs
XII. Processos de Admin
XIII. API First
XIV. Telemetria
XV. Segurança
12
+3
Ref.: http://www.cdta.org/sites/default/files/awards/beyond_the_12-factor_app_pivotal.pdf
Exporte um serviço através da
vinculação a uma porta e escute
as requisições!
“ACABE COM AS DEPENDENCIAS
DE APP E WEB SERVERS”
JAVA WEB APP
EMBEDDED
PORT BIND
29. Os “12 + 3 Mandamentos”...
I. Base de Código
II. Dependências
III. Configurações
IV. Serviços de Apoio
V. Build, release, run
VI. Processos
VII. Vínculo de porta
VIII. Concorrência
IX. Descartabilidade
X. Dev/prod semelhantes
XI. Logs
XII. Processos de Admin
XIII. API First
XIV. Telemetria
XV. Segurança
12
+3
Ref.: http://www.cdta.org/sites/default/files/awards/beyond_the_12-factor_app_pivotal.pdf
Escale através do modelo de
processos!
“FACILITE A ESCALABILIDADE
HORIZONTAL”
30. Os “12 + 3 Mandamentos”...
I. Base de Código
II. Dependências
III. Configurações
IV. Serviços de Apoio
V. Build, release, run
VI. Processos
VII. Vínculo de porta
VIII. Concorrência
IX. Descartabilidade
X. Dev/prod semelhantes
XI. Logs
XII. Processos de Admin
XIII. API First
XIV. Telemetria
XV. Segurança
12
+3
Ref.: http://www.cdta.org/sites/default/files/awards/beyond_the_12-factor_app_pivotal.pdf
Persiga a inicialização rápida e
desligamento gracioso!
“AUMENTE A ROBUSTEZ:
CRASH-ONLY DESIGN”
31. Os “12 + 3 Mandamentos”...
I. Base de Código
II. Dependências
III. Configurações
IV. Serviços de Apoio
V. Build, release, run
VI. Processos
VII. Vínculo de porta
VIII. Concorrência
IX. Descartabilidade
X. Dev/prod semelhantes
XI. Logs
XII. Processos de Admin
XIII. API First
XIV. Telemetria
XV. Segurança
12
+3
Ref.: http://www.cdta.org/sites/default/files/awards/beyond_the_12-factor_app_pivotal.pdf
Mantenha desenvolvimento,
homologação e produção
semelhantes!
“ACABE COM A EXPRESSÃO:
IT WORKS ON MY MACHINE”
DEV PROHOM
32. Os “12 + 3 Mandamentos”...
I. Base de Código
II. Dependências
III. Configurações
IV. Serviços de Apoio
V. Build, release, run
VI. Processos
VII. Vínculo de porta
VIII. Concorrência
IX. Descartabilidade
X. Dev/prod semelhantes
XI. Logs
XII. Processos de Admin
XIII. API First
XIV. Telemetria
XV. Segurança
12
+3
Ref.: http://www.cdta.org/sites/default/files/awards/beyond_the_12-factor_app_pivotal.pdf
Trate logs como fluxo de eventos
sem se preocupar com
roteamento ou armazenamento!
“FOQUE NO CORE BUSINESS”
WEB APP
LINUX SYSLOG
33. Os “12 + 3 Mandamentos”...
I. Base de Código
II. Dependências
III. Configurações
IV. Serviços de Apoio
V. Build, release, run
VI. Processos
VII. Vínculo de porta
VIII. Concorrência
IX. Descartabilidade
X. Dev/prod semelhantes
XI. Logs
XII. Processos de Admin
XIII. API First
XIV. Telemetria
XV. Segurança
12
+3
Ref.: http://www.cdta.org/sites/default/files/awards/beyond_the_12-factor_app_pivotal.pdf
Rode tarefas administrativos em
processos pontuais!
“AUTOMATIZE AS TAREFAS
ADMINISTRATIVAS E VERIFIQUE
REAL NECESSIDADE”
COMMANDS
34. Os “12 + 3 Mandamentos”...
I. Base de Código
II. Dependências
III. Configurações
IV. Serviços de Apoio
V. Build, release, run
VI. Processos
VII. Vínculo de porta
VIII. Concorrência
IX. Descartabilidade
X. Dev/prod semelhantes
XI. Logs
XII. Processos de Admin
XIII. API First
XIV. Telemetria
XV. Segurança
12
+3
Ref.: http://www.cdta.org/sites/default/files/awards/beyond_the_12-factor_app_pivotal.pdf
Arquitete pensando em
desacoplamento através de API!
“FAVOREÇA O ONBOARDING”
35. Os “12 + 3 Mandamentos”...
I. Base de Código
II. Dependências
III. Configurações
IV. Serviços de Apoio
V. Build, release, run
VI. Processos
VII. Vínculo de porta
VIII. Concorrência
IX. Descartabilidade
X. Dev/prod semelhantes
XI. Logs
XII. Processos de Admin
XIII. API First
XIV. Telemetria
XV. Segurança
12
+3
Ref.: http://www.cdta.org/sites/default/files/awards/beyond_the_12-factor_app_pivotal.pdf
Monitore em tempo real!
“ACOMPANHE O SEU NEGÓCIO”
WEB APP Application Performance
Monitoring (APM)
Health and System Logs
Domain-Specific Telemetry
36. I. Base de Código
II. Dependências
III. Configurações
IV. Serviços de Apoio
V. Build, release, run
VI. Processos
VII. Vínculo de porta
VIII. Concorrência
IX. Descartabilidade
X. Dev/prod semelhantes
XI. Logs
XII. Processos de Admin
XIII. API First
XIV. Telemetria
XV. Segurança
Os “12 + 3 Mandamentos”...
12
+3
Ref.: http://www.cdta.org/sites/default/files/awards/beyond_the_12-factor_app_pivotal.pdf
Reforce segurança através de
autenticação, autorização e
auditoria (AAA)!
“PROTEJA O SEU NEGÓCIO”
MOB APP STS
SDK
38. Circuit Breaker Pattern
Gerencie falhasao se
conectar a um serviço ou
recurso remoto.
Ref.: http://msdn.microsoft.com/en-us/library/dn589784.aspx
39. Compensating Transaction Pattern
Desfaça o trabalho realizadopor uma série de etapas se uma
ou mais etapas falharem.
Ref.: http://msdn.microsoft.com/en-us/library/dn589804.aspx
40. CQRS Pattern
Segregue operaçõesque leem dados de operações que
atualizam dados usando interfaces separadas. Esse padrão pode
maximizar o desempenho, a escalabilidade e a segurança.
Command and Query Responsibility Segregation
Ref.: http://msdn.microsoft.com/en-us/library/dn568103.aspx
41. Event Sourcing Pattern
Utilize um mecanismo para gravar os eventos que
descrevem ações tomadas em um domínio para que seja possível
materializar objetos de domínio.
Ref.: http://msdn.microsoft.com/en-us/library/dn589792.aspx
44. Materialized View Pattern
Gere views pré-populadasquando os dados são
formatados de uma forma que não favorece as operações de
consulta necessárias.
Ref.: http://msdn.microsoft.com/en-us/library/dn589782.aspx
50. Pilares do DDD
DOMAIN
MODEL
PATTERNS
SERVICES
DOMAIN EVENTS
BOUNDED CONTEXT
ENTITIES
VALUE OBJECTS
LAYERED ARCHITECTURE
(...)
CONTEXT MAP
SHARED KERNEL
CUSTOMER / SUPLIER
CONFORMIST
ANTICORRUPTION LAYER
SEPARATE WAYS
OPEN / HOST SERVICE
PUBLISHED LANGUAGE
51. Pilares do DDD
NS
EXT
CONTEXT MAP
SHARED KERNEL
CUSTOMER / SUPLIER
CONFORMIST
ANTICORRUPTION LAYER
SEPARATE WAYS
OPEN / HOST SERVICE
PUBLISHED LANGUAGE
Compartilhamento de um
subconjunto do modelo
de domínio entre duas
equipes:
52. NS
Pilares do DDD
EXT
CONTEXT MAP
SHARED KERNEL
CUSTOMER / SUPLIER
CONFORMIST
ANTICORRUPTION LAYER
SEPARATE WAYS
OPEN / HOST SERVICE
PUBLISHED LANGUAGE
Relação cliente /
fornecedor entre duas
equipes:
53. NS
Pilares do DDD
EXT
CONTEXT MAP
SHARED KERNEL
CUSTOMER / SUPLIER
CONFORMIST
ANTICORRUPTION LAYER
SEPARATE WAYS
OPEN / HOST SERVICE
PUBLISHED LANGUAGE
Relação cliente /
fornecedor entre duas
equipes com propagação
de modelo:
54. NS
Pilares do DDD
EXT
CONTEXT MAP
SHARED KERNEL
CUSTOMER / SUPLIER
CONFORMIST
ANTICORRUPTION LAYER
SEPARATE WAYS
OPEN / HOST SERVICE
PUBLISHED LANGUAGE
Isolamento de modelos
por tradução:
55. NS
Pilares do DDD
EXT
CONTEXT MAP
SHARED KERNEL
CUSTOMER / SUPLIER
CONFORMIST
ANTICORRUPTION LAYER
SEPARATE WAYS
OPEN / HOST SERVICE
PUBLISHED LANGUAGE
Conectividade zero entre
contextos distintos:
56. NS
Pilares do DDD
EXT
CONTEXT MAP
SHARED KERNEL
CUSTOMER / SUPLIER
CONFORMIST
ANTICORRUPTION LAYER
SEPARATE WAYS
OPEN / HOST SERVICE
PUBLISHED LANGUAGE
Exposição de
funcionalidades através
de serviços para outros
sistemas clientes:
57. NS
Pilares do DDD
EXT
CONTEXT MAP
SHARED KERNEL
CUSTOMER / SUPLIER
CONFORMIST
ANTICORRUPTION LAYER
SEPARATE WAYS
OPEN / HOST SERVICE
PUBLISHED LANGUAGE
Publicação de uma
linguagem comum entre
contextos para expor
funcionalidades:
58. Bounded Context Pattern
Ref.: http://martinfowler.com/bliki/BoundedContext.html
Bounded Contexté um padrão central no Domain-Driven Design que
auxilia na divisão de contextos e explicita as inter-relações.
MICROSERVICE
MICROSERVICE