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

Microsserviços - Monitoramento e Solução de Pro...

Microsserviços - Monitoramento e Solução de Problemas com Istio (Service Mesh)

Microsserviços são complexos e muito difíceis, não é uma mera afirmativa. Todo desenvolvedor chega a essa conclusão quando coloca o primeiro projeto em produção usando a arquitetura.

O mais legal de tudo é que grandes empresas (com recursos) também chegaram à essa mesma conclusão, e para resolver os principais problemas encontrados nesses cenários elas criaram soluções open source para ajudar a comunidade, como a Netflix por exemplo.

Apesar de microsserviços serem realmente difíceis, a disseminação do conhecimento sobre esse tema evoluiu bastante. Escolha a linguagem e procure por soluções de circuit breaking no principal repositório de pacotes do idioma para ver o que encontra. O grande problema dessas soluções é que devem ser implementadas em todos os artefatos do sistema, agora imagine em uma arquitetura com pouco mais de 50 microsserviços, isso pode ser complicado :(

Com esse cenário em mente, ao invés de tentar resolver os problemas em nível de aplicação, vamos aplicar essas estas soluções à infraestrutura.

E é finalmente nesse momento que vamos conhecer o Service Mash Istio. Ele foi criado para resolver situações como as descritas acima, utilizando o Envoy como implementação de sidecar, ele permite que você aplique soluções distribuídas em todos os microsserviços sem adicionar nenhuma linha de configuração às suas aplicações.

O Istio resolve de forma global problemas como tracing, circuit breaking, roteamento, injeção, autenticação, etc. E nessa talk vamos entender como o Istio funciona e principalmente, como podemos utilizá-lo para monitorar e solucionar problemas de forma escalável.

Marcos Vinicius

August 01, 2020
Tweet

More Decks by Marcos Vinicius

Other Decks in Technology

Transcript

  1. Marcos V. Leal <[email protected]> Agenda • Monólito vs Microsserviços •

    Porque Service Mesh • Istio: Sidecar e Arquitetura • Controle de Tráfego • Observabilidade • Segurança • Istio na prática • Opções de mercado • Considerações
  2. Marcos V. Leal <[email protected]> Sua jornada para a grandiosidade Self-Service,

    On-Demand, Infraestrutura Elástica Automação CI & CD Deployment Pipeline Técnicas avançadas de deployment Microsserviços Cultura DevOps
  3. 2 Pizzas Marcos V. Leal <[email protected]> Princípios de microsserviços 1.

    Independência de implantação - as atualizações em um microsserviço individual não têm impacto negativo em nenhum outro componente do sistema. Otimizado para substituição. 2. Organizado em torno das capacidades de negócios. 3. Produtos, não projetos. 4. Focado API. 5. Endpoints inteligentes e pipelines burros. 6. Governança descentralizada. 7. Gerenciamento de dados descentralizado. 8. Automação de infraestrutura (infraestrutura como código). 9. Design para falha. 10. Design Evolucionário. https://martinfowler.com/articles/microservices.html#CharacteristicsOfAMicroserviceArchitecture
  4. Marcos V. Leal <[email protected]> Falácias da computação distribuída The network

    is reliable. Latency is zero. Bandwidth is infinite. The network is secure. Topology doesn't change. There is one administrator. Transport cost is zero. The network is homogeneous. https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
  5. Marcos V. Leal <[email protected]> Falácias da computação distribuída The network

    is reliable. Circuit breaking and load balancing Latency is zero. Timeouts and retries Bandwidth is infinite. Rating and limiting The network is secure. Mutual TLS Topology doesn't change. Service discovery There is one administrator. Role-based access control Transport cost is zero. gRPC / GraphQL The network is homogeneous. Dynamic routing - A/B, canary deployments https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
  6. Marcos V. Leal <[email protected]> Capacidades de Microsserviços MyService Monitoring Tracing

    API Discovery Invocation Resilience Pipeline Authentication Logging Elasticity
  7. Marcos V. Leal <[email protected]> Capacidades Incorporadas SO Service A SO

    Service B SO Service C Tracing Discovery Circuit Breaking Metrics Tracing Discovery Circuit Breaking Metrics Tracing Discovery Circuit Breaking Metrics
  8. Marcos V. Leal <[email protected]> Capacidades + K8s MyService Monitoring Tracing

    API Discovery Invocation Resilience Pipeline Authentication Logging Elasticity
  9. Marcos V. Leal <[email protected]> Capacidades + Jenkins MyService Monitoring Tracing

    API Discovery Invocation Resilience Pipeline Authentication Logging Elasticity
  10. Marcos V. Leal <[email protected]> Capacidades + Istio MyService Monitoring Tracing

    API (APM) Discovery Invocation Resilience Pipeline Authentication Logging Elasticity
  11. Marcos V. Leal <[email protected]> O que é uma Service Mesh?

    Uma malha de serviço (service mesh) é uma camada de infraestrutura dedicada para lidar com a comunicação serviço a serviço. É responsável pela entrega confiável de solicitações por meio da topologia complexa de serviços que inclui um aplicativo nativo da nuvem moderno. Na prática, a malha de serviço é normalmente implementada como uma matriz de proxies de rede leves que são implantados juntamente com o código do aplicativo, sem que o aplicativo precise estar ciente. Tradução livre de https://buoyant.io/2017/04/25/whats-a-service-mesh-and-why-do-i-need-one/
  12. Marcos V. Leal <[email protected]> Antes do Istio Container Service A

    POD Service A Tracing Discovery Circuit Breaking Metrics Container Service A POD Service B Tracing Discovery Circuit Breaking Metrics Container Service A POD Service C Tracing Discovery Circuit Breaking Metrics
  13. Marcos V. Leal <[email protected]> Depois do Istio Container POD Service

    A Sidecar container Container POD Service B Sidecar container Container POD Service C Sidecar container
  14. Marcos V. Leal <[email protected]> Proxy Envoy (sidecar) Container POD Service

    A Container POD Service B Container POD Service C HTTP1.1, HTTP/2, gRPC, TCP com ou sem mTLS HTTP1.1, HTTP/2, gRPC, TCP com ou sem mTLS HTTP1.1, HTTP/2, gRPC, TCP com ou sem mTLS
  15. Marcos V. Leal <[email protected]> Kubernetes Ingress POD SERVICE INGRESS App

    Container POD App Container POD App Container Load Balancer
  16. Marcos V. Leal <[email protected]> Istio Ingress POD SERVICE GATEWAY App

    Container POD App Container POD App Container ISTIO INGRESS VIRTUAL SERVICE DESTINATION RULES Load Balancer
  17. Marcos V. Leal <[email protected]> Istio - Kubernetes CRDs Adapters.config.istio.io Apikeys.config.istio.io

    Attributemanifests.config.istio.io Authorizations.config.istio.io Bypasses.config.istio.io Checknothings.config.istio.io Circonuses.config.istio.io Cloudwatches.config.istio.io Deniers.config.istio.io Destinationrules.networking.istio.io Dogstatsds.config.istio.io Edges.config.istio.io Envoyfilters.networking.istio.io Fluentds.config.istio.io Gateways.networking.istio.io Handlers.config.istio.io Httpapispecbindings.config.istio.io Httpapispecs.config.istio.io Instances.config.istio.io Kubernetesenvs.config.istio.io Kuberneteses.config.istio.io Listcheckers.config.istio.io Listentries.config.istio.io Logentries.config.istio.io Memquotas.config.istio.io Meshpolicies.authentication.istio.io Metrics.config.istio.io Noops.config.istio.io Opas.config.istio.io Policies.authentication.istio.io Prometheuses.config.istio.io Quotas.config.istio.io Quotaspecbindings.config.istio.io Quotaspecs.config.istio.io Rbacconfigs.rbac.istio.io Rbacs.config.istio.io Redisquotas.config.istio.io Reportnothings.config.istio.io Rules.config.istio.io Servicecontrolreports.config.istio.io Servicecontrols.config.istio.io Serviceentries.networking.istio.io Servicerolebindings.rbac.istio.io Serviceroles.rbac.istio.io Signalfxs.config.istio.io Solarwindses.config.istio.io Stackdrivers.config.istio.io Statsds.config.istio.io Stdios.config.istio.io Templates.config.istio.io Tracespans.config.istio.io Virtualservices.networking.istio.io https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/
  18. Marcos V. Leal <[email protected]> Controle de Tráfego • Blue /

    Green deployment • Canary deployment (really) • Mirroring / Dark Launch / Shadow
  19. Marcos V. Leal <[email protected]> Canary com Kubernetes ROUTER USERS SERVICE

    Container POD APP v1 Container POD APP v2 50% 50%
  20. Marcos V. Leal <[email protected]> Canary com Istio ROUTER USERS SERVICE

    Container POD APP v1 Container POD APP v2 95% 5%
  21. Marcos V. Leal <[email protected]> Capacidades de Segurança • Egress blocking

    • mTLS - Encryption • Access Control • JSON Web Token (JWT) Authentication • Role-based Access Control (RBAC) Authorization
  22. Marcos V. Leal <[email protected]> Capacidades de Segurança • Egress blocking

    • mTLS - Encryption • Access Control • JSON Web Token (JWT) Authentication • Role-based Access Control (RBAC) Authorization
  23. Marcos V. Leal <[email protected]> Mutual TLS Container POD Service A

    Container POD Service B Container POD Service C
  24. Marcos V. Leal <[email protected]> Mutual TLS Container POD Service A

    Container POD Service B Container POD Service C Container POD Eavesdropper
  25. Marcos V. Leal <[email protected]> Mutual TLS Container POD Service A

    Container POD Service B Container POD Service C Container POD Eavesdropper
  26. Marcos V. Leal <[email protected]> Controle de Acesso Container POD Service

    A Container POD Service B Container POD Service C
  27. Marcos V. Leal <[email protected]> Controle de Acesso Container POD Service

    A Container POD Service B Container POD Service C
  28. Marcos V. Leal <[email protected]> Controle de Acesso Container POD Service

    A Container POD Service B Container POD Service C
  29. Marcos V. Leal <[email protected]> JSON Web Tokens • ORY Hydra

    • Keycloak • Auth0 • Autenticação Firebase • Google Auth https://istio.io/latest/docs/concepts/security/#istio-identity
  30. Marcos V. Leal <[email protected]> Referências • https://istio.io • https://kind.sigs.k8s.io •

    https://k9scli.io • https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing • https://12factor.net/pt_br • https://principlesofchaos.org • http://kubernetes.io • https://www.envoyproxy.io • https://martinfowler.com/articles/microservices.html#CharacteristicsOfAMicroserviceArchitecture • https://buoyant.io/2017/04/25/whats-a-service-mesh-and-why-do-i-need-one • https://en.wikipedia.org/wiki/Eavesdropping • https://kiali.io • https://prometheus.io/ • https://grafana.com/ • https://www.jaegertracing.io/
  31. Follow me Be a better version of yourself every day.

    twitter.com/marcosleal_prd instagram.com/marcosleal.prd medium.com/@marcosleal.prd linkedin.com/in/marcosleal-prd speakerdeck.com/marcosleal_prd [email protected]