Advertisement
Advertisement

More Related Content

Slideshows for you(20)

Similar to Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021(20)

Advertisement

More from Renato Groffe(20)

Advertisement

Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021

  1. DEVELOPMENT Twelve-Factor App Boas Práticas em Aplicações na Nuvem Renato Groffe Robson Rocha de Araújo
  2. MINI-BIO RENATO GROFFE MINI-BIO @renatogroffe Atua como consultor em atividades voltadas ao desenvolvimento de sistemas há mais de 20 anos. Bacharel em Sistemas de Informação, com Especialização em Engenharia de Software e MBA em Business Intelligence. Também é palestrante e autor técnico em portais e revistas especializadas, com foco em tecnologias Microsoft como (.NET, C#, ASP.NET Core, Azure) e boas práticas na área de software. Participo frequentemente em iniciativas do Canal .NET, Azure na Prática e Coding Night. @renatogroffe @canaldotnet @RenatoGroff renato.groffe@yahoo.com.br renatogroffe.medium.com
  3. MINI-BIO Robson Araújo MINI-BIO @robsonrochaaraujo 39 Anos, Casado, 3 filhos. Microsoft MVP na categoria Microsoft Azure (2019, 2020, 2021-2022). Microsoft MCT desde 2011. 24+ anos de experiência no Stack Microsoft. 33 Certificações Microsoft (e mais algumas outras). Fundador e Instrutor da ProCoding (Brasil). Senior Cloud Architect na Capgemini Netherland B.V. (Países Baixos) @robsonrox @RobsonAraujoProCoding @RobsonROX robsonrochaaraujo@hotmail.com about.me/robsonaraujo
  4. AGENDA • Twelve Factor Apps: uma visão geral e princípios • Alternativas do Azure úteis no desenvolvimento de aplicações
  5. INSIRA A TECNOLOGIA MICROSOFT AQUI • 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 • Site: https://12factor.net/
  6. INSIRA A TECNOLOGIA MICROSOFT AQUI Uma base de código (repositório) num controlador de versões, múltiplos deploys
  7. INSIRA A TECNOLOGIA MICROSOFT AQUI • 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
  8. INSIRA A TECNOLOGIA MICROSOFT AQUI Declare e isole explicitamente as dependências
  9. INSIRA A TECNOLOGIA MICROSOFT AQUI • 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
  10. INSIRA A TECNOLOGIA MICROSOFT AQUI Armazene as configurações no ambiente
  11. INSIRA A TECNOLOGIA MICROSOFT AQUI • Priorizar o uso de variáveis de ambiente • Evitar ao extremo arquivos de configuração • Azure App Configuration, Azure Key Vault
  12. INSIRA A TECNOLOGIA MICROSOFT AQUI Trate serviços de apoio como recursos anexados
  13. INSIRA A TECNOLOGIA MICROSOFT AQUI • É 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
  14. INSIRA A TECNOLOGIA MICROSOFT AQUI Separe estritamente os estágios de build, release e execução
  15. INSIRA A TECNOLOGIA MICROSOFT AQUI • 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
  16. INSIRA A TECNOLOGIA MICROSOFT AQUI Execute a aplicação como um ou mais processos que não armazenam estado
  17. INSIRA A TECNOLOGIA MICROSOFT AQUI • 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
  18. INSIRA A TECNOLOGIA MICROSOFT AQUI Exporte serviços via vínculo de portas
  19. INSIRA A TECNOLOGIA MICROSOFT AQUI • 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. INSIRA A TECNOLOGIA MICROSOFT AQUI Escalabilidade horizontal de aplicações
  21. • Prioridade para implementações stateless • Inúmeras instâncias • Worker Processes para processamentos de longa duração • Uso de serviços de apoio
  22. INSIRA A TECNOLOGIA MICROSOFT AQUI Maximize robustez com inicialização rápida e desligamento gracioso
  23. • 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
  24. INSIRA A TECNOLOGIA MICROSOFT AQUI Mantenha o desenvolvimento, homologação e produção o mais similares possível
  25. INSIRA A TECNOLOGIA MICROSOFT AQUI • 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
  26. INSIRA A TECNOLOGIA MICROSOFT AQUI Trate logs como fluxos de eventos
  27. INSIRA A TECNOLOGIA MICROSOFT AQUI • 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 um excelentes exemplos
  28. INSIRA A TECNOLOGIA MICROSOFT AQUI Rode tarefas de administração/gestão em processos pontuais
  29. INSIRA A TECNOLOGIA MICROSOFT AQUI • 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
Advertisement