Save 37% off PRO during our Black Friday Sale! »

Redescobrindo o Papel do Apache Kafka em Arquiteturas de Dados Modernas

Redescobrindo o Papel do Apache Kafka em Arquiteturas de Dados Modernas

Apresentação feita na conferência Big Data Week (edição São Paulo) em 02 de Novembro de 2019.

http://sao-paulo.bigdataweek.com/speaker/ricardo-ferreira

02ff2dde723b6e26f4ef03ee6b3f6eb9?s=128

Ricardo Ferreira

November 02, 2019
Tweet

Transcript

  1. Redescobrindo o papel do apache kafka® em arquiteturas de dados

    modernas @riferrei | @confluentinc | @bdwspbr
  2. Quem sou eu?

  3. @riferrei | @confluentinc | @itau

  4. Developer advocate

  5. @riferrei | @confluentinc | @itau @riferrei @riferrei @riferrei https://riferrei.net Ricardo@confluent.io

  6. @riferrei | @confluentinc | @itau O que é apache kafka?

  7. @riferrei | @confluentinc | @itau O apache kafka é um

    distributed streaming platform
  8. @riferrei | @confluentinc | @itau

  9. @riferrei | @confluentinc | @itau

  10. @riferrei | @confluentinc | @itau

  11. @riferrei | @confluentinc | @itau O que são streams?

  12. None
  13. @riferrei | @confluentinc | @itau Streams são eventos infinitos

  14. @riferrei | @confluentinc | @itau Um distributed streaming platform é

    usado para unificar armazenamento e computação
  15. @riferrei | @confluentinc | @itau

  16. Vamos voltar no tempo?

  17. Banco de dados há 30 anos atrás

  18. Desenvolvedor cheio de expectativas Banco de dados hoje em dia…

  19. @riferrei | @confluentinc | @itau Qual o Problema dos bancos

    de dados?
  20. Muito limitado! Faz muita lambança!

  21. Limitado? Tá querendo me sacanear?

  22. Por quê você acha que a gente faz cargas batch

    para o dwh? Sim, limitado.
  23. lambança Linha de negócio 01 Linha de negócio 02 Linha

    de negócio 03
  24. @riferrei | @confluentinc | @itau Workarounds criados pela indústria

  25. None
  26. None
  27. nosql

  28. None
  29. @riferrei | @confluentinc | @itau Resultado…

  30. lambança Linha de negócio 01 Linha de negócio 02 Linha

    de negócio 03
  31. Vamos voltar no tempo?

  32. None
  33. Jay kreps Neha narkhede Jun rao

  34. Banco de dados Aplicação web Aplicação web Primeira versão do

    linkedin
  35. @riferrei | @confluentinc | @itau Evento estado > Eu Mudei

    meu empredo da oracle para a confluent Eu trabalho na confluent
  36. @riferrei | @confluentinc | @itau Mudança de emprego Máquina de

    sugestões Sistema de buscas Serviço de email
  37. @riferrei | @confluentinc | @itau SQL SQL SQL Máquina de

    sugestões Sistema de buscas Serviço de email Bancos de dados são bons para guardar estado Banco de dados LOG
  38. @riferrei | @confluentinc | @itau Mas não lidam muito bem

    com grandes volumes Banco de dados 1000x mais volume Eventos não-transacionais Eventos transacionais LOG
  39. @riferrei | @confluentinc | @itau Tracking de usuários Aplicações de

    logs Métricas operacionais banco key/value banco key/value Banco de dados sql MICROSERviços ... HADOOP Elastic search grafana DATA WAREHOUSE REC. ENGINE SEARCH SECURITY EMAIL SOCIAL GRAPH
  40. @riferrei | @confluentinc | @itau conclusão: o uso de bancos

    de dados não era apropriado dado o problema a ser resolvido!
  41. @riferrei | @confluentinc | @itau LOG Tracking de usuários Aplicações

    de logs Métricas operacionais banco key/value banco key/value Banco de dados sql MICROSERviços ... HADOOP Elastic search grafana DATA WAREHOUSE REC. ENGINE SEARCH SECURITY EMAIL SOCIAL GRAPH
  42. @riferrei | @confluentinc | @itau Por quê não usar mensageria?

  43. @riferrei | @confluentinc | @itau LOG Tracking de usuários Aplicações

    de logs Métricas operacionais banco key/value banco key/value Banco de dados sql MICROSERviços ... HADOOP Elastic search grafana DATA WAREHOUSE REC. ENGINE SEARCH SECURITY EMAIL SOCIAL GRAPH Mensageria também não lida bem Com volume
  44. @riferrei | @confluentinc | @itau LOG Tracking de usuários Aplicações

    de logs Métricas operacionais banco key/value banco key/value Banco de dados sql MICROSERviços ... HADOOP Elastic search grafana DATA WAREHOUSE REC. ENGINE SEARCH SECURITY EMAIL SOCIAL GRAPH Mensageria não suporta persistência direito
  45. 45 banco 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 transacional durável Persistente Mantêm ordem replay rápido (baixa latência) O que está acontecendo agora? O que aconteceu no passado?
  46. 46 banco 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 Highly Scalable Durable Persistent Ordered Fast (Low Latency) O que está acontecendo agora? O que aconteceu no passado? transacional durável Persistente Mantêm ordem replay rápido (baixa latência) distributed streaming platform
  47. @riferrei | @confluentinc | @itau O apache kafka é um

    distributed streaming platform
  48. @riferrei | @confluentinc | @itau Por quê nínguem nunca me

    explicou isso antes?
  49. @riferrei | @confluentinc | @itau Você nunca entenderá o kafka

    Se você focar APENAS em mensageria
  50. 50 01 Mensageria bem feita 02 Processamento de eventos 03

    Sistema de armazenamento
  51. None
  52. @riferrei | @confluentinc | @itau 01 Mensageria bem feita

  53. “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
  54. @riferrei | @confluentinc | @itau Banco de dados 0 1

    2 3 4 5 6 7 8 LOG leituras escritas DESTINo sistema A (tempo = 2) DESTINo sistema b (tempo = 6) Banco de dados invertido: logs passam a ser mais importantes que tabelas
  55. @riferrei | @confluentinc | @itau novo registro Registro antigo offset

  56. @riferrei | @confluentinc | @itau Novo registro Registro antigo offset

  57. @riferrei | @confluentinc | @itau BROKER 1 BROKER 2 BROKER

    3 BROKER 4 TOPIC 1-PART 1 TOPIC 2-PART 3 TOPIC 3-PART 1 TOPIC 2-PART 1 TOPIC 5-PART 1 TOPIC 6-PART 1 TOPIC 1-PART 2 TOPIC 2-PART 4 TOPIC 3-PART 2 TOPIC 2-PART 2 TOPIC 5-PART 2 TOPIC 6-PART 2 CONSUmidor CONSUMidor CONSUmidor PRODUtor PRODutor PRODUtor Escalabilidade através de particionamento
  58. @riferrei | @confluentinc | @itau Maior volume de dados Graças

    ao uso Do page cache do Sistema operacional
  59. @riferrei | @confluentinc | @itau Menos uso de cpu e

    heap Através da api sendfile do linux
  60. @riferrei | @confluentinc | @itau 02 processamento de eventos

  61. http://cidrdb.org/cidr2015/Papers/CIDR15_Paper16.pdf Você realmente acha que você faz consultas em tabelas?

  62. 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
  63. @riferrei | @confluentinc | @itau 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
  64. @riferrei | @confluentinc | @itau 03 Sistema de armazenamento

  65. É… mas só um banco de dados consegue prover acid…

  66. A C I D Transações precisam ser ou tudo ou

    nada
  67. @riferrei | @confluentinc | @itau Api de transações para produtores

    Níveis de isolamento para consumidores aplicação
  68. @riferrei | @confluentinc | @itau A C I D Reinforçar

    invariantes que garantam consistência
  69. @riferrei | @confluentinc | @itau 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!
  70. @riferrei | @confluentinc | @itau Eventos em ordem por partição

  71. @riferrei | @confluentinc | @itau Schemas são apis

  72. @riferrei | @confluentinc | @itau Diga olá ao schema registry

    fonte destino
  73. @riferrei | @confluentinc | @itau A C I D Garantir

    acesso serial mesmo quando threads executam de forma concorrente
  74. @riferrei | @confluentinc | @itau Produzindo registros sem chave aplicação

    Registros serão escritos em várias partições diferentes
  75. @riferrei | @confluentinc | @itau Produzindo registros com chave Aplicação

    a Aplicação b Aplicação c Aplicação d
  76. @riferrei | @confluentinc | @itau A C I D Dados

    commitados devem permanecer assim mesmo em caso de falhas
  77. @riferrei | @confluentinc | @itau Lembra disso?

  78. @riferrei | @confluentinc | @itau Tolerância a falhas via replicação

  79. @riferrei | @confluentinc | @itau obrigado

  80. @riferrei | @confluentinc | @itau