No mundo atual, dados em tempo real estão sendo continuamente gerados por todos os tipos de aplicativos (ERP, CRM, Web Sites, Mídias Sociais, Vídeos, Logs, Sensores e muito mais) e estes dados precisam estar disponíveis de forma confiável e rápida para diferentes tipos de receptores. Na maioria das vezes, as aplicações que produzem os dados e as aplicações que precisam receber estes dados, não “conversam” umas com as outras. Estas aplicações heterogêneas, requerem algum tipo de desenvolvimento para que exista uma integração entre elas. E com o aumento do volume de dados, isso se torna um ponto ainda mais crítico.
Com a explosão do Big Data, o primeiro desafio é coletar a imensa quantidade de dados e o segundo desafio, analisar tudo isso. Analytics é frequentemente apontando como um dos maiores desafios associados com Big Data, mas antes da análise acontecer, os dados devem ser ingeridos e disponibilizados para os usuários. É onde entra o Apache Kafka.
O Apache Kafka foi originalmente desenvolvido pelo LinkedIn e posteriormente liberado como um projeto open-source, em 2011. O Apache Kafka é um sistema para gerenciamento de fluxos de dados em tempo real, gerados a partir de web sites, aplicações e sensores. Algumas das empresas que usam Kafka: LinkedIn, Netflix, PayPal, Spotify, Uber, AirBnB, Cisco, Goldman Sachs e SalesForce. Recentemente a IBM anunciou a criação de dois projetos envolvendo o Apache Kafka. O LinkedIn possui o maior ambiente Kafka do qual se tem notícia, com 1.1 trilhões de mensagens por dia.
Essencialmente, o Kafka age como uma espécie de “sistema nervoso central”, que coleta dados de alto volume como por exemplo a atividade de usuários (clicks em um web site), logs, cotações de ações etc… e torna estes dados disponíveis como um fluxo em tempo real para o consumo por outras aplicações. O Kafka vem ganhando cada vez mais popularidade em Big Data pois além de ser um projeto open-source de alta qualidade, possui a capacidade de lidar com fluxos de alta velocidade de dados, característica cada vez mais procurada para uso em Internet das Coisas, por exemplo.
O Apache Kafka foi desenvolvido com um propósito específico em mente: servir como um repositório central de fluxos de dados. Mas por que fazer isso? Havia duas motivações.
O primeiro problema foi a forma de transportar dados entre diversos sistemas de dados: bancos de dados OLTP (relacional), Hadoop, sistema de busca, sistemas de monitoramento, OLAP (DW), etc… Cada um destes sistemas, necessita de dados confiáveis, em um ambiente em que os sistemas poderão estar geograficamente distribuídos. Esta foi a primeira motivação para o Kafka: a integração dos dados.
A segunda parte do problema era a necessidade de enriquecer as análises de dados, reduzindo a latência (basicamente, o tempo de espera). Esta foi a segunda motivação: processamento de fluxo de dados, o que alguns podem chamar de “mensagens” ou CEP (Complex Event Processing).
Ou seja, o Kafka tem ajudado a resolver algumas das principais limitações do Big Data e da Internet das Coisas e por isso tem se tornado tão popular.
Kafka funciona em conjunto com o Apache Storm, Apache HBase e Apache Spark, criando um plataforma de análise em tempo real para streaming de dados, praticamente única. Mas o Kafka possui alguns concorrentes, como: IBM InfoSphere Streams, Informatica’s Ultra Messaging Streaming Edition, SAS’s Event Stream Processing Engine (ESP), Tibco’s StreamBase e SAP’s Aleri. Competidores menores incluem: DataTorrent, Splunk, Loggly, Logentries e Glassbeam. Recentemente a Teradata anunciou o Listener, solução baseada no Kafka.
O Apache Kafka está ajudando a mudar a forma como os dados são usados dentro das empresas. Não faz mais sentido falar apenas em dados armazenados em tabelas, com linhas e colunas. O volume de dados agora é tão grande, que os dados precisam ser vistos como o que realmente são: um fluxo constante, que precisa ser analisado em tempo real.
Todas as grandes empresas do mundo estão caminhando a passos largos rumo ao Big Data, Análise de Dados em Tempo Real e Internet das Coisas. E você, qual direção está seguindo?
David Matos
Referências:
Melhora a letra ou o fundo do blog do post, a leitura do blog está meio ruim para ler. De resto, muito bom conteúdo! 😀
Oi Alex. Obrigado pelo feedback. Vou dar uma olhada na questão da fonte e background. Abs. David.
Excelente artigo.
Oi Cleyton, muito obrigado.
Legal o artigo.
Tens como colocar exemplos de uso?
Vi o apache kafka sugerido como solução para a comunicação entre APIs de microserviços.
Oi Claiton. Obrigado pelo feedback. Sim, em breve publico exemplos de uso do kafka. Abs
Olá.
Gostei bastante do seu artigo. Deixa bem claro o motivo da criação dele e quais os problemas que impulsonaram o desenvolvimento.
Parabens
Valeu Lazaro. Muito obrigado! Abs
Gostei do artigo, estou estudando Kafka…
Valeu. Muito obrigado!
Cara, gostei muito do artigo, claro, conciso, direto, e *simples*, algo que estou aprendendo que é uma virtude cardeal no campo de Data Science, aonde estou querendo ingressar, e para o qual estou estudando, razão pela qual cheguei aqui.
O conceito de monitoramento de dados em tempo real ficou muito didático, meus parabéns pelo bom trabalho, deixou uma marca em mim.
Valeu George. Muito obrigado!