Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Service Mesh: Desafios e reflexões após dois an...

Service Mesh: Desafios e reflexões após dois anos em produção

Service Mesh é um tema quente no universo "Cloud Native" há alguns anos. Sempre que o tema vem à tona, é comum falar de funcionalidades que essa tecnologia resolve, mas também surgem dúvidas e incertezas: Será que isso é pra mim, realmente preciso disso?

Entender as opções do mercado, arquiteturas possíveis, decidir o caminho, aprender a instalar, operar, monitorar, escalar, atualizar, criar boas interfaces para adoção, viabilizar a migração de outras soluções, etc.

Por mais de 2 anos, nossa equipe Tráfego do iFood tem operado Istio em escala, enfrentando questionamentos, incertezas e desafios até atingir um bom nível de confiança na plataforma.

O objetivo desta palestra é refletir sobre benefícios e desafios de operar Service Mesh em produção em larga escala, ajudando o público a criar sua própria visão sobre o tema.

Obs: Apesar de nossa experiência ser baseada no uso do Istio, a talk não precisará de conhecimento prévio na ferramenta. Boa parte dos conceitos são intercambiáveis.

Você consegue assistir essa palestra em: https://www.youtube.com/watch?v=E4aySs64XW4

Avatar for Jhonatan Morais

Jhonatan Morais

December 18, 2024
Tweet

More Decks by Jhonatan Morais

Other Decks in Technology

Transcript

  1. Service Mesh: Desafios e reflexões após dois anos em produção

    Jhonatan Morais Staff Engineer - SRE - iFood
  2. KCD Floripa 2024 2 🏠 Nascido em Floripa 🏴 Sofredor

    Torcedor do Figueirense 🎤 Co-organizador do DevOpsDays Floripa desde 2018 💻 Trabalhando no iFood desde 2020, atualmente como Staff Engineer | SRE @ Traffic Sobre Jhonatan Morais
  3. KCD Floripa 2024 4 iFood • +100 milhões pedidos por

    mês • +2k pessoas em tecnologia • +8k deploys por mês • ~3k microsserviços • 19 Kubernetes / Service Mesh clusters em produção Traffic Team • Responsável por gestão de Edge Network, API Gateways, Ingress Controllers, Service Mesh e correlatos. Um pouco de contexto…
  4. KCD Floripa 2024 5 Disclaimer O conteúdo desta palestra expressa

    minha própria opinião, baseado nas minhas experiências pessoais sobre o tema. 🕊Fique à vontade pra concordar ou discordar.
  5. KCD Floripa 2024 10 "Service mesh is an infrastructure layer

    built on top of a microservice architecture to provide observability, security, and reliability to applications." [1]
  6. KCD Floripa 2024 13 Como chegamos até aqui? • Intuito

    em remover as muitas sobreposições de soluções em várias partes da stack ◦ Ingress Controller, API Gateway interno, frameworks e bibliotecas, etc. • Necessidade de habilitar estratégias multi-cluster / multi-region de maneira mais transparente dentro do Kubernetes. • Padrões de comunicação/resiliência/authn/authz built-in, não reinventar a roda.
  7. KCD Floripa 2024 14 Como fizemos? 6 months 8 months

    16 months Multi disciplinary team Hybrid Ops team Mesh team Traffic team Research && Tests Sandbox setup Production Setup Controlled adoption Full GRPC adoption Platform maturity New features +70% Prod adoption Continuous improvement New features 100% adoption
  8. KCD Floripa 2024 16 "Istio is the most popular, powerful,

    and trusted service mesh. Founded by Google, IBM and Lyft in 2016, Istio is a graduated project in the Cloud Native Computing Foundation alongside projects like Kubernetes and Prometheus." from istio.io
  9. KCD Floripa 2024 19 Por que Istio? • Decisão tomada

    em meados de março de 2022 • Diversos aspectos levados em consideração: ◦ Features sobre networking, security, operations, observability, etc ◦ Cadência de releases ◦ Tamanho da comunidade e contribuidores • Istio e Linkerd foram analisados
  10. KCD Floripa 2024 21 iFood Service Mesh • Istio •

    Mesh model ◦ Single Mesh • Cluster model ◦ Multi clusters • Control Plane model ◦ Multiple control planes • Network model ◦ Multiple networks • Data Plane mode ◦ Sidecar Mais infos: istio.io/latest/docs/ops/deployment/deployment-models/
  11. KCD Floripa 2024 23 Eu deveria usar Service Mesh? Antes,

    vamos falar sobre algumas coisas…
  12. KCD Floripa 2024 30 🧰 Priorize features: • Authn/Authz: ◦

    mTLS ◦ JWT • Traffic Management ◦ Weight-based routing ◦ Header-based routing ◦ Retry policies ◦ Circuit Breaking ◦ Rate Limiting • Telemetry ◦ Control plane and proxy visibility ◦ Metrics + Tracing • Custom extensions for other purposes 🎯 Foco em viabilizar migração com menor atrito e maior confiança.
  13. KCD Floripa 2024 31 Comece pequeno • Utilize mecanismos de

    opt-in ao habilitar ◦ Por namespace ◦ Por workload • Tenha um ambiente de sandbox ◦ Observe como se comporta ◦ Adquira segurança 💡Mesmo com todos os cuidados, problemas acontecerão, esteja preparado. Produção não tolera desaforos.
  14. KCD Floripa 2024 32 Como nós fizemos? • Ambiente de

    Sandbox funcional, vá sem medo • Capturar early-adopters ◦ Times mais engajados ◦ Serviços de impacto controlado, evitar os mais críticos no início ◦ Diferentes clusters e tipos de serviços para exercitar as configs ▪ API, Workers, Jobs, etc.
  15. KCD Floripa 2024 33 Como nós fizemos? 📅 ~ 3

    meses após • Kick-off em Produção ◦ Início com alguns clusters, adicionando novos aos poucos ◦ Opt-in, entre quando e se quiser ◦ Adoção não forçada para serviços existentes, apenas para novos ▪ Tenha um mecanismo de bypass para serviços que requerem comportamentos não suportados ◦ Tenha um rollback funcional e simples • Erre, aprenda, corrija, siga em frente.
  16. KCD Floripa 2024 35 Abstraia, mas não torne invisível •

    Diversos CR's, uma infinidade de configs/params ◦ O que tornar configurável? ◦ Tenha guard-rails • Observe seu ambiente ◦ O que você quer resolver? ◦ Quais são bons defaults? ◦ Priorize 80/20 ▪ Ex: Retry automático, qual condição? • Configs globais vs Configs locais ◦ O que ter na sua mão, o que deixar na mão do dev?
  17. KCD Floripa 2024 37 🪪 Authz Rules 🔌 Join Service

    Mesh 💡 Pode ainda te ajudar a viabilizar uma estratégia de migração.
  18. KCD Floripa 2024 42 Configuration convergence time: • pilot_proxy_convergence_time •

    pilot_proxy_queue_time • pilot_xds_push_time API XDS and sidecar injection errors: • pilot_total_xds_internal_errors • pilot_total_xds_rejects • envoy.cluster_manager.cds.update_failure.count • sidecar_injection_failure_total Configuration consistency: • controller_sync_errors_total • pilot_duplicate_envoy_clusters • pilot_conflict_inbound_listener • pilot_no_ip • pilot_endpoint_not_ready Citadel certificate expire, emission and authentication errors: • citadel_server_root_cert_expiry_timestamp • citadel_server_cert_chain_expiry_timestamp • citadel_server_authentication_failure_count • citadel_server_csr_parsing_err_count Galley configs validations: • galley_validation_config_update_error • galley_validation_config_load_error • galley_validation_http_error • galley_validation_failed Extra troubleshootings metrics (dashboards and stuff): • pilot_inbound_updates • pilot_push_triggers • pilot_xds_pushes • pilot_k8s_cfg_events • pilot_xds • pilot_virt_services • pilot_services • envoy_cluster_upstream_cx_active{cluster_name="xds-gr pc"} • envoy_cluster_upstream_cx_rx_bytes{cluster_name="xds- grpc"} • envoy_cluster_upstream_cx_tx_bytes{cluster_name="xds- grpc"} Control Plane
  19. KCD Floripa 2024 43 Configuration convergence time: • pilot_proxy_convergence_time •

    pilot_proxy_queue_time • pilot_xds_push_time API XDS and sidecar injection errors: • pilot_total_xds_internal_errors • pilot_total_xds_rejects • envoy.cluster_manager.cds.update_failure.count • sidecar_injection_failure_total Configuration consistency: • controller_sync_errors_total • pilot_duplicate_envoy_clusters • pilot_conflict_inbound_listener • pilot_no_ip • pilot_endpoint_not_ready Citadel certificate expire, emission and authentication errors: • citadel_server_root_cert_expiry_timestamp • citadel_server_cert_chain_expiry_timestamp • citadel_server_authentication_failure_count • citadel_server_csr_parsing_err_count Galley configs validations: • galley_validation_config_update_error • galley_validation_config_load_error • galley_validation_http_error • galley_validation_failed Extra troubleshootings metrics (dashboards and stuff): • pilot_inbound_updates • pilot_push_triggers • pilot_xds_pushes • pilot_k8s_cfg_events • pilot_xds • pilot_virt_services • pilot_services • envoy_cluster_upstream_cx_active{cluster_name="xds-gr pc"} • envoy_cluster_upstream_cx_rx_bytes{cluster_name="xds- grpc"} • envoy_cluster_upstream_cx_tx_bytes{cluster_name="xds- grpc"} Control Plane
  20. KCD Floripa 2024 44 🤔 O que olhar? • Istio

    Control Plane (istiod) • Istio Gateways (Ingress / East West) • Sidecars 📖 Não subestime o básico • CPU • Memória • Network • Kubernetes metrics • Infra subjacente (nodes, LB, etc)
  21. KCD Floripa 2024 47 "Não é porque você pode, que

    você deve." Service Mesh / Istio pode resolver vários problemas, mas talvez você não deveria usar para isso, ou talvez apenas não começar com isso: - Egress Traffic Control 😈 - Chaos Tests 🧨 - Em geral, configs que você não validou/testou decentemente
  22. KCD Floripa 2024 54 Cenário atual • Kubernetes only (no

    VMs) • No ar desde Q1-2022 • % Workloads que já adotaram: +74% • % Tráfego passando pela Mesh: +75%* * Tráfego interno elegível: Business-oriented apps rodando no K8s
  23. KCD Floripa 2024 57 Law of conservation of complexity[2][3] "Every

    application has an inherent amount of complexity that cannot be removed or hidden. Instead, it must be dealt with, either in product development or in user interaction."
  24. KCD Floripa 2024 62 ❓Eu deveria usar Service Mesh? •

    Time de "uma pessoa"? • Time já tem um monte de responsabilidades? • Time "faz tudo" de infra? • Poucas aplicações? • Serviços são escritos em uma linguagem/framework? • Precisa apenas de uma ou outra funcionalidade básica? • Os problemas que isso resolve não são suas maiores dores hoje?
  25. KCD Floripa 2024 63 ❓Eu deveria usar Service Mesh? •

    Time de "uma pessoa"? • Time já tem um monte de responsabilidades? • Time "faz tudo" de infra? • Poucas aplicações? • Serviços são escritos em uma linguagem/framework? • Precisa apenas de uma ou outra funcionalidade básica? • Os problemas que isso resolve não são suas maiores dores hoje? Provavelmente, não. Mas a escolha é sua!
  26. KCD Floripa 2024 64 🖊 Conclusão • Service Mesh é

    uma ferramenta poderosa, mas depende de você tornar isso uma solução ao invés de um novo problema. • Adotar Service Mesh é um desafio árduo. • Considere criar um time dedicado para tal, pelo menos no início. • Comece devagar, pequeno, erre, aprenda, corrija e avance. • Ouça seus usuários, priorize o que é importante, não apenas o que você quer.
  27. KCD Floripa 2024 66 linkedin.com/in/jhonatancmorais Contatos Jhonatan Morais /jhonatancmorais Tem

    interesse sobre o tema? Fique à vontade para me adicionar e bater um papo sobre.