Apache Kafka é uma solução flexível de streaming de dados em tempo real usada para desenvolver e implantar aplicativos e pipelines de dados altamente responsivos, mas pode se tornar uma fonte de atrito para desenvolvedores à medida que seus projetos crescem em escopo e aumentam em número.
Os requisitos de recursos, acesso a dados e necessidades de segurança dos projetos Kafka em estágio inicial são geralmente simples e podem ser gerenciados internamente pela equipe de desenvolvimento. Mas, ao passar para a produção e escalar para várias equipes, é comum que uma equipe de engenharia de confiabilidade de site (SRE), uma equipe de plataforma de dados ou uma equipe de operações assuma a manutenção da infraestrutura Kafka, bem como atenda às solicitações da equipe de desenvolvimento para acesso a dados.
A introdução de processos adicionais frequentemente causa atrasos e trabalho adicional (como o preenchimento de tickets de solicitação) de uma forma que retarda a adoção do Kafka e torna os desenvolvedores que já usam o Kafka menos produtivos.
Não precisa ser assim, entretanto. O atrito não é função do processo, mas sim de como ele é implementado. É possível fornecer aos desenvolvedores as ferramentas necessárias para desenvolver aplicativos Kafka com eficiência, bem como os processos para trabalhar com equipes de plataforma para provisionar recursos e solicitações de dados de autoatendimento, sem introduzir gargalos.
Kafka gerenciado incorretamente reduz a produtividade do desenvolvedor
Existem alguns fatores principais que dificultam os processos de desenvolvimento ao dimensionar implantações do Kafka:
Governança excessivamente centralizada: Embora seja necessário um controlo rigoroso sobre os dados para garantir a conformidade, uma governação mal estruturada atrasa o acesso aos recursos e as aprovações de alterações.
Falta de familiaridade com Kafka: Os desenvolvedores que não estão cientes de toda a extensão do ecossistema Kafka (Kafka, Kafka Connect, Kafka Streams, MirrorMaker) e de como esses componentes interagem podem retardar o progresso, especialmente durante a aceleração.
Silos e barreiras de comunicação: A má comunicação com outras equipes (especialmente sabendo quem tem propriedade sobre recursos específicos) e a má compreensão dos dados em si (por exemplo, a compreensão de quais métricas são significativas) criam dificuldades operacionais.
Além dessas preocupações principais, políticas de segurança inflexíveis que adicionam camadas de complexidade às implantações de produção (por exemplo, criptografia, que não é fornecida imediatamente no Kafka) e seus próprios dados e requisitos regulatórios específicos do caso de uso podem adicionar ainda mais obstáculos ao desenvolvimento.
Resolver esses problemas para os desenvolvedores — sem colocar expectativas nas equipes de plataforma que elas não possam atender ou devolver-lhes as tarefas de manutenção e governança do Kafka — representa um desafio.
Ferramentas de autoatendimento Kafka que podem resolver a desaceleração
Cada aplicação tem suas próprias especificações, fluxos de trabalho e infraestrutura de suporte que determinarão quais ferramentas serão apropriadas para uso. Mas existem alguns componentes principais que você deve considerar introduzir em seus ambientes Kafka que aumentarão a capacidade de resposta do desenvolvedor.
Exploração e solução de problemas
Os desenvolvedores devem compreender os dados que estão manipulando para que possam identificar rapidamente a origem de bugs ou resultados inesperados em seu código. Eles devem adotar ferramentas adequadas aos seus fluxos de trabalho que possibilitem isso:
Monitoramento e Alerta
A disponibilidade da infraestrutura e o desempenho e os impactos operacionais das atualizações de código precisam ser avaliados regularmente para que o desenvolvimento contínuo não afete a confiabilidade da produção. Prometheus, Burrow e Datadog fornecem componentes robustos para monitorar implantações Kafka.
Propriedade e descoberta
Atlan e OpenMetadata são catálogos de dados que ajudam os desenvolvedores a descobrir e navegar pelos dados para detectar padrões e responder perguntas. Para organizações maiores, a Alation e a Collibra fornecem plataformas de inteligência de dados de nível empresarial que podem classificar e proteger extensos ativos de dados.
As melhores práticas de propriedade de dados podem ser refletidas em seus processos GitOps. Registre metadados sobre recursos, incluindo seu proprietário, assim que forem criados, para que não haja barreiras para descobrir o que é um recurso e quem é responsável por ele.
Integração de dados
Integrar dados de múltiplas fontes ou mover seus dados para um local onde outras equipes ou organizações possam integrá-los é uma função de muitos casos de uso do Kafka. Os desenvolvedores precisam de propriedade dos processos Kafka Connect (como Debezium) para muitos aplicativos de negócios e casos de uso de compartilhamento de dados para que os aplicativos possam ouvir mudanças de estado e eventos. É importante garantir que a configuração e os conectores dêem às equipes de desenvolvimento acesso a tudo o que precisam para operar de forma independente, sem conceder-lhes acesso muito amplo.
A alternativa para isso é uma equipe central que gerencia os conectores. Mas sem o contexto completo e a compreensão de cada aplicação e caso de uso específicos, isso pode ter o efeito oposto ao pretendido, reduzindo a eficiência ao exigir comunicação adicional entre as equipes até que o acesso necessário e o entendimento compartilhado sejam obtidos.
Melhores práticas para equipes de desenvolvimento mais autônomas
As ferramentas de autoatendimento não são uma panaceia e não podem resolver problemas organizacionais que atrapalham os fluxos de trabalho de desenvolvimento. A configuração como código (GitOps) e CI/CD para infraestrutura devem ser implementadas para ajudar a garantir ambientes de desenvolvimento e teste confiáveis e reproduzíveis – mas isso é verdade tanto com Kafka quanto sem.
Os membros da sua equipe também devem ter uma compreensão funcional das configurações do seu cliente para evitar configurações incorretas: o comportamento do produtor e do consumidor do Kafka (tamanhos de lote, tamanhos de buffer, tempos limite) afeta o desempenho do Kafka e, se configurado incorretamente, pode levar ao uso excessivo de recursos, aumento da latência e rendimento reduzido.
Ao planejar seu aplicativo, nem é preciso dizer que você deve identificar cuidadosamente o caso de uso e os requisitos e escolher padrões de design apropriados (por exemplo, arquiteturas de orquestração, coreografia, orientadas a eventos, processamento de fluxo ou compactação/retenção). Uma infraestrutura resiliente e escalável capaz de atender aos requisitos da sua aplicação (especialmente em arquiteturas orientadas a eventos que usam Kafka para fornecimento de eventos) também deve ser planejada com antecedência.
Quanto menos dívida técnica seus projetos acumularem nos estágios iniciais, mais tempo os desenvolvedores poderão gastar verificando se os pipelines de dados estão implementados corretamente e se as pessoas certas podem acessar os dados de que precisam sem atrasos técnicos ou de processo.
Encontrando a abordagem certa para impulsionar os resultados do desenvolvedor
Aprender as ferramentas e estabelecer as práticas descritas acima é tarefa difícil para qualquer desenvolvedor ou equipe. A maioria dos produtos não está totalmente integrada e a sua falta de funcionalidade de governação abrangente pode levar a uma má compreensão e apropriação e resultar no tratamento incorreto dos dados.
É possível que você adote apenas algumas das ferramentas no início, ou ferramentas diferentes. Mas existem alguns princípios que você pode usar para proporcionar uma experiência sem atrito para seus desenvolvedores, independentemente das peças específicas de software e das práticas de engenharia que você escolher:
Implemente grades de proteção que ajudem em vez de atrapalhar: Dê autonomia aos seus desenvolvedores dentro de um contexto limitado que inclua apenas os dados de que precisam. Isso reduz erros e ajuda você a manter a conformidade com as regulamentações de privacidade, como o GDPR e a Lei de Privacidade do Consumidor da Califórnia (CCPA).
Otimize a infraestrutura Kafka para gerenciar custos de maneira eficaz: Os custos do Kafka podem rapidamente se tornar caros. Os processos de replicação de dados criam múltiplas fontes de verdade, cada uma exigindo infraestrutura e manutenção. Embora a replicação às vezes seja necessária, geralmente para compartilhar um subconjunto de dados com parceiros terceirizados, vale a pena desafiar isso se o caso de uso puder ser atendido de outra maneira (por exemplo, usando acesso rigidamente controlado ou virtualização).
Forneça controles de segurança robustos: As plataformas que concedem acesso aos dados devem fornecer mecanismos para criar e aplicar políticas de segurança robustas e proteger os dados dos utilizadores com redação e mascaramento de informações de identificação pessoal (PII).
E, a um nível ainda mais elevado: ao conceber as suas aplicações e a infraestrutura que as alimenta, o objetivo deve ser facilitar o autoatendimento e a colaboração, e não transferir a responsabilidade das equipas de operações. Os desenvolvedores precisam de liberdade e as equipes de operações precisam saber que suas implantações do Kafka estão sendo usadas corretamente, sem microgerenciar cada solicitação de acesso.
Saiba mais sobre autonomia do desenvolvedor e Kafka
Se você quiser saber mais sobre como identificar desafios de escalonamento no ecossistema Kafka, confira nosso webinar do Conductor 2.0 para descobrir como o Conductor resolve os problemas de autoatendimento que equipes e organizações enfrentam ao trabalhar com dados em tempo real em escala, resultando em prazos de entrega mais rápidos e maior valor obtido com investimentos em dados.
YOUTUBE.COM/THENEWSTACK
A tecnologia avança rápido, não perca um episódio. Inscreva-se em nosso canal no YouTube para transmitir todos os nossos podcasts, entrevistas, demonstrações e muito mais.
SE INSCREVER
James White é Diretor de Produto da Conductor, onde se concentra na construção de produtos para equipar as organizações para gerenciar com eficácia seu ecossistema Kafka. Ele trabalhou na interseção de gerenciamento de dados e produtos por quase 10 anos,…
Este site utiliza cookies para melhorar sua experiência de navegação. Ao continuar, você concorda com o uso de cookies. Para mais informações, consulte nossa Política de Privacidade.
Funcional
Sempre ativo
O armazenamento ou acesso técnico é estritamente necessário para a finalidade legítima de permitir a utilização de um serviço específico explicitamente solicitado pelo assinante ou utilizador, ou com a finalidade exclusiva de efetuar a transmissão de uma comunicação através de uma rede de comunicações eletrónicas.
Preferências
O armazenamento ou acesso técnico é necessário para o propósito legítimo de armazenar preferências que não são solicitadas pelo assinante ou usuário.
Estatísticas
O armazenamento ou acesso técnico que é usado exclusivamente para fins estatísticos.O armazenamento técnico ou acesso que é usado exclusivamente para fins estatísticos anônimos. Sem uma intimação, conformidade voluntária por parte de seu provedor de serviços de Internet ou registros adicionais de terceiros, as informações armazenadas ou recuperadas apenas para esse fim geralmente não podem ser usadas para identificá-lo.
Marketing
O armazenamento ou acesso técnico é necessário para criar perfis de usuário para enviar publicidade ou para rastrear o usuário em um site ou em vários sites para fins de marketing semelhantes.