Utilizo o apache kafka no trabalho e tenho estudado ele por conta nos últimos dias. Gostando bastante inclusive.
Porém, fiquei pensando que, além do lugar onde trabalho, não trabalhei em nenhum outro lugar onde essa ferramenta é usada. Por isso gostaria de perguntar: Alguém aqui do GUJ trabalha em alguma empresa que também usa o Apache Kafka? Se sim, como está sendo a experiência na sua utilização? Tem sido satisfatória? Algum problema que ele não tenha resolvido? Ou alguma experiência no uso que gostariam de compartilhar?
Na empresa que eu trabalho temos a ferramenta adotada, porém ela atende alguns propósitos específicos dentro da empresa em relação aos produtos que temos, infelizmente eu ainda não tive contato com a mesma, mas geralmente durante aquele cafézinho onde a gente troca algumas figurinhas com a galera sempre tenho ouvidos bons feedbacks sobre o apache kafka.
Se quiser compartilhar como tem sido a sua experiência com a ferramenta eu gostaria de saber!
Então, onde trabalho, a arquitetura é de microserviço e a comunicação entre eles é via rest, porém, aos poucos, está sendo feito por meio de eventos com o kafka. A ideia ainda está amadurecendo. SInto falta de uma ferramenta para monitorar, por isso estou estudando ela melhor.
Uma coisa que fico pensando eh qual seria a melhor prática durante o desenvolvimento com o kafka. Se eh melhor cada um subir um servidor local, ou se há uma boa forma de compartilhar o mesmo servidor kafka (como o do ambiente comum de desenvolvimento mesmo). Por exemplo, quando estamos trabalhando numa funcionalidade que envolve eventos do kafka num microserviço e vamos testar, o evento as vezes é consumido por outra maquina em que já tenha uma versão com o consumidor deste mesmo evento, e isso atrapalha um pouco, pois eh preciso que o evento caia na maquina em que o desenvolvimento está acontecendo.
Legal, nos produtos que tenho atuado até o momento estamos utilizando SNS e SQS, e nesse quesito temos recursos distintos por ambiente, dev, hom, prod, os mesmos são identificados com as mesmas siglas de cada ambiente.
No caso do nosso ambiente de dev a gente não possuí nenhum micro serviço em execução, dado isso o consumo dos eventos publicados se dá através da execução local direcionada apontando para este ambiente, porém se mais de uma pessoa apontar para o mesmo recurso enfrentamos o mesmo problema de concorrência.
Na empresa em que trabalhei anteriormente utilizamos o RabbitMQ, e já com esse cara conseguíamos individualizar o consumo dos eventos por pessoa pois ele foi estruturado no formato multi-tenant, aí os consumidores buscavam os eventos tendo como chave de consumo o tenant da mensagem.
SNS e SQS são recursos da AWS para trabalhar com mensageria em micro-serviços.
Na verdade o RabbitMQ foi um cara que possibilitou e facilitou que fosse estruturado este ambiente multi-tenant, porém o principal recurso que foi a chave para construir isso foi o WSO2, casando as duas ferramentas conseguimos chegar nesse nível de individualidade no ambiente.