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

Distributed Streaming Platforms em Arquiteturas Modernas com Apache Kafka

Distributed Streaming Platforms em Arquiteturas Modernas com Apache Kafka

Ricardo Ferreira

August 24, 2019
Tweet

More Decks by Ricardo Ferreira

Other Decks in Programming

Transcript

  1. TECNOLOGIAS
    Distributed Streaming
    Platforms em Arquiteturas
    Modernas com Apache Kafka®
    Ricardo Ferreira

    View full-size slide

  2. Sobre mim:
    ● Ricardo Ferreira
    ❑ Developer Advocate @
    Confluent
    ❑ Ex-Oracle, Red Hat,
    squadra tecnologia
    [email protected]
    [email protected]
    ❑ https://riferrei.net
    @riferrei

    View full-size slide

  3. @riferrei | @Devisland | @CONFLUENTINC
    pergunta:
    o que é um distributed
    streaming platform?

    View full-size slide

  4. @riferrei | @devisland | @CONFLUENTINC
    ? ? ?

    View full-size slide

  5. @riferrei | @devisland | @CONFLUENTINC
    Vamos voltar
    no tempo?

    View full-size slide

  6. @riferrei | @devisland | @CONFLUENTINC
    databases 30 anos atrás…
    você está me envergonhando na frente
    dos magos…
    Databases hoje em dia

    View full-size slide

  7. @riferrei | @Devisland | @CONFLUENTINC
    Qual o Problema
    dos databases?

    View full-size slide

  8. @riferrei | @devisland | @CONFLUENTINC
    Muito
    limitado!
    Faz muita
    lambança!

    View full-size slide

  9. @riferrei | @devisland | @CONFLUENTINC
    Limitado?
    Tá querendo
    me sacanear?

    View full-size slide

  10. @riferrei | @devisland | @CONFLUENTINC
    Por quê você acha que
    a gente faz cargas
    batch para o dwh?
    Sim…
    limitado.

    View full-size slide

  11. @riferrei | @devisland | @CONFLUENTINC
    Desenvolvedor mantendo
    o batch funcionando...
    …Enquanto o modelo de
    dados fica mudando…

    View full-size slide

  12. @riferrei | @devisland | @CONFLUENTINC
    lambança
    Linha de negócio 01 Linha de negócio 02 Linha de negócio 03

    View full-size slide

  13. @riferrei | @devisland | @CONFLUENTINC
    Eita que
    diagrama
    bunito...
    Um Monte de
    licença pra
    vender!

    View full-size slide

  14. @riferrei | @Devisland | @CONFLUENTINC
    Workarounds
    da indústria

    View full-size slide

  15. @riferrei | @devisland | @CONFLUENTINC

    View full-size slide

  16. @riferrei | @devisland | @CONFLUENTINC
    nosql

    View full-size slide

  17. @riferrei | @devisland | @CONFLUENTINC

    View full-size slide

  18. @riferrei | @Devisland | @CONFLUENTINC
    Resultado…

    View full-size slide

  19. @riferrei | @devisland | @CONFLUENTINC
    lambança
    Linha de negócio 01 Linha de negócio 02 Linha de negócio 03

    View full-size slide

  20. @riferrei | @devisland | @CONFLUENTINC
    Another day...
    Another doug

    View full-size slide

  21. @riferrei | @devisland | @CONFLUENTINC
    Vamos voltar
    no tempo?

    View full-size slide

  22. @riferrei | @devisland | @CONFLUENTINC

    View full-size slide

  23. @riferrei | @devisland | @CONFLUENTINC
    Jay kreps Neha narkhede Jun rao

    View full-size slide

  24. @riferrei | @devisland | @CONFLUENTINC

    View full-size slide

  25. 25
    ETL/integração de dados mensageria
    Batch
    Caro de manter
    Lento demais
    Difícil de escalar
    Não têm durabilidade
    Não têm persistência
    não possui ordem
    Não possui replay
    Super escalável
    durável
    Persistente
    Mantêm ordem
    replay
    rápido (baixa
    latência)
    O que está acontecendo
    agora?
    O que aconteceu no
    passado?

    View full-size slide

  26. 26
    ETL/integração de dados mensageria
    Batch
    Caro de manter
    Consome tempo
    Difícil de escalar
    Não têm durabilidade
    Não têm persistência
    não possui ordem
    Não possui replay
    Highly Scalable
    Durable
    Persistent
    Ordered
    Fast (Low Latency)
    O que está acontecendo
    agora?
    O que aconteceu no
    passado?
    Super escalável
    durável
    Persistente
    Mantêm ordem
    replay
    rápido (baixa
    latência)
    streaming platform

    View full-size slide

  27. @riferrei | @Devisland | @CONFLUENTINC
    pergunta:
    o que é um distributed
    streaming platform?

    View full-size slide

  28. 28
    01
    Mensageria
    bem feita
    02
    Processamento
    de eventos
    03
    Sistema de
    armazenamento
    @riferrei | @devisland | @CONFLUENTINC

    View full-size slide

  29. @riferrei | @Devisland | @CONFLUENTINC
    01
    Mensageria
    bem feita

    View full-size slide

  30. @riferrei | @devisland | @CONFLUENTINC
    http://cidrdb.org/cidr2015/Papers/CIDR15_Paper16.pdf
    Você realmente acha
    que você faz consultas
    em tabelas?

    View full-size slide

  31. @riferrei | @devisland | @CONFLUENTINC
    Dualidade entre streams e tabelas
    {"user":"riferrei","score":"1001"}
    {"user":"riferrei","score":"1002"}
    {"user":"riferrei","score":"1003"}
    {"user":"riferrei","score":"1004"}
    {"user":"riferrei","score":"1005"}
    {"user":"riferrei","score":"1005"}
    stream
    tabela

    View full-size slide

  32. @riferrei | @devisland | @CONFLUENTINC
    “The truth is the log.
    The database is a cache
    of a subset of the log.”
    — pat helland
    Immutability changes everything
    http://cidrdb.org/cidr2015/Papers/CIDR15_Paper16.pdf

    View full-size slide

  33. @riferrei | @devisland | @CONFLUENTINC
    Logs são simples!

    View full-size slide

  34. @riferrei | @devisland | @CONFLUENTINC
    O(1) ao invés
    de o(log n)
    Graças ao uso
    Do Sistema de
    arquivos

    View full-size slide

  35. @riferrei | @devisland | @CONFLUENTINC
    Maior
    volume de
    dados
    Graças ao uso
    Do page cache do
    Sistema operacional

    View full-size slide

  36. @riferrei | @devisland | @CONFLUENTINC
    Menos uso de
    cpu e heap
    Através da api
    sendfile do linux

    View full-size slide

  37. @riferrei | @Devisland | @CONFLUENTINC
    02
    processamento
    de eventos

    View full-size slide

  38. @riferrei | @devisland | @CONFLUENTINC
    O que é processamento de eventos?
    ?
    Tentativa de fraude possível fraude

    View full-size slide

  39. @riferrei | @devisland | @CONFLUENTINC
    O que é processamento de eventos?
    CREATE STREAM possible_fraud AS
    SELECT card_number, count(*)
    FROM authorization_attempts
    WINDOW TUMBLING (SIZE 5 MINUTE)
    GROUP BY card_number
    HAVING count(*) > 3;
    Tentativa de fraude possível fraude
    tópico tópico

    View full-size slide

  40. @riferrei | @Devisland | @CONFLUENTINC
    03
    Sistema de
    armazenamento

    View full-size slide

  41. @riferrei | @devisland | @CONFLUENTINC
    Meh… mas só um
    database te dá
    acid…

    View full-size slide

  42. @riferrei | @devisland | @CONFLUENTINC
    A C I D
    Transações precisam
    ser ou tudo ou nada

    View full-size slide

  43. @riferrei | @devisland | @CONFLUENTINC
    Api de transações
    para produtores
    Níveis de isolamento
    para consumidores
    aplicação

    View full-size slide

  44. @riferrei | @devisland | @CONFLUENTINC
    A C I D
    Reinforçar invariantes
    que garantam consistência

    View full-size slide

  45. @riferrei | @devisland | @CONFLUENTINC
    Propriedades do Produtor
    enable.idempotence=true
    max.inflight.requests.per.connection=1
    acks = “all”
    retries > 0 (preferably MAX_INT)
    (pid, seq) [payload]
    (100, 1) {key: 1234, data: abcd} - offset 3345
    (100, 1) {key: 1234, data: abcd} - rejected, ack re-sent
    (100, 2) {key: 5678, data: efgh} - offset 3346
    Sem duplicação!

    View full-size slide

  46. @riferrei | @devisland | @CONFLUENTINC
    Eventos em ordem por partição

    View full-size slide

  47. @riferrei | @devisland | @CONFLUENTINC
    Schemas são apis

    View full-size slide

  48. @riferrei | @devisland | @CONFLUENTINC
    Diga olá ao schema registry

    View full-size slide

  49. @riferrei | @devisland | @CONFLUENTINC
    A C I D
    Garantir acesso serial mesmo
    quando threads executam de
    forma concorrente

    View full-size slide

  50. @riferrei | @devisland | @CONFLUENTINC
    Produzindo registros sem chave
    aplicação
    Registros serão
    escritos em várias
    partições diferentes

    View full-size slide

  51. @riferrei | @devisland | @CONFLUENTINC
    Produzindo registros com chave
    Aplicação a
    Aplicação b
    Aplicação c
    Aplicação d

    View full-size slide

  52. @riferrei | @devisland | @CONFLUENTINC
    A C I D
    Dados commitados devem
    permanecer assim mesmo
    em caso de falhas

    View full-size slide

  53. @riferrei | @devisland | @CONFLUENTINC
    Lembra
    disso?

    View full-size slide

  54. @riferrei | @devisland | @CONFLUENTINC
    Tolerância a falhas via replicação

    View full-size slide

  55. @riferrei | @Devisland | @CONFLUENTINC
    demo

    View full-size slide

  56. @riferrei | @Devisland | @CONFLUENTINC
    LIVROS DE APACHE KAFKA (by CONFLUENT)
    https://www.confluent.io/apache-kafka-stream-processing-book-bundle

    View full-size slide

  57. @riferrei | @devisland | @CONFLUENTINC

    View full-size slide