• Microsoft Most Valuable Professional (MVP)
• Multi-Plataform Technical Audience Contributor (MTAC)
• Mais de 15 anos de experiência na área de Tecnologia
• Autor Técnico e Palestrante
• Um dos organizadores do Canal .NET, do .NET São
Paulo e do Azure Talks
• Fundador do Azure na Prática
Renato Groffe
h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
Renato Groffe - Contatos
h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
/renatogroffe /in/renatogroffe
/canaldotnet
/renatogroffe
/canaldotnet
/renatogroff
Agenda
• Escalabilidade: uma visão geral
• Azure App Service
• Kubernetes na nuvem
• Exemplos práticos
Um pouco mais sobre escalabilidade na Web...
Vertical
Horizontal
Por que escalar uma aplicação Web?
• Necessidade de atender a uma demanda
crescente de uso sem comprometer a
performance
• Garantir uma alta disponibilidade
Problemas comuns ao se escalar uma aplicação Web
• Como criar rapidamente diferentes instâncias de uma
mesma aplicação?
• Como evitar problemas envolvendo mudanças de
ambientes (Desenvolvimento / Testes para Produção)?
• Como configurar sem grandes complicações o
balanceamento de carga (load balancing)?
• Como evitar problemas com armazenamento temporário
de dados (cache em memória, por exemplo)?
• Como se recuperar de problemas envolvendo uma
instância específica da aplicação?
Algumas respostas...
• Utilizando soluções na nuvem do tipo PaaS
(Plataform as a Service) → O Microsoft Azure conta
com excelentes opções
• Empregando alternativas para cache distribuído
como o Redis
• Utilização de containers Docker
• Orquestação de containers com Kubernetes ou
Docker Swarm (auto-recuperação e reinicialização
automáticas)
Microsoft Azure e escalabilidade na Web
• Azure App Service
• Azure Web App for Containers
• Azure Web App for Containers
• Azure Kubernetes Service (AKS)
Azure App Service
• Hospedagem de aplicações
• Publicação em Windows ou Linux e também
utilizando imagens Docker (Azure Web App for
Containers)
• Suporta diversas stacks de desenvolvimento
• Escalabilidade (vertical e horizontal)
• Suporte a HTTPS
Azure Kubernetes Service (AKS)
• Serviço gerenciado na nuvem
• Orquestração de containers
• Alocação da infraestrutura necessária
para criação dos nós
Kubernetes: uma visão geral
• Também conhecido como K8s ou kube
• Desenvolvido originalmente pela Google
• Mantido pela Cloud Native Computing Foundation
• Escrito em Go
• Open source
Kubernetes: uma visão geral
• Cluster com máquina Master e Nodes
• Criação de objetos através de arquivos no formato YAML
• Diversas funcionalidades para gerenciamento
• kubectl → ferramenta de linha de comando
• Dashboard → gerenciamento via browser
• Minikube → ambiente de testes
Kubernetes: arquitetura
kubectl
Kubernetes: arquitetura
• Pod
• Grupo de um ou mais containers
implantados em um Node (Nó)
• Compartilham o mesmo endereço IP,
IPC, nome do host e outros recursos
POD
Kubernetes: arquitetura
• Deployment
• Abstração de um Pod com
recursos adicionais
• Conta com gerenciamento de
estados
Deployment
POD
Kubernetes: arquitetura
• Service
• Objeto mais estável (Pods são criados ou
removidos continuamente)
• Cuidará do acesso aos Pods, funcionando
como um Load Balancer
Aplicações Web Escaláveis no Azure: App Service, Docker e Kubernetes - Fevereiro-2020
Aplicações Web Escaláveis no Azure: App Service, Docker e Kubernetes - Fevereiro-2020

Aplicações Web Escaláveis no Azure: App Service, Docker e Kubernetes - Fevereiro-2020

  • 2.
    • Microsoft MostValuable Professional (MVP) • Multi-Plataform Technical Audience Contributor (MTAC) • Mais de 15 anos de experiência na área de Tecnologia • Autor Técnico e Palestrante • Um dos organizadores do Canal .NET, do .NET São Paulo e do Azure Talks • Fundador do Azure na Prática Renato Groffe h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
  • 3.
    Renato Groffe -Contatos h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e / /renatogroffe /in/renatogroffe /canaldotnet /renatogroffe /canaldotnet /renatogroff
  • 4.
    Agenda • Escalabilidade: umavisão geral • Azure App Service • Kubernetes na nuvem • Exemplos práticos
  • 5.
    Um pouco maissobre escalabilidade na Web... Vertical Horizontal
  • 6.
    Por que escalaruma aplicação Web? • Necessidade de atender a uma demanda crescente de uso sem comprometer a performance • Garantir uma alta disponibilidade
  • 7.
    Problemas comuns aose escalar uma aplicação Web • Como criar rapidamente diferentes instâncias de uma mesma aplicação? • Como evitar problemas envolvendo mudanças de ambientes (Desenvolvimento / Testes para Produção)? • Como configurar sem grandes complicações o balanceamento de carga (load balancing)? • Como evitar problemas com armazenamento temporário de dados (cache em memória, por exemplo)? • Como se recuperar de problemas envolvendo uma instância específica da aplicação?
  • 8.
    Algumas respostas... • Utilizandosoluções na nuvem do tipo PaaS (Plataform as a Service) → O Microsoft Azure conta com excelentes opções • Empregando alternativas para cache distribuído como o Redis • Utilização de containers Docker • Orquestação de containers com Kubernetes ou Docker Swarm (auto-recuperação e reinicialização automáticas)
  • 9.
    Microsoft Azure eescalabilidade na Web • Azure App Service • Azure Web App for Containers • Azure Web App for Containers • Azure Kubernetes Service (AKS)
  • 10.
    Azure App Service •Hospedagem de aplicações • Publicação em Windows ou Linux e também utilizando imagens Docker (Azure Web App for Containers) • Suporta diversas stacks de desenvolvimento • Escalabilidade (vertical e horizontal) • Suporte a HTTPS
  • 11.
    Azure Kubernetes Service(AKS) • Serviço gerenciado na nuvem • Orquestração de containers • Alocação da infraestrutura necessária para criação dos nós
  • 12.
    Kubernetes: uma visãogeral • Também conhecido como K8s ou kube • Desenvolvido originalmente pela Google • Mantido pela Cloud Native Computing Foundation • Escrito em Go • Open source
  • 13.
    Kubernetes: uma visãogeral • Cluster com máquina Master e Nodes • Criação de objetos através de arquivos no formato YAML • Diversas funcionalidades para gerenciamento • kubectl → ferramenta de linha de comando • Dashboard → gerenciamento via browser • Minikube → ambiente de testes
  • 14.
  • 15.
    Kubernetes: arquitetura • Pod •Grupo de um ou mais containers implantados em um Node (Nó) • Compartilham o mesmo endereço IP, IPC, nome do host e outros recursos POD
  • 16.
    Kubernetes: arquitetura • Deployment •Abstração de um Pod com recursos adicionais • Conta com gerenciamento de estados Deployment POD
  • 17.
    Kubernetes: arquitetura • Service •Objeto mais estável (Pods são criados ou removidos continuamente) • Cuidará do acesso aos Pods, funcionando como um Load Balancer