{"id":2123,"date":"2025-07-16T09:30:00","date_gmt":"2025-07-16T09:30:00","guid":{"rendered":"https:\/\/mugnos-it.com\/?p=2123"},"modified":"2025-06-23T13:33:14","modified_gmt":"2025-06-23T13:33:14","slug":"kafka-101-quando-devo-usar-o-apache-kafka","status":"publish","type":"post","link":"https:\/\/mugnos-it.com\/pt\/kafka-101-quando-devo-usar-o-apache-kafka\/","title":{"rendered":"Kafka 101 &#8211; Quando devo usar o Apache Kafka?"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"2123\" class=\"elementor elementor-2123\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-12227d4f e-flex e-con-boxed e-con e-parent\" data-id=\"12227d4f\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3ae8de8 elementor-widget elementor-widget-text-editor\" data-id=\"3ae8de8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\n<p>Na \u00faltima Black Friday, um grande e-commerce enfrentou um problema cl\u00e1ssico: a equipe de marketing queria reagir em tempo real ao comportamento dos usu\u00e1rios \u2014 cada clique, cada carrinho abandonado, cada nova compra. S\u00f3 que o sistema era todo baseado em chamadas s\u00edncronas entre APIs.<\/p>\n\n\n\n<p>Resultado? Lentid\u00e3o, falhas intermitentes e uma sobrecarga que quase derrubou a plataforma.<\/p>\n\n\n\n<p>Foi ent\u00e3o que entraram com <strong>Apache Kafka<\/strong>: os eventos passaram a ser enviados para um t\u00f3pico, desacoplando os produtores dos consumidores. A plataforma de vendas seguiu leve, enquanto os times de marketing, recomenda\u00e7\u00e3o e analytics podiam processar os dados em tempo real, cada um no seu ritmo.<\/p>\n\n\n\n<p>Esse tipo de mudan\u00e7a s\u00f3 \u00e9 poss\u00edvel quando voc\u00ea conhece os padr\u00f5es certos e os trade-offs que v\u00eam com eles. \u00c9 exatamente isso que a gente ensina na Comunidade de Arquitetura Descomplicada (CaD) \u2014 construir ambientes resilientes, modernos e que escalam de verdade.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Por que usar o Apache Kafka?<\/h2>\n\n\n\n<p>O Kafka vai muito al\u00e9m de uma simples fila de mensagens. Ele \u00e9 uma plataforma de event streaming \u2014 ideal para capturar, processar, armazenar e distribuir eventos em larga escala, em tempo real.<\/p>\n\n\n\n<p>Voc\u00ea deve considerar o Kafka quando precisa de:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Desacoplamento<\/strong> entre sistemas produtores e consumidores;<\/li>\n\n\n\n<li><strong>Escalabilidade horizontal<\/strong> de leitura e escrita;<\/li>\n\n\n\n<li><strong>Persist\u00eancia dos eventos<\/strong> por horas, dias ou at\u00e9 indefinidamente;<\/li>\n\n\n\n<li><strong>Alta performance e resili\u00eancia<\/strong> em ambientes distribu\u00eddos.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kafka n\u00e3o \u00e9 s\u00f3 uma fila<\/h2>\n\n\n\n<p>Embora d\u00ea para usar o Kafka como fila, a compara\u00e7\u00e3o \u00e9 injusta. Ao contr\u00e1rio de filas tradicionais (como SQS, RabbitMQ ou MSMQ), o Kafka tem caracter\u00edsticas \u00fanicas:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"504\" height=\"222\" src=\"https:\/\/mugnos-it.com\/wp-content\/uploads\/2025\/06\/print-news-23-.-1.png\" alt=\"\" class=\"wp-image-2124\" srcset=\"https:\/\/mugnos-it.com\/wp-content\/uploads\/2025\/06\/print-news-23-.-1.png 504w, https:\/\/mugnos-it.com\/wp-content\/uploads\/2025\/06\/print-news-23-.-1-300x132.png 300w\" sizes=\"(max-width: 504px) 100vw, 504px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conceitos-chave do Kafka<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>&gt; Streaming<\/strong><\/h3>\n\n\n\n<p>Kafka \u00e9 ideal para processar eventos em tempo real: cliques, sensores, logs, compras, etc. Cada mensagem \u00e9 um <strong>record<\/strong>, que trafega em um <strong>t\u00f3pico<\/strong>. Por\u00e9m ele n\u00e3o \u00e9 s\u00f3 usado para isso. Ele tamb\u00e9m \u00e9 muito utilizado no lugar de filas para troca de mensagens entre dois microsservi\u00e7os.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>&gt; Distribu\u00eddo por natureza<\/strong><\/h3>\n\n\n\n<p>Kafka \u00e9 distribu\u00eddo: voc\u00ea configura m\u00faltiplos <strong>brokers<\/strong> (servidores) formando um cluster. Assim, ganha resili\u00eancia, performance e escala. A instala\u00e7\u00e3o \u00e9 f\u00e1cil e a cria\u00e7\u00e3o de t\u00f3picos tamb\u00e9m!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>&gt; Escalabilidade horizontal<\/strong><\/h3>\n\n\n\n<p>Voc\u00ea pode adicionar mais brokers, parti\u00e7\u00f5es e consumidores conforme o volume aumenta \u2014 sem refatorar tudo. Isso \u00e9 um grande diferencial\u2026 Existe tamb\u00e9m soluc\u00f5es como o AWS Apache Kafka que entrega um kafka j\u00e1 gerenciado.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>&gt; Persist\u00eancia e Durabilidade<\/strong><\/h3>\n\n\n\n<p>As mensagens (records) s\u00e3o armazenadas em disco por um per\u00edodo definido \u2014 desde minutos at\u00e9 dias. Isso permite o <strong>reprocessamento<\/strong> posterior via offset.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>&gt; Desacoplamento entre aplica\u00e7\u00f5es<\/strong><\/h3>\n\n\n\n<p>Produtores s\u00f3 se preocupam em enviar eventos. Consumidores se inscrevem nos <strong>t\u00f3picos<\/strong> que desejam \u2014 e o sistema roda mesmo que eles estejam offline.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Estrutura do Kafka<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>&gt; Brokers<\/strong><\/h3>\n\n\n\n<p>S\u00e3o os servidores onde o Kafka roda. Normalmente voc\u00ea tem um cluster com 3 ou mais brokers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>&gt; T\u00f3pico e Parti\u00e7\u00f5es<\/strong><\/h3>\n\n\n\n<p>Cada t\u00f3pico pode ter m\u00faltiplas <strong>parti\u00e7\u00f5es<\/strong> \u2014 que permitem <strong>paralelismo<\/strong> no processamento. A escrita \u00e9 distribu\u00edda entre parti\u00e7\u00f5es com base em round-robin ou chave definida.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>&gt; Records<\/strong><\/h3>\n\n\n\n<p>S\u00e3o as mensagens \u2014 os dados em si. Ficam armazenados nas parti\u00e7\u00f5es.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">&gt; <strong>Replication Factor<\/strong><\/h3>\n\n\n\n<p>Cada parti\u00e7\u00e3o pode ser replicada em v\u00e1rios brokers, garantindo alta disponibilidade. Ex: replication factor 3 = cada dado existe em 3 n\u00f3s diferentes.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">&gt; Leitura inteligente com offsets<\/h2>\n\n\n\n<p>Kafka n\u00e3o apaga a mensagem ap\u00f3s consumo. O que muda \u00e9 o <strong>offset<\/strong> \u2014 o ponteiro que diz at\u00e9 onde o consumidor j\u00e1 leu. Ou sej\u00e1, \u00e9 um index dizendo onde parou.. voc\u00ea pode facilmente muda-lo. Se um consumidor falhar, basta mover o offset para reler as mensagens.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>&gt;<\/strong> Consumer Groups<\/h2>\n\n\n\n<p>V\u00e1rios consumidores podem processar o mesmo t\u00f3pico <strong>em paralelo<\/strong>, desde que perten\u00e7am ao mesmo <strong>consumer group<\/strong>. Isso evita leitura duplicada e garante balanceamento autom\u00e1tico.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exemplo:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Consumer A1, A2, A3 \u2014 todos no grupo \u201cpagamentos\u201d<\/li>\n\n\n\n<li>Cada um recebe parti\u00e7\u00f5es diferentes do t\u00f3pico \u201cvendas\u201d<\/li>\n\n\n\n<li>Nada se repete, tudo paralelizado!<\/li>\n<\/ul>\n\n\n\n<p>E se um novo grupo entrar (ex: \u201crelat\u00f3rios\u201d), ele consome todas as mensagens desde o in\u00edcio \u2014 com seu pr\u00f3prio offset.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">&gt; Estrat\u00e9gia de distribui\u00e7\u00e3o<\/h2>\n\n\n\n<p>Voc\u00ea pode configurar parti\u00e7\u00f5es para refletir o neg\u00f3cio:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Clientes premium v\u00e3o pra parti\u00e7\u00f5es exclusivas<\/li>\n\n\n\n<li>Servi\u00e7os sens\u00edveis recebem mais r\u00e9plicas<\/li>\n\n\n\n<li>Pode aplicar sharding por regi\u00e3o, plano, etc.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\ude80 Conclus\u00e3o<\/h2>\n\n\n\n<p>O Apache Kafka \u00e9 muito mais do que uma fila de mensagens. \u00c9 um pilar para arquiteturas modernas, desacopladas, escal\u00e1veis e resilientes.<\/p>\n\n\n\n<p>Mas lembre-se: com grande poder vem grande responsabilidade. Kafka traz complexidade \u2014 e n\u00e3o \u00e9 a melhor escolha para todos os cen\u00e1rios. as vezes um simples servico de mensageria \u00e9 o suficiente.<\/p>\n\n\n\n<p>Saber <strong>quando usar<\/strong> (e quando n\u00e3o usar) \u00e9 o que separa arquiteturas sustent\u00e1veis de solu\u00e7\u00f5es improvisadas.<\/p>\n\n\n\n<p>E \u00e9 esse tipo de decis\u00e3o, com base t\u00e9cnica e vis\u00e3o de longo prazo, que a gente ensina e discute o tempo todo na Comunidade de Arquitetura Descomplicada (CaD).<\/p>\n\n\n\n<p>\ud83d\udc49 <a href=\"https:\/\/mugnos-it.com\/pt\/cad\/\">Quer aprender mais sobre isso? Conhe\u00e7a o CaD agora<\/a><\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-de6d3b1 e-flex e-con-boxed e-con e-parent\" data-id=\"de6d3b1\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Na \u00faltima Black Friday, um grande e-commerce enfrentou um problema cl\u00e1ssico: a equipe de marketing queria reagir em tempo real ao comportamento dos usu\u00e1rios \u2014 cada clique, cada carrinho abandonado, cada nova compra. S\u00f3 que o sistema era todo baseado em chamadas s\u00edncronas entre APIs. Resultado? Lentid\u00e3o, falhas intermitentes e uma sobrecarga que quase derrubou [&hellip;]<\/p>","protected":false},"author":3,"featured_media":2125,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2123","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/mugnos-it.com\/wp-content\/uploads\/2025\/06\/ChatGPT-Image-23-de-jun.-de-2025-08_29_53-1.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts\/2123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/comments?post=2123"}],"version-history":[{"count":4,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts\/2123\/revisions"}],"predecessor-version":[{"id":2129,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts\/2123\/revisions\/2129"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/media\/2125"}],"wp:attachment":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/media?parent=2123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/categories?post=2123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/tags?post=2123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}