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

    View full-size slide

  2. 2020 © Engineering
    www.eng.it
    Engineering Ingegneria Informatica SpA
    @EngineeringSpa
    gruppo.engineering
    LifeAtEngineering
    2
    PROXY’s & GERAÇÕES

    View full-size slide

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

    View full-size slide

  4. 2020 © Engineering
    www.eng.it
    Engineering Ingegneria Informatica SpA
    @EngineeringSpa
    gruppo.engineering
    LifeAtEngineering
    4
    Api Gateways & Gerações

    View full-size slide

  5. 2020 © Engineering
    www.eng.it
    Engineering Ingegneria Informatica SpA
    @EngineeringSpa
    gruppo.engineering
    LifeAtEngineering
    5
    Primeira Geração

    View full-size slide

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

    View full-size slide

  7. 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

    View full-size slide

  8. 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

    View full-size slide

  9. 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

    View full-size slide

  10. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  13. 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.

    View full-size slide

  14. 2020 © Engineering
    www.eng.it
    Engineering Ingegneria Informatica SpA
    @EngineeringSpa
    gruppo.engineering
    LifeAtEngineering
    14
    Autônomo
    Configurado
    Dinamicamente
    Leve

    View full-size slide

  15. 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.)

    View full-size slide

  16. 2020 © Engineering
    www.eng.it
    Engineering Ingegneria Informatica SpA
    @EngineeringSpa
    gruppo.engineering
    LifeAtEngineering
    16
    Base no TCP/UDP - Filtros

    View full-size slide

  17. 2020 © Engineering
    www.eng.it
    Engineering Ingegneria Informatica SpA
    @EngineeringSpa
    gruppo.engineering
    LifeAtEngineering
    SOLUÇÕES
    17

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  22. 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

    View full-size slide

  23. 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/

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  26. 2020 © Engineering
    www.eng.it
    Engineering Ingegneria Informatica SpA
    @EngineeringSpa
    gruppo.engineering
    LifeAtEngineering
    26
    https://www.brendangregg.com/ebpf.html

    View full-size slide

  27. 2020 © Engineering
    www.eng.it
    Engineering Ingegneria Informatica SpA
    @EngineeringSpa
    gruppo.engineering
    LifeAtEngineering
    SOLUÇÕES
    27

    View full-size slide

  28. 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

    View full-size slide

  29. 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

    View full-size slide

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

    View full-size slide

  31. 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

    View full-size slide

  32. 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

    View full-size slide