Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Escalando seus microsserviços: Principais desaf...

Escalando seus microsserviços: Principais desafios, como escalar e importância

Como monitorar, realizar testes de carga e escalar seus serviços. Aprenda a preparar a arquitetura e o ambiente de sua aplicação para esse cenário, como entender e metrificar o consumo de recursos e a como simular um ambiente produtivo baseado em métricas.

Avatar for Daniel Silva

Daniel Silva

October 07, 2022
Tweet

More Decks by Daniel Silva

Other Decks in Technology

Transcript

  1. Escalabilidade de uma aplicação: Principais desafios, como escalar e importância

    Como escalar a sua aplicação e os desafios envolvidos
  2. Sumário - O que é escalabilidade? - Por que escalar?

    - HPA e VPA - Entendendo o papel do Health Check - Quais são os desafios? - Escala baseada em métrica e Escala baseada em evento - Teste de carga/estresse - Importância de ter uma aplicação escalável - Ferramentas - Perguntas
  3. Mas afinal, o que é escalabilidade? - Dimensionamento automático da

    carga de trabalho - Proporciona uma maior tolerância a falhas - Melhor gerenciamento de custos - Maior disponibilidade da aplicação - Implantações menos onerosas - Otimização de custos
  4. Por que devemos ter uma aplicação escalável? - Evitar downtime

    - Custo - Segurança - Disponibilidade - Desempenho contínuo
  5. Escala por métrica - MetricsServer - Agregador de uso de

    recursos no cluster - Usado no HPA e VPA - Coleta de métrica em tempo real - Integração com o Prometheus
  6. HPA - HorizontalPodAutoscaler - Monitoramento da carga de trabalho -

    Dimensionamento automático da carga de trabalho - Baseado em resources(cpu e memory) - Sistema de loop fechado que aumenta automaticamente os recursos - Redundância de pods - Verificação do cluster a cada 15 segundos - Funciona com o balanceador de carga na frente - Em tese é ilimitado
  7. VPA - VerticalPodAutoscaler - Verifica a saúde do cluster todo

    - Escala do cluster - Comum em aplicações baseadas em estado ou monolíticas - Em algum momento terá limite - Não vem no default do K8S
  8. Entendendo o Health Check - Endpoint na aplicação que expõe

    saúde da mesma - Uso do conceito de probes - Readiness e Liveness - Minha aplicação está pronta e disponível? - Definição de threshold - Restart da aplicação de forma automatizada
  9. Desafios e alguns cenários - Quanto de recurso minha aplicação

    precisa? - Atenção aos limits do deployment - Efemeridade da aplicação - Redundância de nós e pods - Atenção ao máximo de replicas - Observabilidade em primeiro lugar - Metrics; Traces; Logs
  10. Escala por evento - KEDA - Ajuda no dimensionamento do

    container - Escalonamento baseado em evento - Funciona ao lado do HPA - Mecanismos de observabilidade
  11. Teste de carga/estresse - Como saber quanto de recurso meu

    container precisa? - Cheque de limite da aplicação - Otimização de custos - Testar o desempenho da aplicação
  12. Importância de ter uma aplicação escalável - Aumento de confiabilidade

    - Diminuição de incidentes e estresse da equipe - Previne problemas em cascata - Otimização de custos
  13. Referências - https://github.com/eusouodaniel/phpeste-2022 - https://kubernetes.io/pt-br - https://keda.sh - https://k6.io -

    https://github.com/kubernetes-sigs/metrics-server - https://github.com/fortio/fortio - https://backendless.com/what-is-app-scaling-and-why-it-matters - https://thenewstack.io/scaling-my-application-am-i-ready - https://relevant.software/blog/guide-large-scale-web-application-development