SlideShare uma empresa Scribd logo
1 de 59
Cloud-Native
Applications
A NEW WAY OF DESIGNING
CONTEXTUALIZAÇÃO
#agilidade
#integridade #colaboracao
#disponibilidade
desafios_ERA DIGITAL
O que é preciso
saber para
ARQUITETAR
APLICAÇÕES
na era digital?
THREE LAYER ARCHITECTURE
AVISO IMPORTANTE
NÃO FAÇA ISSO, HOMER!
A “sopa de letrinhas”...
Micro services
CONTEINERS
What’s
I need a...
Cloud-Native Applications
Ref.: http://pivotal.io/cloud-native
CLOUD-NATIVE APPLICATIONS
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.
DevOps
DevOps é a colaboração entre desenvolvedores de software e operações de TI.
Ref.: http://pivotal.io/cloud-native
Continuous Delivery
Ref.: http://pivotal.io/cloud-native
Continuous Delivery é a capacidade de entregar com frequência e menos risco.
Microservices
Ref.: http://pivotal.io/cloud-native
Microservices é uma abordagem arquitetural para desenvolver uma aplicação em
um conjunto de pequenos serviços independentes.
What’s
Microserv...
Monolithic
Architecture Style
AFTER MONOLITHIC ARCH
Ref.:http://www.nginx.com/blog/introduction-to-microservices
Monolithic
Architecture Style
AFTER MONOLITHIC ARCH
Ref.:http://www.nginx.com/blog/introduction-to-microservices
Containers
Ref.: http://pivotal.io/cloud-native
Containers são ambientes isolados, portáteis onde você pode executar aplicativos
junto com todas as bibliotecas e dependências que eles precisam.
Só isso?
Veja bem...
THE TWELVE-FACTOR APP
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
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
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”
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”
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”
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”
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”
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
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
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”
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”
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
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
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
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”
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
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
CLOUD DESIGN PATTERNS
Circuit Breaker Pattern
Gerencie falhasao se
conectar a um serviço ou
recurso remoto.
Ref.: http://msdn.microsoft.com/en-us/library/dn589784.aspx
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
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
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
What’s
CQRS + Event...
CQRS + ES
Patterns
Ref.:http://http://blog.softmemes.com/2016/11/12/using-cqrs-with-event-sourcing
CQRS
Event Sourcing
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
Retry Pattern
Ref.: http://msdn.microsoft.com/en-us/library/dn589788.aspx
Lide com falhas temporáriasao tentar se conectar a
um recurso de rede ou serviço que anteriormente falhou.
DOMAIN-DRIVEN DESIGN
DDD
Domain Driven Design
O que é?
É um conjunto de práticas,
técnicas e princípios de
designpara apoiar projetos de software.
Contexto de aplicação do DDD
DDD
Pilares do DDD
UBIQUITOUS
LANGUAGE
DOMAIN
MODEL
PATTERNS
SERVICES
DOMAIN EVENTS
BOUNDED CONTEXT
ENTITIES
VALUE OBJECTS
LAYERED ARCHITECTURE
(...)
DDD
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
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:
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:
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:
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:
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:
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:
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:
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
Diego Gazotto Dezembro
diegodezembro@gmail.com
http://br.linkedin.com/in/diegodezembro
Obrigado!

Mais conteúdo relacionado

Semelhante a CNA - A New Way of Designing

AAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambAAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambMicrosoft Brasil
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasDevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasAmazon Web Services LATAM
 
Serverless Framework - Creating serverless applications
Serverless Framework - Creating serverless applicationsServerless Framework - Creating serverless applications
Serverless Framework - Creating serverless applicationsWallison Marra
 
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / GoiâniaAzure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / GoiâniaRodrigo Marques Teixeira
 
SATADS 2019 - Desenvolvimento com recursos da AWS
SATADS 2019 - Desenvolvimento com recursos da AWSSATADS 2019 - Desenvolvimento com recursos da AWS
SATADS 2019 - Desenvolvimento com recursos da AWSAnderson Contreira
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4David Ruiz
 
MIT - Estudo de Caso utilizando Cloud & DevOps
MIT - Estudo de Caso utilizando Cloud & DevOps  MIT - Estudo de Caso utilizando Cloud & DevOps
MIT - Estudo de Caso utilizando Cloud & DevOps Caio Candido
 
Desenvolvimento de Aplicações com LightSwitch
Desenvolvimento de Aplicações com LightSwitchDesenvolvimento de Aplicações com LightSwitch
Desenvolvimento de Aplicações com LightSwitchComunidade NetPonto
 
Introdução ao IBM Bluemix - Silvia Matsuora (Solution IT Architect - Ecosyste...
Introdução ao IBM Bluemix - Silvia Matsuora (Solution IT Architect - Ecosyste...Introdução ao IBM Bluemix - Silvia Matsuora (Solution IT Architect - Ecosyste...
Introdução ao IBM Bluemix - Silvia Matsuora (Solution IT Architect - Ecosyste...Victor Cavalcante
 
WSO2 - Portfólio de Produtos, Soluções e Suportes
WSO2 - Portfólio de Produtos, Soluções e SuportesWSO2 - Portfólio de Produtos, Soluções e Suportes
WSO2 - Portfólio de Produtos, Soluções e SuportesEdgar Silva
 
Site estático + Hospedagem Gratuita.pdf
Site estático + Hospedagem Gratuita.pdfSite estático + Hospedagem Gratuita.pdf
Site estático + Hospedagem Gratuita.pdfDanilo Pinotti
 
Palestra de Cloud para Universidade de São Caetano do Sul - USCS
Palestra de Cloud para Universidade de São Caetano do Sul - USCSPalestra de Cloud para Universidade de São Caetano do Sul - USCS
Palestra de Cloud para Universidade de São Caetano do Sul - USCSThiago Viola
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAmazon Web Services LATAM
 
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
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlabJackson F. de A. Mafra
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAmazon Web Services LATAM
 
Melhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernasMelhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernasAmazon Web Services LATAM
 
DevOps - melhores práticas e integração contínua
DevOps - melhores práticas e integração contínuaDevOps - melhores práticas e integração contínua
DevOps - melhores práticas e integração contínuaAmazon Web Services LATAM
 

Semelhante a CNA - A New Way of Designing (20)

AAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambAAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcamb
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasDevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
 
Serverless Framework - Creating serverless applications
Serverless Framework - Creating serverless applicationsServerless Framework - Creating serverless applications
Serverless Framework - Creating serverless applications
 
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / GoiâniaAzure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
 
SATADS 2019 - Desenvolvimento com recursos da AWS
SATADS 2019 - Desenvolvimento com recursos da AWSSATADS 2019 - Desenvolvimento com recursos da AWS
SATADS 2019 - Desenvolvimento com recursos da AWS
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
 
MIT - Estudo de Caso utilizando Cloud & DevOps
MIT - Estudo de Caso utilizando Cloud & DevOps  MIT - Estudo de Caso utilizando Cloud & DevOps
MIT - Estudo de Caso utilizando Cloud & DevOps
 
Desenvolvimento de Aplicações com LightSwitch
Desenvolvimento de Aplicações com LightSwitchDesenvolvimento de Aplicações com LightSwitch
Desenvolvimento de Aplicações com LightSwitch
 
Dynamic Types no C# 4.0
Dynamic Types no C# 4.0Dynamic Types no C# 4.0
Dynamic Types no C# 4.0
 
Introdução ao IBM Bluemix - Silvia Matsuora (Solution IT Architect - Ecosyste...
Introdução ao IBM Bluemix - Silvia Matsuora (Solution IT Architect - Ecosyste...Introdução ao IBM Bluemix - Silvia Matsuora (Solution IT Architect - Ecosyste...
Introdução ao IBM Bluemix - Silvia Matsuora (Solution IT Architect - Ecosyste...
 
WSO2 - Portfólio de Produtos, Soluções e Suportes
WSO2 - Portfólio de Produtos, Soluções e SuportesWSO2 - Portfólio de Produtos, Soluções e Suportes
WSO2 - Portfólio de Produtos, Soluções e Suportes
 
Site estático + Hospedagem Gratuita.pdf
Site estático + Hospedagem Gratuita.pdfSite estático + Hospedagem Gratuita.pdf
Site estático + Hospedagem Gratuita.pdf
 
Palestra de Cloud para Universidade de São Caetano do Sul - USCS
Palestra de Cloud para Universidade de São Caetano do Sul - USCSPalestra de Cloud para Universidade de São Caetano do Sul - USCS
Palestra de Cloud para Universidade de São Caetano do Sul - USCS
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWS
 
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...
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlab
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
 
Asp.net core
Asp.net coreAsp.net core
Asp.net core
 
Melhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernasMelhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernas
 
DevOps - melhores práticas e integração contínua
DevOps - melhores práticas e integração contínuaDevOps - melhores práticas e integração contínua
DevOps - melhores práticas e integração contínua
 

CNA - A New Way of Designing

  • 4. O que é preciso saber para ARQUITETAR APLICAÇÕES na era digital? THREE LAYER ARCHITECTURE AVISO IMPORTANTE NÃO FAÇA ISSO, HOMER!
  • 5. A “sopa de letrinhas”... Micro services CONTEINERS
  • 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
  • 11. Continuous Delivery Ref.: http://pivotal.io/cloud-native Continuous Delivery é a capacidade de entregar com frequência e menos risco.
  • 12. Microservices Ref.: http://pivotal.io/cloud-native Microservices é uma abordagem arquitetural para desenvolver uma aplicação em um conjunto de pequenos serviços independentes.
  • 14. Monolithic Architecture Style AFTER MONOLITHIC ARCH Ref.:http://www.nginx.com/blog/introduction-to-microservices
  • 15. Monolithic Architecture Style AFTER MONOLITHIC ARCH Ref.:http://www.nginx.com/blog/introduction-to-microservices
  • 16. Containers Ref.: http://pivotal.io/cloud-native Containers são ambientes isolados, portáteis onde você pode executar aplicativos junto com todas as bibliotecas e dependências que eles precisam.
  • 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
  • 45. Retry Pattern Ref.: http://msdn.microsoft.com/en-us/library/dn589788.aspx Lide com falhas temporáriasao tentar se conectar a um recurso de rede ou serviço que anteriormente falhou.
  • 47. DDD Domain Driven Design O que é? É um conjunto de práticas, técnicas e princípios de designpara apoiar projetos de software.
  • 49. Pilares do DDD UBIQUITOUS LANGUAGE DOMAIN MODEL PATTERNS SERVICES DOMAIN EVENTS BOUNDED CONTEXT ENTITIES VALUE OBJECTS LAYERED ARCHITECTURE (...) DDD
  • 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