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

PRÓXIMA GERAÇÃO DE APIS E SERVICE MESH

PRÓXIMA GERAÇÃO DE APIS E SERVICE MESH

Com a grande adoção de arquiteturas orientada a APIs e em que uma grande aplicação é dividida em pequenos serviços independentes que se comunicam entre si com base nos protocolos TCP/UDP, as aplicações tendem a ser altamente dinâmicas e sua orquestração passa ser quase que um requisito obrigatório, neste cenário subimos contêineres individuais e a todo tempo sendo iniciados ou destruídos conforme a carga ou durante as atualizações. Essa mudança na arquitetura apresenta novos desafios e oportunidades, então alguns dos pontos mais importantes são a conectividade entre as APIs e sua proteção. Vamos falar um pouco deste cenário utilizando Envoy e o famigerado eBPF. Vamos apresentar tudo de forma objetiva e prática e é claro um pouco de mão na massa mostrando um pouco de como funciona.

Jefferson Otoni Lima

August 24, 2021
Tweet

More Decks by Jefferson Otoni Lima

Other Decks in Technology

Transcript

  1. 2020 © Engineering www.eng.it Engineering Ingegneria Informatica SpA @EngineeringSpa gruppo.engineering

    LifeAtEngineering PRÓXIMA GERAÇÃO DE APIS E SERVICE MESH ENGINEERING engdb.com.br jeffotoni André Farina Kenisson Melo
  2. 2020 © Engineering www.eng.it Engineering Ingegneria Informatica SpA @EngineeringSpa gruppo.engineering

    LifeAtEngineering 6 Segunda Geração Centralizadas - Protocolo HTTP - L7
  3. 2020 © Engineering www.eng.it Engineering Ingegneria Informatica SpA @EngineeringSpa gruppo.engineering

    LifeAtEngineering 7 Self-service - descentralizada e em Camadas - TCP e UDP - L7 a L4 Terceira Geração
  4. 2020 © Engineering www.eng.it Engineering Ingegneria Informatica SpA @EngineeringSpa gruppo.engineering

    LifeAtEngineering 8 Malha de serviço - comunicação entre serviços Service Mesh
  5. 2020 © Engineering www.eng.it Engineering Ingegneria Informatica SpA @EngineeringSpa gruppo.engineering

    LifeAtEngineering 9 permite que os programadores executem bytecode personalizado dentro do kernel sem ter que mudar o kernel ou carregar módulos do kernel. self-service - descentralizada e em camadas - no KERNEL O eBPF
  6. 2020 © Engineering www.eng.it Engineering Ingegneria Informatica SpA @EngineeringSpa gruppo.engineering

    LifeAtEngineering 10 Alguns agentes responsáveis Apis Microservices Sistemas Distribuídos Conteinerização
  7. 2020 © Engineering www.eng.it Engineering Ingegneria Informatica SpA @EngineeringSpa gruppo.engineering

    LifeAtEngineering 13 • O Envoy pode ser configurado dinamicamente. • O Envoy tem vários algoritmos de balanceamento de carga. • Envoy oferece suporte a novas tentativas e quebra de circuito. O Envoy pode repetir as solicitações e, se o serviço upstream retornar erros suficientes, o Envoy pode "interromper o circuito". • O Envoy também oferece suporte de primeira classe para os protocolos mais recentes. Isso inclui protocolos como HTTP / 2, HTTP / 3 e gRPC.
  8. 2020 © Engineering www.eng.it Engineering Ingegneria Informatica SpA @EngineeringSpa gruppo.engineering

    LifeAtEngineering 15 - Muito dinâmico/leve, podendo ter uma instância do Envoy por Serviço (service Mesh) - Sem dependências (BD por ex.)
  9. 2020 © Engineering www.eng.it Engineering Ingegneria Informatica SpA @EngineeringSpa gruppo.engineering

    LifeAtEngineering 20 Implementando no Envoy https://github.com/andref5/engovy
  10. 2020 © Engineering www.eng.it Engineering Ingegneria Informatica SpA @EngineeringSpa gruppo.engineering

    LifeAtEngineering 22 Kernel Modules - Programas comuns no Linux. Syscall (Nginx epoll) ou Modulo (drivers) - https://stackoverflow.com/questions/49649253/eventloop-has-high-ksoftirqd-load-nginx-does-not-but-does-same-system-calls-wh
  11. 2020 © Engineering www.eng.it Engineering Ingegneria Informatica SpA @EngineeringSpa gruppo.engineering

    LifeAtEngineering 23 - eBPF é um novo tipo de software e a primeira mudança fundamental na forma como o kernel é usado em 50 anos (Brendan Gregg) - https://blog.cloudflare.com/l4drop-xdp-ebpf-based-ddos-mitigations/
  12. 2020 © Engineering www.eng.it Engineering Ingegneria Informatica SpA @EngineeringSpa gruppo.engineering

    LifeAtEngineering 24 Hot Reload Virtual Machine para Linux High Performance
  13. 2020 © Engineering www.eng.it Engineering Ingegneria Informatica SpA @EngineeringSpa gruppo.engineering

    LifeAtEngineering 28 https://cilium.io/blog/2020/08/19/google-chooses-cilium-for-gke-networking
  14. 2020 © Engineering www.eng.it Engineering Ingegneria Informatica SpA @EngineeringSpa gruppo.engineering

    LifeAtEngineering 29 Katran is a C++ library and BPF program layer 4 load balancing
  15. 2020 © Engineering www.eng.it Engineering Ingegneria Informatica SpA @EngineeringSpa gruppo.engineering

    LifeAtEngineering 30 Implementando no eBPF https://github.com/andref5/bina
  16. 2020 © Engineering www.eng.it Engineering Ingegneria Informatica SpA @EngineeringSpa gruppo.engineering

    LifeAtEngineering REFERÊNCIAS 31 Envoy - https://github.com/envoyproxy/go-control-plane - https://dropbox.tech/infrastructure/how-we-migrated-dropbox-from-nginx-to-envoy - https://eng.uber.com/gatewayuberapi/ - https://eng.uber.com/architecture-api-gateway - https://www.envoyproxy.io/docs/envoy/latest/configuration/configuration - https://thenewstack.io/zerolb-a-new-decentralized-pattern-for-load-balancing - https://github.com/andref5/engovy eBPF - https://github.com/xdp-project/xdp-tutorial - https://developers.redhat.com/blog/2018/12/06/achieving-high-performance-low-latency-net working-with-xdp-part-1 - https://developers.redhat.com/blog/2018/12/17/using-xdp-maps-rhel8 - https://www.brendangregg.com/blog/2019-01-01/learn-ebpf-tracing.html - https://thenewstack.io/ebpf-finds-a-home-with-a-new-foundation/ - https://homepages.dcc.ufmg.br/~mmvieira/cc/papers/Processamento_Rapido_de_Pacotes_co m_eBPF_e_XDP-%20versao%20final.pdf - https://github.com/andref5/bina
  17. 2020 © Engineering www.eng.it Engineering Ingegneria Informatica SpA @EngineeringSpa gruppo.engineering

    LifeAtEngineering Thanks := Obrigado{...} engdb.com.br /jeffotoni in/jeffotoni in/andref5 Obrigado... in/kenissongmelo 32 /andref5 /kenissongmelo