Arquitetura Lambda vs. Arquitetura Kappa: como escolher uma para o meu negócio?

O processamento e a análise de dados desempenham um papel fundamental na tomada de decisões das empresas. No entanto, essas tarefas estão sendo feitas continuamente por trás dos bastidores e escolher como começar a construir uma infraestrutura de dados adequada para atender às suas necessidades pode ser difícil.

ETL (extracting, transforming and loading data) é o processo de extração, transformação e carregamento de dados de várias fontes em sistemas de data warehouse. Esse processo costumava ser feito em lotes, mas as arquiteturas modernas estão evoluindo e agora acontece quase em tempo real sempre que possível. Além dos recursos quase em tempo real, uma infraestrutura de dados moderna deve ser flexível, escalável, automatizada, elástica, extensível, e também deve ser capaz de suportar atualizações e novas aplicações.

Neste contexto, as arquiteturas Kappa e Lambda podem lidar com conjuntos de dados (datasets) em tempo real (transmissão ou streaming de dados) e estáticos (batch ou por lote), mas elas fazem isso de maneiras muito diferentes.

Arquitetura Lambda

Nathan Marz,o primeiro que descreveu o paradigma Lambda, explicou que “computar funções arbitrárias em um conjunto de dados arbitrários em tempo real é um problema intimidador. Não existe uma única ferramenta que forneça uma solução completa. No lugar disso, você precisa usar uma variedade de ferramentas e técnicas para construir um sistema completo de Big Data”. Para abordar esse problema, as arquiteturas Lambda tentam resolver a questão do processamento de ambos tipos de fluxos de dados de forma híbrida, “decompondo o problema em três camadas: a camada de lote (batch layer), a camada de serviço (serving layer) e a camada de velocidade (camada de streaming ou speed layer)”.

Diagrama de uma arquitetura lambda, conforme descrito por Nathan Marz. Fonte.

Quando os dados alimentam o sistema, a camada batch e a camada de tempo real os recebem simultaneamente. Isso inicia o processamento e, em seguida, os dados do stream são corrigidos na camada batch. No entanto, cada camada tem uma tarefa específica a ser concluída.

Podemos ver que a arquitetura Lambda separa o processamento de dados em tempo real dos dados em lote. A camada batch pode levar seu tempo para processar toneladas de dados que levam muito tempo de cômputo, enquanto a camada de velocidade computa em tempo real e executa atualizações incrementais nos resultados da camada batch. A camada de serviço pega os outputs de ambos e usa esses dados para resolver consultas (queries) pendentes.

Arquitetura Kappa

A arquitetura Kappa é baseada em eventos e tem apenas uma camada de streaming e uma camada de serviço, portanto, todo tipo de dados que precisam ser processados serão tratados por uma única pilha de tecnologia. Este paradigma resolve a redundância nas arquiteturas Lambda, evitando a manutenção de duas bases de código diferentes para alimentar as camadas, bem como a estrutura multicamadas.

Diagrama de uma arquitetura Kappa. Fonte.

A ideia por trás de fazer tudo na camada de streaming é reproduzir dados (data replay): isso significa gestionar o reprocessamento contínuo e em tempo real dos dados usando apenas um mecanismo de processamento, evitando assim manter códigos diferentes para diferentes camadas. A arquitetura Kappa pode parecer mais simples, mas o que acontece quando os dados estão fora de ordem e precisam ser reorganizados, quando um campo precisa ser adicionado ou itens precisam ter referências cruzadas? Esses desafios são resolvidos mais facilmente pelo processamento em lote e as arquiteturas Kappa não foram projetadas para lidar com esse tipo de operações, embora algumas soluções para esses problemas tenham surgido com o tempo.

Vantagens e desvantagens das arquiteturas Lambda e Kappa

Vantagens

LambdaKappa
Os problemas de dados fora de ordem são resolvidos pelo processamento em lote.Resolve o problema de redundância da arquitetura Lambda com um único conjunto de infraestrutura.
Equilibra velocidade, confiabilidade e escalabilidade.Utiliza apenas uma base de código.
O processamento de conjuntos de dados completos permite otimizações de código.Utiliza menos recursos.
Grandes conjuntos de dados (petabytes) podem ser processados de forma mais eficiente.Ter cada ponto de dados como um evento de streaming permite que você revise o estado completo da organização a qualquer momento.
Abrange muitos cenários de análise de dados.As consultas só precisam ser feitas num único local.
Não há necessidade de modificar a arquitetura para novos casos de uso.

Desvantagens

LambdaKappa
A codificação dupla para o processamento de dados por lotes e em tempo real pode significar duas equipes de desenvolvedores.Difícil de implementar, especialmente a parte de reprodução de dados.
As mudanças em um lugar precisam ser propagadas para o outro.Lidar com eventos duplicados ou manter a ordem dos dados é difícil quando todos os dados são processados como um stream só.
Dupla infraestrutura significa duplo investimento, duplo monitoramento e duplo registro de logs.Mais difícil de escalar.
Módulos duplicados e muita carga de código.O uso extensivo de recursos computacionais é mais caro do que o armazenamento em frio (cold storage).
Reprocessa cada ciclo em lote.
É difícil migrar quando um conjunto de dados foi modelado para ser usado por uma arquitetura Lambda.

Casos de uso para arquiteturas Lambda

●     Quando os dados armazenados são permanentes e você precisa atualizar e incorporar novos dados ao banco de dados.

●     Quando o armazenamento imutável está sendo usado e as consultas do usuário devem ser respondidas como aconteceram.

●     Quando são necessárias respostas rápidas, porém o sistema precisa lidar com várias atualizações em outros fluxos de dados.

Casos de uso para arquiteturas Kappa

●     Quando os algoritmos aplicados a dados em tempo real e conjuntos de dados históricos são os mesmos, o uso de uma única camada de processamento de dados é melhor.

●     Ao desenvolver sistemas de dados de aprendizagem automática online, o que significa que não há necessidade de uma camada em lote.

●     Em geral, qualquer outro caso de uso que não seja específico para os requisitos da arquitetura Lambda pode ser resolvido elegantemente com uma arquitetura Kappa.

Arquitetura Lambda vs Arquitetura Kappa: como escolher uma para o meu negócio?

Ao iniciar um projeto de Big Data, uma análise completa ajuda você a decidir qual arquitetura usar, lembrando que uma migração de uma para a outra não é simples e às vezes pode ser uma missão impossível. Portanto, escolher a arquitetura certa desde o início é fundamental.

As arquiteturas Kappa e Lambda podem ser complementares, por enquanto. Talvez alguém possa preferir uma ou outra, porém a decisão final dependerá das necessidades de seu projeto. No entanto, continuaremos vendo projetos de análise de dados sendo feitos com ambos, pois não há uma única solução para cada tipo de problema apresentado no processamento de dados em tempo real.

Scroll to Top