top of page
pedrobusko

Quando NÃO escolher o Amazon MSK Serverless para Apache Kafka?

Este é um artigo traduzido originalmente publicado dia 30/8/2022 no blog do Kai Waehner: "When NOT to choose Amazon MSK Serverless for Apache Kafka?". Assine a newsletter do Kai para se manter atualizado com novas publicações.


O Apache Kafka tornou-se o padrão de fato para streaming de dados. Várias ofertas de nuvem surgiram e melhoraram nos últimos anos. O Amazon MSK Serverless é o produto Kafka mais recente da AWS. Esta postagem de blog analisa seus recursos para explorar como ele se relaciona com o Amazon MSK parcialmente gerenciado “normal”, quando a versão serverless é uma boa escolha e quando outros serviços de nuvem totalmente gerenciados, como o Confluent Cloud, são a melhor opção.

 

O Apache Kafka tornou-se o padrão de fato para streaming de dados. Várias ofertas de nuvem surgiram e melhoraram nos últimos anos. O Amazon MSK Serverless é o produto Kafka mais recente da AWS. Esta postagem de blog analisa seus recursos para explorar como ele se relaciona com o Amazon MSK parcialmente gerenciado “normal”, quando a versão serverless é uma boa escolha e quando outros serviços de nuvem totalmente gerenciados, como o Confluent Cloud, são a melhor opção.



Isenção de responsabilidade : eu trabalho para a Confluent. Embora a AWS seja um forte parceiro estratégico, ela também oferece a oferta competitiva Amazon MSK. Este post não é sobre comparar todos os recursos, mas explicar os conceitos por trás das alternativas. Leia artigos e documentos de diferentes fornecedores para fazer sua própria avaliação e decisão. Veja este post como uma lista de critérios para não esquecer aspectos importantes na seleção do seu serviço de nuvem.


O que é uma oferta de nuvem Kafka totalmente gerenciada?


Antes de começarmos a olhar para os serviços de nuvem Kafka, como Amazon MSK e Confluent Cloud, é importante entender o que realmente significa totalmente gerenciado:



Certifique-se de avaliar a solução técnica. A maioria das soluções de nuvem Kafka comercializa sua oferta como “totalmente gerenciada”. No entanto, quase todas as ofertas de nuvem Kafka são gerenciadas apenas parcialmente! Na maioria dos casos, o cliente deve operar a infraestrutura Kafka, corrigir bugs e otimizar a escalabilidade e o desempenho.

Apache Kafka nativo da nuvem reprojetado para a nuvem

A operação do Apache Kafka como uma oferta totalmente gerenciada na nuvem requer vários componentes adicionais para o núcleo do Kafka de código aberto. Um Kafka SaaS nativo da nuvem tem recursos como:

  • A versão estável mais recente com atualizações contínuas sem interrupções

  • Escala elástica (para cima e para baixo!)

  • Clusters de autobalanceamento que assumem a complexidade e o risco de rebalancear partições entre os agentes Kafka

  • Armazenamento hierárquico para armazenamento econômico de longo prazo e melhor escalabilidade (já que o armazenamento frio não requer um rebalanceamento de partições e outras tarefas de operações complexas)

  • Solução completa “no topo da infraestrutura”, incluindo conectores, processamento de fluxo, segurança e governança de dados – tudo em um único SaaS totalmente gerenciado

Para saber mais sobre como criar um serviço Kafka nativo da nuvem, recomendo a leitura do seguinte artigo: ” The Cloud-Native Chasm: Lessons Learned from Reinventing Apache Kafka as a Cloud-Native, Online Service ”.


Comparação de produtos Apache Kafka e serviços em nuvem


O Apache Kafka tornou-se o padrão de fato para streaming de dados. A comunidade de código aberto é vasta. Vários fornecedores adicionaram Kafka e ferramentas relacionadas às suas ofertas ou forneceram um serviço de nuvem Kafka. Escrevi uma postagem no blog em 2021 : “ Comparação do Apache Kafka de código aberto versus fornecedores, incluindo Confluent, Cloudera, Red Hat, Amazon MSK “:



O artigo usa uma analogia do carro – do motor ao carro autônomo – para explorar as diferentes ofertas Kafka disponíveis no mercado . Também abordo alguns outros veículos, ou seja, tecnologias (parcialmente) compatíveis com Kafka. O objetivo não é uma comparação recurso por recurso (que ficaria desatualizado no dia seguinte à publicação). Em vez disso, a intenção é educar sobre os diferentes modelos de implantação, estratégias de produtos e compensações das opções.

Vale a pena ler a postagem acima para entender como comparar diferentes soluções Kafka faz sentido. No entanto, os produtos se desenvolvem e inovam… As comparações de tecnologia ficam desatualizadas rapidamente. Nesse ínterim, a AWS lançou um novo produto: Amazon MSK Serverless. Esta postagem de blog explora o que é, quando usá-lo e como ele difere de outros produtos Kafka. Ele compara especialmente o Amazon MSK (o serviço parcialmente gerenciado) e o Confluent Cloud (um concorrente totalmente gerenciado do Amazon MSK Serverless).


Como o Amazon MSK Serverless se encaixa no portfólio Kafka?


Mantendo a analogia do carro do meu post anterior, eu me pergunto: é um carro autônomo, um carro completo que você dirige sozinho ou apenas um motor de carro para construir seu próprio carro? Curiosamente, você pode argumentar por todos os três. Vamos explorar isso nas seções a seguir.



Apresentando o Amazon MSK Serverless


O Amazon MSK Serverless é um tipo de cluster para o Amazon MSK executar o Apache Kafka sem precisar gerenciar e dimensionar a capacidade do cluster. O MSK Serverless provisiona e dimensiona automaticamente os recursos de computação e armazenamento. Assim, você pode usar o Apache Kafka sob demanda e pagar pelos dados transmitidos e retidos.

O Amazon MSK é uma das centenas de serviços em nuvem que a AWS fornece. A AWS é um balcão único para todas as necessidades de nuvem. Esse é definitivamente um ponto forte da AWS (e semelhante ao Azure e GCP).

O Amazon MSK Serverless foi criado para resolver os problemas que acompanham o Amazon MSK (o serviço Kafka parcialmente gerenciado que é comercializado como uma solução totalmente gerenciada, embora não seja): muitos custos ocultos de operações, infra e tempo de inatividade. Este podcast da AWS tem um ótimo episódio que apresenta o Amazon MSK Serverless e quando usá-lo como substituto do Amazon MSK.

O que a Amazon NÃO conta sobre o MSK Serverless

A AWS tem ótimos sites, documentação e vídeos para seus serviços em nuvem. Isso não é diferente para o Amazon MSK. No entanto, alguns detalhes importantes não são óbvios… Vamos explorar alguns pontos-chave para garantir que todos entendam o que o Amazon MSK Serverless é e o que não é.

O Amazon MSK Serverless é um Kafka incompleto

Se você segue meus blogs, isso pode ser chato. Apesar disso, muitas pessoas pensam no Kafka como uma fila de mensagens e um pipeline de transporte de dados. É isso, mas Kafka é muito mais:

  • Mensagens em tempo real em qualquer escala

  • Integração de dados com Kafka Connect

  • Processamento de dados (também conhecido como processamento de fluxo) com Kafka Streams (ou componentes nativos de Kafka de terceiros, como KSQL)

  • Verdadeiro desacoplamento (o recurso mais subestimado do Kafka por causa de seus recursos de armazenamento integrados) e repetibilidade de eventos com tempos de retenção flexíveis

  • Governança de dados com contratos de serviço usando Schema Registry (para ser justo, isso não faz parte do Kafka de código aberto, mas um componente separado e acessível no GitHub ou por fornecedores como Confluent ou Red Hat – mas é usado em quase todos os projetos Kafka sérios)

Como não vou me repetir, aqui estão alguns artigos explicando por que Kafka é mais do que uma fila de mensagens como você encontra no Amazon MSK Serverless:

TL;DR: A AWS fornece um serviço de nuvem para cada problema. Você pode colá-los para criar uma solução. No entanto, semelhante a um aplicativo monolítico que fornece inflexibilidade em um único pacote, uma malha de muitos serviços colados independentes usando diferentes tecnologias também é muito difícil de operar e manter . E o custo de tantos serviços, além de rede e transferência de dados, trará muitas surpresas em tal configuração.

Você deve se fazer algumas perguntas:

  • Como você implementa a integração de dados e a lógica de negócios com o Amazon MSK Serverless?

  • Qual é a consequência em relação ao custo, SLAs e latência de ponta a ponta, respectivamente, garantias de entrega da combinação do Amazon MSK Serverless com vários outros produtos, como Amazon Kinesis Data Analytics, AWS Glue, AWS Data Pipeline ou uma ferramenta de integração de terceiros?

  • Qual é a sua estratégia de segurança e governança de dados em relação aos dados de streaming? Como você constrói um hub de dados baseado em eventos que reforça a comunicação compatível entre produtores de dados e consumidores downstream independentes?

Mimado pela escolha: Amazon MSK e Amazon MSK Serverless são produtos diferentes


O Amazon MSK NÃO é totalmente gerenciado . É parcialmente gerido. Depois de fornecer os corretores, você precisa implantar, operar e monitorar os corretores Kafka e os conectores Kafka Connect e realizar o reequilíbrio com a ferramenta de código aberto Cruise Control. Confira a postagem mais recente de dimensionamento do MSK da AWS: “ Práticas recomendadas para dimensionar corretamente seus clusters Apache Kafka para otimizar o desempenho e o custo ”. Seriamente? Um artigo de dez páginas e muito técnico explicando como operar um “serviço Kafka em nuvem totalmente gerenciado”?

Você pode pensar que o Amazon MSK Serverless é o sucessor do Amazon MSK para resolver esses problemas. No entanto, agora há dois produtos para escolher: Amazon MSK e Amazon MSK Serverless .


A Amazon NÃO recomenda o uso do Amazon MSK Serverless para todos os casos de uso! É recomendado se você não conhece as cargas de trabalho ou se elas mudam frequentemente de volume. A Amazon recomenda o Amazon MSK “normal” para cargas de trabalho previsíveis, pois é mais econômico (e porque não é viável por causa de suas muitas limitações rígidas). O MSK Connect também não é suportado ainda e chegará em algum momento no futuro.

Não há problema em fornecer produtos diferentes para casos de uso diferentes. A Confluent também tem diferentes ofertas para diferentes SLAs e requisitos funcionais em sua oferta de nuvem. Clusters básicos multilocatários e clusters dedicados estão disponíveis, mas você nunca precisa autogerenciar o cluster ou corrigir bugs ou problemas de desempenho por conta própria.


Você deve se fazer algumas perguntas:

  • Quais projetos exigem o Amazon MSK e quais exigem o Amazon MSK Serverless?

  • Como o projeto será dimensionado à medida que o seu cresce?

  • Qual é o plano de migração/atualização se sua carga de trabalho exceder os limites de partição/retenção MSK Serverless?

  • Qual é o custo total de propriedade (TCO) do MSK mais todos os outros serviços de nuvem com os quais preciso combiná-lo?

Amazon MSK Serverless exclui suporte Kafka


Os acordos de nível de serviço do Amazon MSK dizem: “ O Compromisso de Serviço NÃO SE APLICA a qualquer indisponibilidade, suspensão ou rescisão … causada pelo software subjacente do mecanismo Apache Kafka ou Apache Zookeeper que leva a falhas de solicitação …

O Amazon MSK Serverless faz parte do produto Amazon MSK e tem a mesma limitação. Excluir o suporte Kafka da oferta do MSK é (ou deveria ser) um bloqueador para qualquer projeto sério de streaming de dados!

Não há muito mais a acrescentar aqui… Você realmente deseja comprar um produto específico que exclua o suporte para sua capacidade principal? Pergunte também ao seu gerente se ele concorda e assume o risco.

Você deve se fazer algumas perguntas:

  • Quem é responsável e assume o risco se você encontrar um problema Kafka em seu projeto usando Amazon MSK ou Amazon MSK Serverless?

  • Como você reage a incidentes de segurança relacionados ao projeto de código aberto Apache Kafka?

  • Como você corrige problemas de desempenho ou escalabilidade (no cliente e no servidor)?

Quando NÃO usar o Amazon MSK Serverless?


Voltemos à analogia do carro. O Amazon MSK Serverless é um carro autônomo?

Obviamente, o Amazon MSK Serverless é autônomo . Isso é o que é um produto serverless. Semelhante ao Amazon S3 para armazenamento de objetos ou AWS Lambda para funções serverless.

No entanto, o Amazon MSK Serverless NÃO é um carro completo! Ele não fornece suporte corporativo para sua funcionalidade. E não fornece mais do que apenas o núcleo do streaming de dados.

Portanto, o Amazon MSK Serverless é um ótimo produto autônomo da AWS para alguns casos de uso . Mas você deve avaliar os seguintes fatos antes de decidir a favor ou contra este serviço de nuvem.


Suporte empresarial 24/7 para o produto


O MSK exclui o suporte Kafka de seu produto Amazon MSK . O Amazon MSK Serverless faz parte do Amazon MSK e usa seus SLAs.

Estou impressionado com quantas empresas usam o Amazon MSK sem ler os SLAs. A maioria das pessoas não sabe que o suporte Kafka está excluído do produto.

Isso torna o Amazon MSK Serverless um motor de carro, não um carro completo, certo? Você realmente quer construir seu próprio carro e assumir o peso e o risco de falhas ao dirigir na rua?


Se você precisar implantar cargas de trabalho de missão crítica com SLAs 24 horas por dia, 7 dias por semana, pode parar de ler e qualificar o Amazon MSK (incluindo Amazon MSK Serverless) até que a AWS adicione SLAs sérios a este produto no futuro.


Plataforma completa de streaming de dados


A AWS tem um serviço para tudo. Você pode colá-los juntos. Em nossa analogia com carros, seriam muitos carros ou veículos em sua arquitetura corporativa. A maioria de nós aprendeu da maneira mais difícil que os microsserviços distribuídos não são almoço grátis .

O data lake monolítico (agora lançado como lakehouse) de fornecedores como Databricks e Snowflake) não é uma abordagem melhor. Use a tecnologia certa para um problema ou produto de dados. Encontrar a combinação certa entre foco e independência é crucial. A função de Kafka é o hub de dados em tempo real central ou descentralizado para transportar eventos. Isso inclui integração e processamento de dados e desacoplamento de sistemas uns dos outros.

Um fluxo de dados moderno requer uma maneira simples, confiável e controlada de integrar e processar dados . Aproveitar o ecossistema da Kafka, como Kafka Connect e Kafka Streams, permite latência de ponta a ponta e SLAs de missão crítica em uma infraestrutura econômica. O desenvolvimento, as operações e o monitoramento são muito mais difíceis e caros se você agrupar vários serviços para criar um hub de dados em tempo real.

No entanto, Kafka não é uma bala de prata. Portanto, você precisa entender quando NÃO usar o Kafka e como ele se relaciona com data warehouses, data lakes e outros aplicativos .

Após uma longa introdução a esse aspecto, resumindo a história: se você usa o Amazon MSK Serverless, ele é o componente de ingestão de dados na arquitetura de sua empresa. Nenhum componente totalmente gerenciado além do Kafka e nenhuma integração nativa com outros serviços de nuvem da AWS de terceiros, como S3 ou Redshift, e serviços de nuvem de terceiros, como Snowflake, Databricks ou MongoDB. Você deve combinar o Amazon MSK Serverless com vários outros serviços da AWS para processamento e armazenamento de eventos. Além disso, a conectividade precisa ser implementada e operada por sua equipe de projeto usando conectores Kafka Connect, ou outras ferramentas ETL de 1º ou 3º partido, ou código cola personalizado).

O Amazon MSK Serverless oferece suporte apenas à autenticação do AWS Identity and Access Management (IAM), que limita você apenas a clientes Java . Não há como usar os clientes de código aberto para outras linguagens de programação. Python, C++, .NET, Go, JavaScript etc. não são compatíveis com o Amazon MSK Serverless.

O MSK Connect permite a implantação de conectores Kafka Connect (que estão disponíveis em código aberto, licenciados de outros fornecedores ou autoconstruídos) nesta plataforma. Semelhante ao Amazon MSK, este não é um produto totalmente gerenciado. Você implanta, opera e monitora os conectores sozinho. Veja os conectores totalmente gerenciados no Confluent Cloud para entender a diferença. Além disso, observe que a AWS oferecerá suporte apenas a trabalhadores do Connect. Mas ele não suportará os próprios conectores, mesmo se executado no MSK Connect .


Arquitetura orientada a eventos com verdadeiro desacoplamento entre os microsserviços


Uma arquitetura orientada a eventos alimentada por streaming de dados é ótima para infraestrutura de integração única. No entanto, a história vai muito além disso. As arquiteturas corporativas modernas utilizam princípios como microsserviços, design orientado por domínio e malha de dados para criar aplicativos e produtos de dados descentralizados.

Uma troca de dados de streaming permite uma arquitetura descentralizada com compartilhamento de dados em tempo real . Um recurso crítico para esse componente estratégico da empresa é o armazenamento de dados de longo prazo . Isto

  • desacopla aplicativos independentes

  • lida com a contrapressão para consumidores lentos (como sistemas em lote ou serviços da web de solicitação-resposta)

  • permite a reprodução de eventos históricos (por exemplo, para um consumidor Python na plataforma de aprendizado de máquina de engenheiros de dados).



A capacidade de armazenamento do Kafka é um diferencial importante em relação às filas de mensagens como IBM MQ, Rabbit MQ ou AWS SQS. O tempo de retenção é um recurso importante para definir as opções de armazenamento corretas por tópico do Kafka. O Confluent torna o Kafka ainda melhor ao fornecer armazenamento em camadas para separar o armazenamento da computação para uma solução muito mais econômica e escalável com recursos de armazenamento infinitos.

O Amazon MSK Serverless tem um tempo de retenção limitado de 24 horas . Isso é bom o suficiente para muitos casos de uso de ingestão de dados, mas não para criar uma malha de dados em tempo real entre unidades de negócios ou até mesmo entre organizações . Outro requisito difícil do Amazon MSK Serverless é a limitação de 120 partições . Não é bem um limite que permita construir uma plataforma estratégica em torno dele.

Como o Amazon MSK Serverless é um produto novo, espere que as limitações mudem e melhorem com o tempo. Verifique os documentos para atualizações. De qualquer forma, essas limitações provam como é difícil criar uma oferta Kafka totalmente gerenciada (como o Confluent Cloud) em comparação com uma oferta Kafka parcialmente gerenciada (como o Amazon MSK “normal”).


Implantações híbridas de AWS e Kafka em várias nuvens


O ponto mais óbvio: o Amazon MSK Serverless é apenas uma discussão razoável se você executar seus aplicativos na nuvem pública da AWS . Para qualquer outra coisa, como multinuvem com Azure ou GCP, ofertas de borda da AWS como AWS Outpost ou Wavelength, ambientes híbridos ou implantações de borda como uma fábrica ou loja de varejo, a AWS não é uma opção.

Se você precisar implantar fora da nuvem pública da AWS, verifique minha comparação de ofertas Kafka, incluindo Confluent, IBM, Red Hat e Cloudera .

Quero enfatizar que nenhum produto ou serviço é 100% independente da nuvem . Por exemplo, construir o Confluent Cloud na AWS, Azure e GCP inclui desafios únicos sob o capô. O Confluent Cloud é construído no Kubernetes. Portanto, o modelo e muitos mecanismos de automação podem ser reutilizados em fornecedores de nuvem. Mas armazenamento, computação, preço, suporte e muitas outras características e recursos diferem em cada provedor de serviços em nuvem.

Dito isso, você aproveita um SaaS como o Confluent Cloud sem nenhum conhecimento ou acesso à infraestrutura técnica. Você não vê esses problemas sob o capô. No nível do desenvolvedor, você produz e consome mensagens com a API Kafka e configura recursos adicionais como conectores totalmente gerenciados, governança de dados ou vinculação de cluster. Toda a complexidade das operações é tratada pelo fornecedor. Não importa em qual nuvem você roda.


"Coopetição": Os vencedores são AWS e Confluent Cloud


O motivo deste post foi a evolução da linha de produtos Amazon MSK. Portanto, se você ler isso um ano depois, os recursos e limitações do produto podem parecer completamente diferentes novamente. Use postagens de blog como esta para entender como avaliar diferentes soluções e ofertas de SaaS. Em seguida, faça sua própria pesquisa precisa antes de tomar uma decisão sobre o produto .

O Amazon MSK Serverless é um ótimo novo serviço da AWS que ajuda os clientes da AWS em alguns momentos dos projetos. Mas tem limitações difíceis para alguns outros projetos. Além disso, o Amazon MSK (incluindo o Amazon MSK Serverless) exclui o suporte ao Kafka! E não é uma plataforma completa de streaming de dados . Tenha cuidado para não criar uma confusão de código cola entre dezenas de serviços e aplicativos em nuvem serverless. O Confluent Cloud é a oferta de nuvem Kafka totalmente gerenciada muito mais sofisticada (na AWS e em qualquer lugar). Não estou dizendo isso porque sou um funcionário da Confluent, mas porque quase todo mundo concorda com issoE não é realmente uma surpresa, pois o Confluent se concentra apenas no streaming de dados com 2.000 funcionários e emprega muitos committers em tempo integral para o projeto de código aberto Apache Kafka. Amazon tem zero, a propósito

A propósito: você sabia que pode usar seus créditos da AWS para consumir o Confluent Cloud como qualquer outro serviço nativo da AWS? Isso se deve à forte parceria entre a Confluent e a AWS. Sim, existe coopetição. É assim que o mundo se parece hoje…

O Confluent Cloud fornece uma plataforma nativa de nuvem completa, incluindo 99,99% SLA, conectores totalmente gerenciados e processamento de fluxo, e talvez o mais interessante para os leitores deste post, integração com serviços AWS (S3, Redshift, Lambda, Kinesis, etc.) além de segurança AWS e redes (VPC Peering, Private Link, Transit Gateway, etc.). O Confluent e o AWS trabalham juntos em implantações híbridas, aproveitando os serviços de ponta da AWS, como o AWS Wavelength para cenários 5G.


Qual serviço de nuvem Kafka você usa hoje? Quais são seus prós e contras? Você planeja uma migração – por exemplo, do Amazon MSK para o Confluent Cloud ou do Kafka de código aberto para o Amazon MSK Serverless? Conecte comigo e com o Kai no LinkedIn e vamos discutir isso! Mantenha-se informado sobre as novas postagens do blog assinando a newsletter.

65 visualizações0 comentário

Pedro Busko's blog

©2022 by Pedro Busko's blog. Proudly created with Wix.com

bottom of page