Muitas empresas estão optando por migrar para o AWS MSK para evitar as dores de cabeça operacionais associadas à gestão de clusters do Apache Kafka.
Neste tutorial, exploraremos os recursos, benefícios e melhores práticas do AWS MSK. Também abordaremos os passos básicos para configurar o AWS MSK e veremos como ele se compara a outros serviços populares, como Kinesis e Confluent.
O que é o AWS MSK?
Primeiro, vamos entender o Apache Kafka e por que ele é tão útil para streaming de dados.
Apache Kafka é uma plataforma de streaming distribuída de código aberto que lida com fluxos de dados em tempo real e pode construir aplicativos orientados a eventos. Ele pode ingerir e processar dados em streaming à medida que acontecem.
De acordo com o site do Kafka , mais de 80% das empresas da lista Fortune 100 confiam e utilizam o Kafka.
O mais importante é que o Kafka é escalável e muito rápido. Isso significa que ele pode lidar com muito mais dados do que caberia em apenas uma máquina e com latência super baixa.
Se você deseja aprender como criar, gerenciar e solucionar problemas do Kafka para streaming de dados, considere fazer o curso Introdução ao Kafka.
Qual é o melhor momento para usar o Apache Kafka?
- Quando você precisa lidar com grandes quantidades de dados em tempo real, como o gerenciamento de fluxos de dados de dispositivos IoT.
- Quando você precisa de processamento e análise imediatos de dados, como rastreamento de atividades de usuários em tempo real ou sistemas de detecção de fraudes.
- Em cenários de event-sourcing onde você precisa de trilhas de auditoria com requisitos de conformidade e regulamentações.
No entanto, gerenciar instâncias do Kafka pode trazer muitas dores de cabeça. É aí que entra o AWS MSK.
Imagem por Autor
O AWS MSK (Managed Streaming for Kafka) é um serviço totalmente gerenciado que lida com o provisionamento, configuração, dimensionamento e manutenção de clusters Kafka. Você pode usá-lo para construir aplicativos que reagem a fluxos de dados instantaneamente.
O Kafka é frequentemente usado como parte de uma configuração maior de processamento de dados, e o AWS MSK torna ainda mais fácil criar pipelines de dados em tempo real que movem dados entre diferentes sistemas.
Como o Amazon MSK funciona. Fonte da imagem: AWS
Se você é novo na AWS, considere fazer nosso curso de Introdução à AWS para se familiarizar com o básico. Quando estiver pronto, você pode avançar para nosso curso de Tecnologia e Serviços de Nuvem da AWS para explorar a gama completa de serviços nos quais as empresas confiam.
Recursos do AWS MSK
O AWS MSK se destaca da concorrência por ser um serviço totalmente gerenciado. Você não precisa se preocupar em configurar servidores ou lidar com atualizações.
No entanto, há mais do que isso. Esses cinco recursos principais do AWS MSK o tornam um investimento que vale a pena:
- O MSK é altamente disponível, e a AWS garante que estritas SLAs sejam cumpridas. Ele substitui automaticamente componentes falhos sem tempo de inatividade para seus aplicativos.
- O MSK possui uma opção de dimensionamento automático para armazenamento, portanto, ele cresce automaticamente de acordo com suas necessidades. Você também pode dimensionar rapidamente para cima ou para baixo seu armazenamento ou adicionar mais corretores conforme necessário.
- Em termos de segurança, o MSK é uma solução abrangente que fornece criptografia em repouso e em trânsito. Ele também se integra ao AWS IAM para controle de acesso.
- Se você já está utilizando o Kafka, pode migrar para o MSK sem precisar alterar seu código, já que o MSK suporta todas as APIs e ferramentas regulares do Kafka.
- O MSK é uma opção econômica que não requer a contratação de uma equipe de engenharia inteira para monitorar e gerenciar clusters. A AWS até mesmo afirma que pode ser até 40% mais barato do que o Kafka auto-gerenciado.
Benefícios de usar o AWS MSK
Como já vimos, o AWS MSK oferece valor imediato devido à sua disponibilidade, escalabilidade, segurança e facilidade de integração. Essas vantagens principais o tornaram a escolha preferida para empresas que executam cargas de trabalho do Kafka na nuvem.
O AWS MSK resolve quatro desafios críticos que todo projeto de streaming de dados enfrenta:
- O MSK é um serviço totalmente gerenciado, permitindo que você se concentre em construir aplicativos em vez de gerenciar infraestrutura.
- O MSK é altamente disponível e confiável, o que está se tornando cada vez mais crítico nos dias de hoje, pois os usuários esperam acesso 24 horas por dia, 7 dias por semana aos serviços e aplicativos.
- O MSK possui capacidades críticas de segurança abrangentes.
- O MSK possui integração nativa com a AWS, facilitando muito a construção de soluções completas de streaming de dados dentro do ecossistema AWS.
Configurando o AWS MSK
Para começar a usar o AWS MSK, primeiro, crie sua conta AWS. Se esta for sua primeira vez usando a AWS, aprenda como configurar e configurar sua conta AWS com nosso tutorial abrangente.
Faça login no Console de Gerenciamento da AWS e abra o console do MSK. Clique em “Criar cluster” para iniciar o processo de configuração.
Começando com o AWS MSK. Fonte da imagem: AWS
Selecione “Criação rápida” para as configurações padrão e, em seguida, insira um nome descritivo para o cluster.
A partir daí, você tem muitas opções adicionais para selecionar, que dependem de seus próprios requisitos para seu cluster. Aqui está uma visão geral rápida das escolhas:
- Tipo de cluster: “Provisionado” ou “Sem servidor”
- Versão do Apache Kafka
- Tipo de broker: “Padrão” ou “Express”
- Tamanho do broker
- Volume de armazenamento EBS
Opções de configuração do AWS MSK
O cluster é sempre criado dentro de um Amazon VPC. Você pode optar por usar o VPC padrão ou configurar e especificar um VPC personalizado.
Agora, você só precisa esperar que seu cluster seja ativado, o que pode levar de 15 a 30 minutos. Você pode monitorar o status do seu cluster na página de resumo do cluster, onde verá o status mudar de “Criando” para “Ativo”.
Ingestão e Processamento de Dados com AWS MSK
Depois que seu cluster MSK estiver configurado, você precisará criar uma máquina cliente para produzir e consumir dados em um ou mais tópicos. Uma vez que o Apache Kafka se integra tão bem com muitos produtores de dados (como sites, dispositivos IoT, instâncias Amazon EC2, etc.), o MSK também compartilha esse benefício.
O Apache Kafka organiza dados em estruturas chamadas tópicos. Cada tópico é composto por uma ou várias partições. Partições são o grau de paralelismo no Apache Kafka. Os dados são distribuídos entre os corretores usando particionamento de dados.
Termos-chave a saber ao lidar com clusters do Apache Kafka:
- Tópicos são a maneira fundamental de organizar dados no Kafka.
- Produtores são aplicativos que publicam dados nos tópicos—eles geram e escrevem dados no Kafka. Eles escrevem dados em tópicos e partições específicas.
- Consumidores são aplicativos que leem e processam dados de tópicos. Eles puxam dados dos tópicos aos quais estão inscritos.
Ao construir uma arquitetura orientada a eventos com o AWS MSK, é necessário configurar várias camadas, sendo o MSK o principal componente de ingestão de dados. Aqui está uma visão geral das camadas que podem ser necessárias:
- Configuração de ingestão de dados
- Camada de processamento
- Camada de armazenamento
- Camada de análise
Exemplo de uma arquitetura orientada a eventos com Amazon MSK e Amazon EventBridge.Fonte da imagem: AWS
Se você está interessado em aproveitar o Python em seus fluxos de trabalho de pipeline de dados, confira nosso curso Introdução ao AWS Boto em Python.
Práticas recomendadas para usar o AWS MSK
O AWS MSK é relativamente simples de configurar e começar a usar imediatamente. No entanto, algumas práticas recomendadas essenciais melhorarão o desempenho de seus clusters e economizarão tempo posteriormente.
Ajuste o tamanho do seu cluster
Você precisará escolher o número correto de partições por corretor e o número correto de corretores por cluster.
Vários fatores podem influenciar suas decisões aqui; no entanto, a AWS forneceu algumas recomendações e recursos úteis para guiá-lo durante esse processo.
Além disso, a AWS oferece uma planilha de dimensionamento e preços fácil de usar para ajudar você a estimar o tamanho certo do seu cluster e os custos associados ao uso do AWS MSK em comparação a um cluster Kafka EC2 autogerenciado semelhante.
Construa clusters altamente disponíveis
A AWS recomenda que você configure seus clusters para serem altamente disponíveis. Isso é especialmente importante ao realizar uma atualização (como atualizar a versão do Apache Kafka) ou quando a AWS está substituindo um broker.
Para garantir que seus clusters sejam altamente disponíveis, há três coisas que você deve fazer:
- Configure seus clusters em três zonas de disponibilidade (também chamado de cluster de três Zonas de Disponibilidade).
- Defina o fator de replicação como 3 ou mais.
- Defina o número mínimo de réplicas em sincronia como RF-1.
O ótimo da AWS é que eles se comprometem com SLAs rigorosos para implantações em várias Zonas de Disponibilidade; caso contrário, você recebe seus créditos de volta.
Monitore o uso de disco e CPU
Dois principais métricas para monitorar através do AWS CloudWatch são o uso de disco e CPU. Fazendo isso não só garantirá que seu sistema funcione sem problemas, mas também ajudará a manter os custos baixos.
A melhor maneira de gerenciar o uso de disco e os custos de armazenamento associados é configurar um alarme do CloudWatch que o avise quando o uso do disco exceder um determinado valor, como 85%, e ajustar suas políticas de retenção. Definir um tempo de retenção para mensagens em seu log pode ajudar bastante a liberar espaço em disco automaticamente.
Além disso, para manter o desempenho do seu cluster e evitar gargalos, a AWS recomenda que você mantenha o uso total de CPU para seus brokers abaixo de 60%. Você pode monitorar isso usando o AWS CloudWatch e, em seguida, tomar medidas corretivas atualizando o tamanho do seu broker, por exemplo.
Proteja seus dados usando criptografia em trânsito
Por padrão, a AWS criptografa dados em trânsito entre os brokers em seu cluster MSK. Você pode desativar isso se seu sistema estiver experimentando alto uso de CPU ou latência. No entanto, é altamente recomendável que você mantenha a criptografia em trânsito ativada em todos os momentos e encontre outras maneiras de melhorar o desempenho se isso for um problema para você.
Confira nosso curso de Segurança e Gestão de Custos da AWS para saber mais sobre como proteger e otimizar seu ambiente de nuvem AWS e gerenciar custos e recursos na AWS.
Comparando o AWS MSK com outras ferramentas de streaming
Ao decidir qual ferramenta é a melhor para um projeto, frequentemente precisamos avaliar várias opções. Aqui estão as alternativas mais comuns ao AWS MSK e como elas se comparam.
AWS MSK vs Apache Kafka no EC2
O principal trade-off entre o MSK e uma opção auto-hospedada usando EC2 é entre conveniência e controle: o MSK oferece menos para gerenciar, mas menos flexibilidade, enquanto o EC2 oferece controle completo, mas requer mais trabalho.
O AWS MSK lida com todas as tarefas operacionais complexas, com provisionamento e configuração automáticos. A vantagem disso é que não há custos iniciais de infraestrutura. Há também integração perfeita com outros serviços da AWS e recursos de segurança robustos.
O uso do Kafka na EC2, por outro lado, envolve mais configuração e instalação manual, e você também precisa lidar com toda a manutenção e atualizações por conta própria. Isso oferece muito mais flexibilidade, mas pode trazer mais complexidade e custos operacionais, e pode exigir equipes mais qualificadas.
AWS MSK vs. Kinesis
Use o Kinesis para simplicidade e integração profunda com a AWS e o MSK para compatibilidade com o Kafka ou mais controle sobre sua configuração de streaming.
O Kinesis é uma arquitetura completamente serverless que usa shards para streaming de dados. A AWS gerencia tudo para você. No entanto, é importante estar ciente dos limites de retenção de dados. O Kinesis é uma ótima solução para requisitos simples de streaming de dados.
O AWS MSK depende do modelo de tópicos e partições do Kafka, com retenção de dados virtualmente ilimitada, dependendo do seu armazenamento. É uma solução mais flexível e personalizável da qual você pode migrar para longe da AWS, se necessário.
Se você não está familiarizado com o Kinesis, temos um curso que o guia pelo trabalho com dados em streaming usando AWS Kinesis e Lambda.
AWS MSK vs. Confluent
Escolha Confluent se você precisar de recursos abrangentes e suporte, e escolha MSK se você estiver fortemente investido na AWS e tiver expertise em Kafka internamente.
A Confluent possui um conjunto rico de recursos com muitos conectores integrados. É uma opção mais cara no geral, mas oferece um nível gratuito com recursos limitados. A Confluent funciona bem para cargas de trabalho esporádicas e tem um processo de implantação mais fácil.
Em comparação, a AWS é mais simplificada e foca na funcionalidade central do Kafka. Para ter acesso a um conjunto de recursos mais amplo, o AWS MSK deve ser integrado com outros serviços da AWS. Felizmente, essa integração é tranquila. O AWS MSK tem um custo base mais baixo e pode ser uma boa opção para cargas de trabalho consistentes.
A tabela a seguir oferece uma comparação entre o AWS MSK e suas alternativas:
Recurso |
AWS MSK |
Apache Kafka na EC2 |
Kinesis |
Confluent |
Implantação |
Completamente gerenciado |
Autogerenciado na EC2 |
Completamente gerenciado |
Completamente gerenciado ou autogerenciado |
Facilidade de uso |
Fácil de configurar e gerenciar |
Requer configuração e escalonamento manual |
Configuração simples; nativo da AWS |
Interface amigável e ferramentas avançadas |
Escalabilidade |
Dimensionamento automático com ajustes manuais |
Dimensionamento manual |
Dimensionamento contínuo |
Dimensionamento automático com flexibilidade |
Latência |
Baixa latência |
Baixa latência |
Menor latência para pequenas cargas úteis |
Comparável ao MSK |
Suporte a protocolo |
Compatível com a API do Kafka |
Compatível com a API do Kafka |
Protocolo proprietário do Kinesis |
API do Kafka e protocolos adicionais |
Retenção de dados |
Configurável (até 7 dias por padrão) |
Configurável |
Configurável (máximo de 365 dias) |
Altamente configurável |
Monitoramento e métricas |
Integrado com o CloudWatch |
Requer configuração personalizada |
Integrado com o CloudWatch |
Ferramentas avançadas de monitoramento |
Custo |
Pagamento conforme o uso |
Com base no preço da instância EC2 |
Pagamento conforme o uso |
Baseado em assinatura |
Segurança |
Recursos de segurança integrados da AWS |
Necessidade de configurar a segurança manualmente |
Integrado com o IAM da AWS |
Recursos de segurança abrangentes |
Adequação ao caso de uso |
Melhor para usuários de Kafka no ecossistema da AWS |
Flexível, mas requer manutenção intensiva |
Melhor para aplicativos nativos da AWS |
Usuários avançados de Kafka e empresas |
Considerações Finais
Apache Kafka é a escolha ideal para situações em que você precisa de uma solução confiável em grande escala que não pode se dar ao luxo de perder dados e requer a conexão de várias fontes de dados ou a construção de pipelines de dados complexos. O AWS MSK previne muitas das dores de cabeça de configurar e gerenciar clusters Kafka, permitindo que os desenvolvedores se concentrem mais em construir e melhorar aplicativos em vez de infraestrutura.
Obter uma certificação AWS é uma excelente maneira de iniciar sua carreira na AWS. Você pode desenvolver suas habilidades em AWS conferindo nosso catálogo de cursos e adquirindo experiência prática através de projetos!