SlideShare uma empresa Scribd logo
1 de 27
Twelve Factor Apps: uma visão geral
• Concebida dentro da Heroku
• Software as a Service (SaaS)
• Metodologia agnóstica para construção de aplicações robustas
• Princípios com recomendações muito úteis para aplicações em nuvem
• Link: https://12factor.net/pt_br/
1. Codebase (base de código)
Uma base de código
(repositório) num
controlador de versões,
múltiplos deploys
1. Codebase (base de código)
• Versionamento de código é essencial
• Codebase = Base de Código = repositório de código
de uma única aplicação
• O uso de um monorepo é uma violação deste
princípio
• A importância do uso de branchs
• Git, GitHub e Azure Repos (Azure DevOps) são
soluções populares
2. Dependências
Declare e isole explicitamente
as dependências
2. Dependências
• Devemos ter a capacidade de restaurar
dependências de um projeto com facilidade (uso
de arquivos declarando as mesmas)
• Pare de copiar pacotes, bibliotecas para um
projeto!
• Reaproveitamento de código
• NuGet, npm
• Possibilidade de uso de repositórios privados
3. Configurações
Armazene as configurações no
ambiente
3. Configurações
• Priorizar o uso de variáveis de ambiente
• Evitar ao extremo arquivos de
configuração
• Azure App Configuration, Azure Key
Vault
4. Backing Services (serviços de apoio)
Trate serviços de apoio
como recursos anexados
4. Backing Services (serviços de apoio)
• É extremamente importante termos a capacidade
de se trocar um serviço por outro (BD,
mensageria…) sem que isto implique em grandes
mudanças de código
• Configurações definem o uso de um serviço ou
outro
• Importância do princípio de Inversão de Controle,
com uso de Injeção de Dependências
5. Build, release, run
Separe estritamente os
estágios de build, release e
execução
5. Build, release, run
• Geração de artefatos, packages e
imagens no Build com uma solução de
automação
• Deployment automatizado
• Gerenciamento de configurações por
ambiente
• Azure DevOps, GitHub Actions
6. Process (Stateless)
Execute a aplicação como um
ou mais processos que não
armazenam estado
6. Process (Stateless)
• Priorizar o desenvolvimento stateless
viabilizando a escalabilidade da aplicação
• Uso de serviços de apoio para armazenar
estado
• Redis é uma das principais alternativas para
cache distribuído
7. Port binding
Exporte serviços via vínculo de
portas
7. Port binding
• Aplicações auto-contidas (self-contained)
• Exposição das portas acessíveis
• Outras portas além de HTTP
• Evitar lock-in com soluções de hospedagem
8. Concorrência
Escalabilidade horizontal de aplicações
8. Concorrência
• Prioridade para implementações stateless
• Inúmeras instâncias
• Worker Processes para processamentos de longa duração
• Uso de serviços de apoio
9. Descartabilidade (Disposability)
Maximize robustez com
inicialização rápida e
desligamento gracioso
9. Descartabilidade (Disposability)
• Containers, Pods com as instâncias de uma
aplicação são estruturas efêmeras
• Parada graciosa de uma aplicação, sem
interrupção abrupta
• Código otimizado para execução de uma
aplicação
• Uso de estratégias como Blue Green,
Release Canary
10. Paridade entre ambientes
Mantenha o desenvolvimento,
homologação e produção o
mais similares possível
10. Paridade entre ambientes
• Evitar surpresas devido a diferenças
entre ambientes
• Containers, Docker Compose e
Charts do Helm podem ser de
grande valia para emular ambientes
em nuvem ou que requerem uma
infraestrutura robusta
11. Logs
Trate logs como fluxos de
eventos
11. Logs
• Observabilidade
• Telemetria, métricas, dashboards de monitoramento
• É comum que o tratamento de logs seja delegado a
um serviço externo (arquivos na maioria dos casos
são inviáveis hoje)
• Application Insights constitui um excelente exemplo
12. Admin Processes (Processos Administrativos)
Rode tarefas de
administração/gestão em
processos pontuais
12. Admin Processes (Processos Administrativos)
• Scripts de tarefas pontuais, Migrations
• Necessidade de documentação
• Versionamento do código
• É comum o uso de soluções de script como
PowerShell e Bash
• Azure Automation é uma alternativa para gerenciar
ações deste tipo
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021

Mais conteúdo relacionado

Mais procurados

Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com JenkinsAécio Pires
 
Kubernetes - do Pod ao Deployment Automatizado - DevOps Professionals - Janei...
Kubernetes - do Pod ao Deployment Automatizado - DevOps Professionals - Janei...Kubernetes - do Pod ao Deployment Automatizado - DevOps Professionals - Janei...
Kubernetes - do Pod ao Deployment Automatizado - DevOps Professionals - Janei...Renato Groff
 
Apresentação sobre Zabbix na iDEZ 2012
Apresentação sobre Zabbix na iDEZ 2012Apresentação sobre Zabbix na iDEZ 2012
Apresentação sobre Zabbix na iDEZ 2012Aécio Pires
 
Salada mista com: Zabbix, Puppet e Docker
Salada mista com: Zabbix, Puppet e DockerSalada mista com: Zabbix, Puppet e Docker
Salada mista com: Zabbix, Puppet e DockerAécio Pires
 
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020Renato Groff
 
Arquitetura de microsserviços
Arquitetura  de  microsserviçosArquitetura  de  microsserviços
Arquitetura de microsserviçosRaphael Almeida
 
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...Renato Groff
 
Integração do Zabbix com Grafana
Integração do Zabbix com GrafanaIntegração do Zabbix com Grafana
Integração do Zabbix com GrafanaAécio Pires
 
Introdução a Microservices com Node.JS
Introdução  a Microservices com Node.JSIntrodução  a Microservices com Node.JS
Introdução a Microservices com Node.JSEduardo Nunes Pereira
 
Slide Live Conhecendo o Kubernetes
Slide Live Conhecendo o KubernetesSlide Live Conhecendo o Kubernetes
Slide Live Conhecendo o KubernetesElton Fonseca
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosThiago Pereira
 
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010Rodrigo Kono
 
DevCommerce Conference 2016: SecDevOps – Testes contínuos de segurança em apl...
DevCommerce Conference 2016: SecDevOps – Testes contínuos de segurança em apl...DevCommerce Conference 2016: SecDevOps – Testes contínuos de segurança em apl...
DevCommerce Conference 2016: SecDevOps – Testes contínuos de segurança em apl...iMasters
 
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...Renato Groff
 
Zabbix, Zenoss ou Padora: quem vai ganhar esta briga?
Zabbix, Zenoss ou Padora: quem vai ganhar esta briga?Zabbix, Zenoss ou Padora: quem vai ganhar esta briga?
Zabbix, Zenoss ou Padora: quem vai ganhar esta briga?Aécio Pires
 

Mais procurados (20)

Mulesoft Meetup Latam Summit Brazil
Mulesoft Meetup Latam Summit BrazilMulesoft Meetup Latam Summit Brazil
Mulesoft Meetup Latam Summit Brazil
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com Jenkins
 
Kubernetes - do Pod ao Deployment Automatizado - DevOps Professionals - Janei...
Kubernetes - do Pod ao Deployment Automatizado - DevOps Professionals - Janei...Kubernetes - do Pod ao Deployment Automatizado - DevOps Professionals - Janei...
Kubernetes - do Pod ao Deployment Automatizado - DevOps Professionals - Janei...
 
Apresentação sobre Zabbix na iDEZ 2012
Apresentação sobre Zabbix na iDEZ 2012Apresentação sobre Zabbix na iDEZ 2012
Apresentação sobre Zabbix na iDEZ 2012
 
Salada mista com: Zabbix, Puppet e Docker
Salada mista com: Zabbix, Puppet e DockerSalada mista com: Zabbix, Puppet e Docker
Salada mista com: Zabbix, Puppet e Docker
 
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
 
Webpack
Webpack Webpack
Webpack
 
Arquitetura de microsserviços
Arquitetura  de  microsserviçosArquitetura  de  microsserviços
Arquitetura de microsserviços
 
Mule Meetup Cache Redis
Mule Meetup Cache RedisMule Meetup Cache Redis
Mule Meetup Cache Redis
 
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
 
Integração do Zabbix com Grafana
Integração do Zabbix com GrafanaIntegração do Zabbix com Grafana
Integração do Zabbix com Grafana
 
Introdução a Microservices com Node.JS
Introdução  a Microservices com Node.JSIntrodução  a Microservices com Node.JS
Introdução a Microservices com Node.JS
 
Slide Live Conhecendo o Kubernetes
Slide Live Conhecendo o KubernetesSlide Live Conhecendo o Kubernetes
Slide Live Conhecendo o Kubernetes
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviços
 
Do Monolítico aos Micro Serviços no Azure
Do Monolítico aos Micro Serviços no AzureDo Monolítico aos Micro Serviços no Azure
Do Monolítico aos Micro Serviços no Azure
 
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
 
Ecossistema symfony
Ecossistema symfonyEcossistema symfony
Ecossistema symfony
 
DevCommerce Conference 2016: SecDevOps – Testes contínuos de segurança em apl...
DevCommerce Conference 2016: SecDevOps – Testes contínuos de segurança em apl...DevCommerce Conference 2016: SecDevOps – Testes contínuos de segurança em apl...
DevCommerce Conference 2016: SecDevOps – Testes contínuos de segurança em apl...
 
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
 
Zabbix, Zenoss ou Padora: quem vai ganhar esta briga?
Zabbix, Zenoss ou Padora: quem vai ganhar esta briga?Zabbix, Zenoss ou Padora: quem vai ganhar esta briga?
Zabbix, Zenoss ou Padora: quem vai ganhar esta briga?
 

Semelhante a Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021

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
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourcetdc-globalcode
 
Integrações e o ecossistema Java - Fabric8 ao Resgate!
Integrações e o ecossistema Java - Fabric8 ao Resgate!Integrações e o ecossistema Java - Fabric8 ao Resgate!
Integrações e o ecossistema Java - Fabric8 ao Resgate!Leandro Gomes
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Renato Groff
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edtedbrunoaalves
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 
Microserviços - Cristiano dos Santos Diedrich - Tchelinux Bento Gonçalves 2017
Microserviços - Cristiano dos Santos Diedrich - Tchelinux Bento Gonçalves 2017Microserviços - Cristiano dos Santos Diedrich - Tchelinux Bento Gonçalves 2017
Microserviços - Cristiano dos Santos Diedrich - Tchelinux Bento Gonçalves 2017Tchelinux
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Renato Groff
 
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...Renato Groffe
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122Bruno Souza
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Renato Groff
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Renato Groff
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Renato Groff
 
Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018Renato Groff
 
The twelve factor apps and openruko
The twelve factor apps and openrukoThe twelve factor apps and openruko
The twelve factor apps and openrukoÉverton Ribeiro
 

Semelhante a Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021 (20)

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
 
Preparando sua arquitetura para microservicos
Preparando sua arquitetura para microservicosPreparando sua arquitetura para microservicos
Preparando sua arquitetura para microservicos
 
12 Factor Apps
12 Factor Apps12 Factor Apps
12 Factor Apps
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSource
 
Integrações e o ecossistema Java - Fabric8 ao Resgate!
Integrações e o ecossistema Java - Fabric8 ao Resgate!Integrações e o ecossistema Java - Fabric8 ao Resgate!
Integrações e o ecossistema Java - Fabric8 ao Resgate!
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edted
 
Fundamentos em Containers
Fundamentos em ContainersFundamentos em Containers
Fundamentos em Containers
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
Web tools pt-br
Web tools pt-brWeb tools pt-br
Web tools pt-br
 
Microserviços - Cristiano dos Santos Diedrich - Tchelinux Bento Gonçalves 2017
Microserviços - Cristiano dos Santos Diedrich - Tchelinux Bento Gonçalves 2017Microserviços - Cristiano dos Santos Diedrich - Tchelinux Bento Gonçalves 2017
Microserviços - Cristiano dos Santos Diedrich - Tchelinux Bento Gonçalves 2017
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
 
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
 
Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018
 
The twelve factor apps and openruko
The twelve factor apps and openrukoThe twelve factor apps and openruko
The twelve factor apps and openruko
 

Mais de Renato Groffe

Kubernetes e Escalabilidade: processando milhares/milhões de acessos simultân...
Kubernetes e Escalabilidade: processando milhares/milhões de acessos simultân...Kubernetes e Escalabilidade: processando milhares/milhões de acessos simultân...
Kubernetes e Escalabilidade: processando milhares/milhões de acessos simultân...Renato Groffe
 
.NET 7: principais novidades no Desenvolvimento Back-End | Visual Studio Summ...
.NET 7: principais novidades no Desenvolvimento Back-End | Visual Studio Summ....NET 7: principais novidades no Desenvolvimento Back-End | Visual Studio Summ...
.NET 7: principais novidades no Desenvolvimento Back-End | Visual Studio Summ...Renato Groffe
 
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...Renato Groffe
 
Dapr + Microservices: descomplicando a implementação de Aplicações Distribuíd...
Dapr + Microservices: descomplicando a implementação de Aplicações Distribuíd...Dapr + Microservices: descomplicando a implementação de Aplicações Distribuíd...
Dapr + Microservices: descomplicando a implementação de Aplicações Distribuíd...Renato Groffe
 
Kubernetes e Escalabilidade: processando milhares/milhões de acessos simultân...
Kubernetes e Escalabilidade: processando milhares/milhões de acessos simultân...Kubernetes e Escalabilidade: processando milhares/milhões de acessos simultân...
Kubernetes e Escalabilidade: processando milhares/milhões de acessos simultân...Renato Groffe
 
kind + Kubernetes: ambientes locais, testes de integração | DevOps Experience...
kind + Kubernetes: ambientes locais, testes de integração | DevOps Experience...kind + Kubernetes: ambientes locais, testes de integração | DevOps Experience...
kind + Kubernetes: ambientes locais, testes de integração | DevOps Experience...Renato Groffe
 
.NET 7: novidades no Desenvolvimento Back-End | Agrotools - Novembro-2022
.NET 7: novidades no Desenvolvimento Back-End | Agrotools - Novembro-2022.NET 7: novidades no Desenvolvimento Back-End | Agrotools - Novembro-2022
.NET 7: novidades no Desenvolvimento Back-End | Agrotools - Novembro-2022Renato Groffe
 
OpenTelemetry + Jaeger + .NET: Monitoramento e Tracing Distribuído em Aplicaç...
OpenTelemetry + Jaeger + .NET: Monitoramento e Tracing Distribuído em Aplicaç...OpenTelemetry + Jaeger + .NET: Monitoramento e Tracing Distribuído em Aplicaç...
OpenTelemetry + Jaeger + .NET: Monitoramento e Tracing Distribuído em Aplicaç...Renato Groffe
 
.NET 7: novidades no Desenvolvimento Back-End | Protech Solutions - Agosto-2022
.NET 7: novidades no Desenvolvimento Back-End | Protech Solutions - Agosto-2022.NET 7: novidades no Desenvolvimento Back-End | Protech Solutions - Agosto-2022
.NET 7: novidades no Desenvolvimento Back-End | Protech Solutions - Agosto-2022Renato Groffe
 
Pipeline as Code + Azure DevOps: automações com o Azure Pipelines | DevOps Ex...
Pipeline as Code + Azure DevOps: automações com o Azure Pipelines | DevOps Ex...Pipeline as Code + Azure DevOps: automações com o Azure Pipelines | DevOps Ex...
Pipeline as Code + Azure DevOps: automações com o Azure Pipelines | DevOps Ex...Renato Groffe
 
Kubernetes e Escalabilidade | Paraná Banco - Julho-2022
Kubernetes e Escalabilidade | Paraná Banco - Julho-2022Kubernetes e Escalabilidade | Paraná Banco - Julho-2022
Kubernetes e Escalabilidade | Paraná Banco - Julho-2022Renato Groffe
 
Kubernetes + KEDA: escalando aplicações de forma descomplicada | Cloud Confer...
Kubernetes + KEDA: escalando aplicações de forma descomplicada | Cloud Confer...Kubernetes + KEDA: escalando aplicações de forma descomplicada | Cloud Confer...
Kubernetes + KEDA: escalando aplicações de forma descomplicada | Cloud Confer...Renato Groffe
 
.NET: Passado, Presente, Futuro, Mercado de Trabalho… | Generation Brazil
.NET: Passado, Presente, Futuro, Mercado de Trabalho… | Generation Brazil.NET: Passado, Presente, Futuro, Mercado de Trabalho… | Generation Brazil
.NET: Passado, Presente, Futuro, Mercado de Trabalho… | Generation BrazilRenato Groffe
 
Azure Container Apps: visão geral e primeiros passos | Azure Weekend 2022 - P...
Azure Container Apps: visão geral e primeiros passos | Azure Weekend 2022 - P...Azure Container Apps: visão geral e primeiros passos | Azure Weekend 2022 - P...
Azure Container Apps: visão geral e primeiros passos | Azure Weekend 2022 - P...Renato Groffe
 
Tracing Distribuído em Aplicações com OpenTelemetry + Jaeger | Cloud Conferen...
Tracing Distribuído em Aplicações com OpenTelemetry + Jaeger | Cloud Conferen...Tracing Distribuído em Aplicações com OpenTelemetry + Jaeger | Cloud Conferen...
Tracing Distribuído em Aplicações com OpenTelemetry + Jaeger | Cloud Conferen...Renato Groffe
 
Tracing Distribuído em Aplicações com OpenTelemetry + Jaeger | DevOps Experie...
Tracing Distribuído em Aplicações com OpenTelemetry + Jaeger | DevOps Experie...Tracing Distribuído em Aplicações com OpenTelemetry + Jaeger | DevOps Experie...
Tracing Distribuído em Aplicações com OpenTelemetry + Jaeger | DevOps Experie...Renato Groffe
 
Aplicações Resilientes e Chaos Engineering em .NET com Polly + Simmy | Festiv...
Aplicações Resilientes e Chaos Engineering em .NET com Polly + Simmy | Festiv...Aplicações Resilientes e Chaos Engineering em .NET com Polly + Simmy | Festiv...
Aplicações Resilientes e Chaos Engineering em .NET com Polly + Simmy | Festiv...Renato Groffe
 
Kubernetes + KEDA: escalando aplicações de forma descomplicada | DevOps Exper...
Kubernetes + KEDA: escalando aplicações de forma descomplicada | DevOps Exper...Kubernetes + KEDA: escalando aplicações de forma descomplicada | DevOps Exper...
Kubernetes + KEDA: escalando aplicações de forma descomplicada | DevOps Exper...Renato Groffe
 
Nuvem em 2022: primeiros passos, Azure, tecnologias, carreira | SENAI Santo A...
Nuvem em 2022: primeiros passos, Azure, tecnologias, carreira | SENAI Santo A...Nuvem em 2022: primeiros passos, Azure, tecnologias, carreira | SENAI Santo A...
Nuvem em 2022: primeiros passos, Azure, tecnologias, carreira | SENAI Santo A...Renato Groffe
 
.NET + Microsserviços: alternativas open source para descomplicar a vida | TD...
.NET + Microsserviços: alternativas open source para descomplicar a vida | TD....NET + Microsserviços: alternativas open source para descomplicar a vida | TD...
.NET + Microsserviços: alternativas open source para descomplicar a vida | TD...Renato Groffe
 

Mais de Renato Groffe (20)

Kubernetes e Escalabilidade: processando milhares/milhões de acessos simultân...
Kubernetes e Escalabilidade: processando milhares/milhões de acessos simultân...Kubernetes e Escalabilidade: processando milhares/milhões de acessos simultân...
Kubernetes e Escalabilidade: processando milhares/milhões de acessos simultân...
 
.NET 7: principais novidades no Desenvolvimento Back-End | Visual Studio Summ...
.NET 7: principais novidades no Desenvolvimento Back-End | Visual Studio Summ....NET 7: principais novidades no Desenvolvimento Back-End | Visual Studio Summ...
.NET 7: principais novidades no Desenvolvimento Back-End | Visual Studio Summ...
 
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
 
Dapr + Microservices: descomplicando a implementação de Aplicações Distribuíd...
Dapr + Microservices: descomplicando a implementação de Aplicações Distribuíd...Dapr + Microservices: descomplicando a implementação de Aplicações Distribuíd...
Dapr + Microservices: descomplicando a implementação de Aplicações Distribuíd...
 
Kubernetes e Escalabilidade: processando milhares/milhões de acessos simultân...
Kubernetes e Escalabilidade: processando milhares/milhões de acessos simultân...Kubernetes e Escalabilidade: processando milhares/milhões de acessos simultân...
Kubernetes e Escalabilidade: processando milhares/milhões de acessos simultân...
 
kind + Kubernetes: ambientes locais, testes de integração | DevOps Experience...
kind + Kubernetes: ambientes locais, testes de integração | DevOps Experience...kind + Kubernetes: ambientes locais, testes de integração | DevOps Experience...
kind + Kubernetes: ambientes locais, testes de integração | DevOps Experience...
 
.NET 7: novidades no Desenvolvimento Back-End | Agrotools - Novembro-2022
.NET 7: novidades no Desenvolvimento Back-End | Agrotools - Novembro-2022.NET 7: novidades no Desenvolvimento Back-End | Agrotools - Novembro-2022
.NET 7: novidades no Desenvolvimento Back-End | Agrotools - Novembro-2022
 
OpenTelemetry + Jaeger + .NET: Monitoramento e Tracing Distribuído em Aplicaç...
OpenTelemetry + Jaeger + .NET: Monitoramento e Tracing Distribuído em Aplicaç...OpenTelemetry + Jaeger + .NET: Monitoramento e Tracing Distribuído em Aplicaç...
OpenTelemetry + Jaeger + .NET: Monitoramento e Tracing Distribuído em Aplicaç...
 
.NET 7: novidades no Desenvolvimento Back-End | Protech Solutions - Agosto-2022
.NET 7: novidades no Desenvolvimento Back-End | Protech Solutions - Agosto-2022.NET 7: novidades no Desenvolvimento Back-End | Protech Solutions - Agosto-2022
.NET 7: novidades no Desenvolvimento Back-End | Protech Solutions - Agosto-2022
 
Pipeline as Code + Azure DevOps: automações com o Azure Pipelines | DevOps Ex...
Pipeline as Code + Azure DevOps: automações com o Azure Pipelines | DevOps Ex...Pipeline as Code + Azure DevOps: automações com o Azure Pipelines | DevOps Ex...
Pipeline as Code + Azure DevOps: automações com o Azure Pipelines | DevOps Ex...
 
Kubernetes e Escalabilidade | Paraná Banco - Julho-2022
Kubernetes e Escalabilidade | Paraná Banco - Julho-2022Kubernetes e Escalabilidade | Paraná Banco - Julho-2022
Kubernetes e Escalabilidade | Paraná Banco - Julho-2022
 
Kubernetes + KEDA: escalando aplicações de forma descomplicada | Cloud Confer...
Kubernetes + KEDA: escalando aplicações de forma descomplicada | Cloud Confer...Kubernetes + KEDA: escalando aplicações de forma descomplicada | Cloud Confer...
Kubernetes + KEDA: escalando aplicações de forma descomplicada | Cloud Confer...
 
.NET: Passado, Presente, Futuro, Mercado de Trabalho… | Generation Brazil
.NET: Passado, Presente, Futuro, Mercado de Trabalho… | Generation Brazil.NET: Passado, Presente, Futuro, Mercado de Trabalho… | Generation Brazil
.NET: Passado, Presente, Futuro, Mercado de Trabalho… | Generation Brazil
 
Azure Container Apps: visão geral e primeiros passos | Azure Weekend 2022 - P...
Azure Container Apps: visão geral e primeiros passos | Azure Weekend 2022 - P...Azure Container Apps: visão geral e primeiros passos | Azure Weekend 2022 - P...
Azure Container Apps: visão geral e primeiros passos | Azure Weekend 2022 - P...
 
Tracing Distribuído em Aplicações com OpenTelemetry + Jaeger | Cloud Conferen...
Tracing Distribuído em Aplicações com OpenTelemetry + Jaeger | Cloud Conferen...Tracing Distribuído em Aplicações com OpenTelemetry + Jaeger | Cloud Conferen...
Tracing Distribuído em Aplicações com OpenTelemetry + Jaeger | Cloud Conferen...
 
Tracing Distribuído em Aplicações com OpenTelemetry + Jaeger | DevOps Experie...
Tracing Distribuído em Aplicações com OpenTelemetry + Jaeger | DevOps Experie...Tracing Distribuído em Aplicações com OpenTelemetry + Jaeger | DevOps Experie...
Tracing Distribuído em Aplicações com OpenTelemetry + Jaeger | DevOps Experie...
 
Aplicações Resilientes e Chaos Engineering em .NET com Polly + Simmy | Festiv...
Aplicações Resilientes e Chaos Engineering em .NET com Polly + Simmy | Festiv...Aplicações Resilientes e Chaos Engineering em .NET com Polly + Simmy | Festiv...
Aplicações Resilientes e Chaos Engineering em .NET com Polly + Simmy | Festiv...
 
Kubernetes + KEDA: escalando aplicações de forma descomplicada | DevOps Exper...
Kubernetes + KEDA: escalando aplicações de forma descomplicada | DevOps Exper...Kubernetes + KEDA: escalando aplicações de forma descomplicada | DevOps Exper...
Kubernetes + KEDA: escalando aplicações de forma descomplicada | DevOps Exper...
 
Nuvem em 2022: primeiros passos, Azure, tecnologias, carreira | SENAI Santo A...
Nuvem em 2022: primeiros passos, Azure, tecnologias, carreira | SENAI Santo A...Nuvem em 2022: primeiros passos, Azure, tecnologias, carreira | SENAI Santo A...
Nuvem em 2022: primeiros passos, Azure, tecnologias, carreira | SENAI Santo A...
 
.NET + Microsserviços: alternativas open source para descomplicar a vida | TD...
.NET + Microsserviços: alternativas open source para descomplicar a vida | TD....NET + Microsserviços: alternativas open source para descomplicar a vida | TD...
.NET + Microsserviços: alternativas open source para descomplicar a vida | TD...
 

Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021

  • 1.
  • 2. Twelve Factor Apps: uma visão geral • Concebida dentro da Heroku • Software as a Service (SaaS) • Metodologia agnóstica para construção de aplicações robustas • Princípios com recomendações muito úteis para aplicações em nuvem • Link: https://12factor.net/pt_br/
  • 3. 1. Codebase (base de código) Uma base de código (repositório) num controlador de versões, múltiplos deploys
  • 4. 1. Codebase (base de código) • Versionamento de código é essencial • Codebase = Base de Código = repositório de código de uma única aplicação • O uso de um monorepo é uma violação deste princípio • A importância do uso de branchs • Git, GitHub e Azure Repos (Azure DevOps) são soluções populares
  • 5. 2. Dependências Declare e isole explicitamente as dependências
  • 6. 2. Dependências • Devemos ter a capacidade de restaurar dependências de um projeto com facilidade (uso de arquivos declarando as mesmas) • Pare de copiar pacotes, bibliotecas para um projeto! • Reaproveitamento de código • NuGet, npm • Possibilidade de uso de repositórios privados
  • 7. 3. Configurações Armazene as configurações no ambiente
  • 8. 3. Configurações • Priorizar o uso de variáveis de ambiente • Evitar ao extremo arquivos de configuração • Azure App Configuration, Azure Key Vault
  • 9. 4. Backing Services (serviços de apoio) Trate serviços de apoio como recursos anexados
  • 10. 4. Backing Services (serviços de apoio) • É extremamente importante termos a capacidade de se trocar um serviço por outro (BD, mensageria…) sem que isto implique em grandes mudanças de código • Configurações definem o uso de um serviço ou outro • Importância do princípio de Inversão de Controle, com uso de Injeção de Dependências
  • 11. 5. Build, release, run Separe estritamente os estágios de build, release e execução
  • 12. 5. Build, release, run • Geração de artefatos, packages e imagens no Build com uma solução de automação • Deployment automatizado • Gerenciamento de configurações por ambiente • Azure DevOps, GitHub Actions
  • 13. 6. Process (Stateless) Execute a aplicação como um ou mais processos que não armazenam estado
  • 14. 6. Process (Stateless) • Priorizar o desenvolvimento stateless viabilizando a escalabilidade da aplicação • Uso de serviços de apoio para armazenar estado • Redis é uma das principais alternativas para cache distribuído
  • 15. 7. Port binding Exporte serviços via vínculo de portas
  • 16. 7. Port binding • Aplicações auto-contidas (self-contained) • Exposição das portas acessíveis • Outras portas além de HTTP • Evitar lock-in com soluções de hospedagem
  • 18. 8. Concorrência • Prioridade para implementações stateless • Inúmeras instâncias • Worker Processes para processamentos de longa duração • Uso de serviços de apoio
  • 19. 9. Descartabilidade (Disposability) Maximize robustez com inicialização rápida e desligamento gracioso
  • 20. 9. Descartabilidade (Disposability) • Containers, Pods com as instâncias de uma aplicação são estruturas efêmeras • Parada graciosa de uma aplicação, sem interrupção abrupta • Código otimizado para execução de uma aplicação • Uso de estratégias como Blue Green, Release Canary
  • 21. 10. Paridade entre ambientes Mantenha o desenvolvimento, homologação e produção o mais similares possível
  • 22. 10. Paridade entre ambientes • Evitar surpresas devido a diferenças entre ambientes • Containers, Docker Compose e Charts do Helm podem ser de grande valia para emular ambientes em nuvem ou que requerem uma infraestrutura robusta
  • 23. 11. Logs Trate logs como fluxos de eventos
  • 24. 11. Logs • Observabilidade • Telemetria, métricas, dashboards de monitoramento • É comum que o tratamento de logs seja delegado a um serviço externo (arquivos na maioria dos casos são inviáveis hoje) • Application Insights constitui um excelente exemplo
  • 25. 12. Admin Processes (Processos Administrativos) Rode tarefas de administração/gestão em processos pontuais
  • 26. 12. Admin Processes (Processos Administrativos) • Scripts de tarefas pontuais, Migrations • Necessidade de documentação • Versionamento do código • É comum o uso de soluções de script como PowerShell e Bash • Azure Automation é uma alternativa para gerenciar ações deste tipo