Conceitos Iniciais
O que é streaming de eventos?
Imagine que o streaming de eventos é como o sistema nervoso do seu corpo digital. Assim como seus nervos captam sinais de todo o corpo e os enviam ao cérebro para processamento, o streaming de eventos captura informações de várias fontes em tempo real.
O que é na prática?
É uma forma de coletar, mover e analisar dados enquanto eles acontecem:
- Coleta: Captura informações em tempo real de:
- Bancos de dados
- Sensores e dispositivos
- Aplicativos e sites
- Serviços na nuvem
- etc
- Transporte: Move esses dados imediatamente (como uma esteira transportadora digital)
- Processamento: Analisa ou reage a esses dados instantaneamente ou mais tarde.
Por que é importante?
- Negócios "always-on": Permite que empresas funcionem e respondam 24/7
- Automação: Softwares podem reagir a outros softwares automaticamente
- Decisões rápidas: Fornece informações no momento certo para ação imediata
Exemplo prático:
Quando você usa um app de transporte por aplicativo:
- O app do motorista envia continuamente sua localização (eventos)
- O sistema de streaming processa esses eventos
- Seu app recebe atualizações em tempo real sobre a localização do motorista
- sistema pode reagir automaticamente (roteamento, preços, etc.)
O streaming de eventos garante que todas essas peças de informação fluam constantemente, permitindo que tudo funcione de forma suave e conectada.
O Kafka combina três recursos principais para implementar casos de uso para streaming de eventos de ponta a ponta com uma única solução testada em batalha:
- Publicação (producer) e consumo (consumer) de fluxos de eventos, incluindo importação/exportação contínua de dados de outros sistemas.
- Armazenamento durável e confiável de fluxos de eventos pelo tempo desejado.
- Processamento de fluxos de eventos à medida que ocorrem ou retrospectivamente.
Toda essa funcionalidade é fornecida de maneira distribuída, altamente escalável, elástica, tolerante à falhas e segura.
Vantagens no uso do kafka
- Os dados são publicados apenas uma vez.
- Os consumidores interessados nos dados podem assinar e consumir o que lhes interessa.
- Produtores e consumidores são desacoplados, podendo trabalhar em ritmos diferentes.
- Os consumidores podem ler dados mais de uma vez.
- A indisponibilidade do produtor não afeta o processo.
- Alta disponibilidade e capacidade com recursos de cluster e particionamento.
Se o kafka fosse escalado verticalmente, surgiriam problemas como:
- Necessidade de interrupção para upgrade.
- Limite pequeno de escala.
- Requer configurações complexas.
- Problemas de incompatibilidade.
O que abordar nesse estudo?
Desenvolvimento
O Kafka oferece bibliotecas para a utilização de funções em praticamente todas as linguagens.
Um dos principais players que desenvolvem e até oferecem o Kafka como serviço é a Confluent.
Veja aqui uma lista de bibliotecas e encontre a linguagem desejada, inclusive com exemplos de código para uso.
Devops
Aqui é o foco principal do nosso estudo:
- Compreender a arquitetura do Kafka e provisioná-lo da melhor maneira possível.
- Entender os limites e qual configuração seria ideal para cada cenário.
- Gerenciar tópicos e permissões de acesso através de RBAC.
- Disponibilizar as ferramentas necessárias para que os desenvolvedores consigam fazer seu trabalho de forma fácil e objetiva, podendo debugar seus payloads de produção e consumo.