SlideShare uma empresa Scribd logo
1 de 29
Algumas iniciativas nossas…
• Lives gratuitas no .NET SP (Canal .NET, Coding Night, Azure na Prática):
https://www.meetup.com/dotnet-Sao-Paulo/
Agenda
• Twelve Factor Apps: uma visão geral
• Tecnologias open source e serviços do Microsoft Azure
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, Charts
do Helm e mesmo serviços em
nuvem (no próprio Microsoft Azure)
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 e Prometheus constituem
excelentes exemplos
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 | TDC Connections 2021

Mais conteúdo relacionado

Mais procurados

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
 
Dapper - Developers-SP - Junho/2017
Dapper - Developers-SP - Junho/2017Dapper - Developers-SP - Junho/2017
Dapper - Developers-SP - Junho/2017Renato Groff
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...Ricardo Martinelli de Oliveira
 
Arquitetura de microsserviços
Arquitetura  de  microsserviçosArquitetura  de  microsserviços
Arquitetura de microsserviçosRaphael Almeida
 
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
 
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
 
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
 
Nuvem em 2021: primeiros passos, Azure, tecnologias, carreira - UniFOA | Abri...
Nuvem em 2021: primeiros passos, Azure, tecnologias, carreira - UniFOA | Abri...Nuvem em 2021: primeiros passos, Azure, tecnologias, carreira - UniFOA | Abri...
Nuvem em 2021: primeiros passos, Azure, tecnologias, carreira - UniFOA | Abri...Renato Groffe
 
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
 
Adotando o Wordpress
Adotando o WordpressAdotando o Wordpress
Adotando o WordpressFilipe Boldo
 
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...iMasters
 
TCC 1 - Um método para o desenvolvimento de software baseado em microserviços
TCC 1 - Um método para o desenvolvimento de software baseado em microserviçosTCC 1 - Um método para o desenvolvimento de software baseado em microserviços
TCC 1 - Um método para o desenvolvimento de software baseado em microserviçosThiago Pereira
 
Gerenciamento e automatização de configuração de uma infraestrutura com Puppet
Gerenciamento e automatização de configuração de uma infraestrutura com PuppetGerenciamento e automatização de configuração de uma infraestrutura com Puppet
Gerenciamento e automatização de configuração de uma infraestrutura com PuppetAécio Pires
 
Microsoft Reactor Desenvolvimento serverless com azure function
Microsoft Reactor Desenvolvimento serverless com azure functionMicrosoft Reactor Desenvolvimento serverless com azure function
Microsoft Reactor Desenvolvimento serverless com azure functionWalter Coan
 

Mais procurados (20)

Mulesoft Meetup Latam Summit Brazil
Mulesoft Meetup Latam Summit BrazilMulesoft Meetup Latam Summit Brazil
Mulesoft Meetup Latam Summit Brazil
 
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
 
Dapper - Developers-SP - Junho/2017
Dapper - Developers-SP - Junho/2017Dapper - Developers-SP - Junho/2017
Dapper - Developers-SP - Junho/2017
 
Mule Meetup Cache Redis
Mule Meetup Cache RedisMule Meetup Cache Redis
Mule Meetup Cache Redis
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
 
Arquitetura de microsserviços
Arquitetura  de  microsserviçosArquitetura  de  microsserviços
Arquitetura de microsserviços
 
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
 
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...
 
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
 
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
 
Nuvem em 2021: primeiros passos, Azure, tecnologias, carreira - UniFOA | Abri...
Nuvem em 2021: primeiros passos, Azure, tecnologias, carreira - UniFOA | Abri...Nuvem em 2021: primeiros passos, Azure, tecnologias, carreira - UniFOA | Abri...
Nuvem em 2021: primeiros passos, Azure, tecnologias, carreira - UniFOA | Abri...
 
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...
 
Ecossistema symfony
Ecossistema symfonyEcossistema symfony
Ecossistema symfony
 
Adotando o Wordpress
Adotando o WordpressAdotando o Wordpress
Adotando o Wordpress
 
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
 
TCC 1 - Um método para o desenvolvimento de software baseado em microserviços
TCC 1 - Um método para o desenvolvimento de software baseado em microserviçosTCC 1 - Um método para o desenvolvimento de software baseado em microserviços
TCC 1 - Um método para o desenvolvimento de software baseado em microserviços
 
Gerenciamento e automatização de configuração de uma infraestrutura com Puppet
Gerenciamento e automatização de configuração de uma infraestrutura com PuppetGerenciamento e automatização de configuração de uma infraestrutura com Puppet
Gerenciamento e automatização de configuração de uma infraestrutura com Puppet
 
Microsoft Reactor Desenvolvimento serverless com azure function
Microsoft Reactor Desenvolvimento serverless com azure functionMicrosoft Reactor Desenvolvimento serverless com azure function
Microsoft Reactor Desenvolvimento serverless com azure function
 
Docker para devs .NET
Docker para devs .NETDocker para devs .NET
Docker para devs .NET
 

Semelhante a Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 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
 
Azure + Desenvolvimento Web | Minicurso Gratuito - Azure na Prática
Azure + Desenvolvimento Web | Minicurso Gratuito - Azure na PráticaAzure + Desenvolvimento Web | Minicurso Gratuito - Azure na Prática
Azure + Desenvolvimento Web | Minicurso Gratuito - Azure na PráticaRenato Groff
 
Docker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na PráticaDocker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na PráticaRenato Groff
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftGraziella Bonizi
 
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
 
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
 
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
 
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...Renato Groff
 
Ferramenta de Cloud Computer para apoio à Engenharia de Software
Ferramenta de Cloud Computer para apoio à Engenharia de SoftwareFerramenta de Cloud Computer para apoio à Engenharia de Software
Ferramenta de Cloud Computer para apoio à Engenharia de SoftwareDanilo Sousa
 
Cloud Solutions com o Microsoft Azure - TDC Online Especial BH
Cloud Solutions com o Microsoft Azure - TDC Online Especial BHCloud Solutions com o Microsoft Azure - TDC Online Especial BH
Cloud Solutions com o Microsoft Azure - TDC Online Especial BHRenato Groff
 
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
 
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Renato Groff
 
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Renato Groff
 
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020Sobrevoando os serviços do Azure | TDC São Paulo Online 2020
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020Renato Groff
 
DevOps + Kubernetes: orquestração e deployment automatizado de containers - O...
DevOps + Kubernetes: orquestração e deployment automatizado de containers - O...DevOps + Kubernetes: orquestração e deployment automatizado de containers - O...
DevOps + Kubernetes: orquestração e deployment automatizado de containers - O...Renato Groff
 
Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019
Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019
Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019Renato Groff
 
Opções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e ArquiteturasOpções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e ArquiteturasJose Papo, MSc
 
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...Renato Groff
 

Semelhante a Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 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
 
Azure + Desenvolvimento Web | Minicurso Gratuito - Azure na Prática
Azure + Desenvolvimento Web | Minicurso Gratuito - Azure na PráticaAzure + Desenvolvimento Web | Minicurso Gratuito - Azure na Prática
Azure + Desenvolvimento Web | Minicurso Gratuito - Azure na Prática
 
Docker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na PráticaDocker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na Prática
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack Microsoft
 
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
 
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
 
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
 
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
 
Ferramenta de Cloud Computer para apoio à Engenharia de Software
Ferramenta de Cloud Computer para apoio à Engenharia de SoftwareFerramenta de Cloud Computer para apoio à Engenharia de Software
Ferramenta de Cloud Computer para apoio à Engenharia de Software
 
Cloud Solutions com o Microsoft Azure - TDC Online Especial BH
Cloud Solutions com o Microsoft Azure - TDC Online Especial BHCloud Solutions com o Microsoft Azure - TDC Online Especial BH
Cloud Solutions com o Microsoft Azure - TDC Online Especial BH
 
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
 
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
 
Preparando sua arquitetura para microservicos
Preparando sua arquitetura para microservicosPreparando sua arquitetura para microservicos
Preparando sua arquitetura para microservicos
 
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
 
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020Sobrevoando os serviços do Azure | TDC São Paulo Online 2020
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020
 
DevOps + Kubernetes: orquestração e deployment automatizado de containers - O...
DevOps + Kubernetes: orquestração e deployment automatizado de containers - O...DevOps + Kubernetes: orquestração e deployment automatizado de containers - O...
DevOps + Kubernetes: orquestração e deployment automatizado de containers - O...
 
Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019
Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019
Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019
 
Opções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e ArquiteturasOpções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e Arquiteturas
 
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
 

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 | TDC Connections 2021

  • 1.
  • 2. Algumas iniciativas nossas… • Lives gratuitas no .NET SP (Canal .NET, Coding Night, Azure na Prática): https://www.meetup.com/dotnet-Sao-Paulo/
  • 3. Agenda • Twelve Factor Apps: uma visão geral • Tecnologias open source e serviços do Microsoft Azure
  • 4. 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/
  • 5. 1. Codebase (base de código) Uma base de código (repositório) num controlador de versões, múltiplos deploys
  • 6. 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
  • 7. 2. Dependências Declare e isole explicitamente as dependências
  • 8. 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
  • 9. 3. Configurações Armazene as configurações no ambiente
  • 10. 3. Configurações • Priorizar o uso de variáveis de ambiente • Evitar ao extremo arquivos de configuração • Azure App Configuration, Azure Key Vault
  • 11. 4. Backing Services (serviços de apoio) Trate serviços de apoio como recursos anexados
  • 12. 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
  • 13. 5. Build, release, run Separe estritamente os estágios de build, release e execução
  • 14. 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
  • 15. 6. Process (Stateless) Execute a aplicação como um ou mais processos que não armazenam estado
  • 16. 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
  • 17. 7. Port binding Exporte serviços via vínculo de portas
  • 18. 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
  • 20. 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
  • 21. 9. Descartabilidade (Disposability) Maximize robustez com inicialização rápida e desligamento gracioso
  • 22. 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
  • 23. 10. Paridade entre ambientes Mantenha o desenvolvimento, homologação e produção o mais similares possível
  • 24. 10. Paridade entre ambientes • Evitar surpresas devido a diferenças entre ambientes • Containers, Docker Compose, Charts do Helm e mesmo serviços em nuvem (no próprio Microsoft Azure) podem ser de grande valia para emular ambientes em nuvem ou que requerem uma infraestrutura robusta
  • 25. 11. Logs Trate logs como fluxos de eventos
  • 26. 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 e Prometheus constituem excelentes exemplos
  • 27. 12. Admin Processes (Processos Administrativos) Rode tarefas de administração/gestão em processos pontuais
  • 28. 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