#100DaysOfCode com Apache Kafka

Essa é uma iniciativa que não vou conseguir fazer todo dia, mas será o desafio que coloco para quem quiser. Vou preparar um roteiro e quem for seguindo pode me marcar e marcar @dev_roadmap para acompanhar o progresso.

Regras

  1. Escrever código ao menos por 1 hora nos próximos 100 dias
  2. Tweetar seu progresso usando as tags #100DaysOfCode, #ApachaKafka ou #100DaysOfKafka

A primeira regra eu vou suavizar porque eu mesmo não consigo (quem tem filhos entende) reservar 1h por dia todo dia.

Aceite o desafio publicamente

Ao aceitar o desafio, compartilha no Twitter.

Recomendações

  1. Tente usar Java, apesar de Kafka ter APIs em outras linguagens, a API Java é a mais rica!
  2. Se for usar Java, use Maven
  3. Se usa Windows, recomendo usar Git Bash, vai te possibilitar usar o Bash ao invés do CMD do Windows.
  4. Se o SDKMan, vai te possibilitar instalar o Maven e qualquer versão de Java que você quiser.

Roteiro

  • Dia 001 - Instale o Apache Kafka (escreva um Dockerfile, ou instale ele localmente) [1]
  • Dia 002 - Crie um produtor simples que envia um arquivo texto para um tópico, cada linha deve ser uma mensagem [2]
  • Dia 003 - Crie um consumidor simples que lê as mensagens de um tópico [3]
  • Dia 004 - Altere o seu produtor para enviar um POJO usando um serializador JSON que você mesmo escreveu. Use Jackson
  • Dia 005 - Altere seu consumidor para receber um POJO usando um desserializador JSON que você mesmo escreveu. Use Jackson
  • Dia 006 - Crie um nome consumidor com um novo group.id e veja como os dois consumidores funcionam em paralelo.
  • Dia 007 - Adicione ao menos mais uma instância do Kafka e tente conectar no cluster, não somente em um broker.
  • Dia 008 - Explore os scripts kafka-topics e kafka-consumer-groups. Se você usa docker eles estão dentro do seu container, se usa local estão na pasta bin do Kafka.
  • Dia 009 - Altere as configurações do seu tópico, adicione mais partições e mude o fator de replicação. Verifique as possiblidades. [4]
  • Dia 010 - Rode mais de uma instância do mesmo consumidor para um tópico com mais de uma partição e veja como funciona.
  • Dia 011 - Crie um Stream para remover resultados duplicados de temperaturas usando as informações do Dia 004
  • Dia 012 - Crie um Stream para fazer a média móvel das temperaturas da última hora
  • Dia 013 - Crie um Stream para fazer a estatística de temperatura máxima e mínima do dia
  • Dia 014 - Crie um Stream para fazer a média de temperatura de um país na última hora
  • Dia 015 - Substitua o producer do Dia 004 por um Source Connector
  • Dia 016 - Escolha um Skin Connector no Confluent Hub e use para os dados dos dias 011 a 014.
  • Dia 017 - Adicione o Schema Registry no produtor do Dia 004
  • Dia 018 - Altere o produtor do Dia 004 para usar AVRO
  • Dia 019 - Altere o produtor do Dia 004 para usar Protobuf
  • Dia 020 - Altere o produtor do Dia 004 para que todas as chaves próximas sema agrupadas na mesma partição.
  • (...)