Quando – e quando não-usar Apache de código aberto Cassandra, Kafka, Spark e Elasticsearch

quase toda a tomada de decisão de tecnologia deve atender a dois critérios essenciais: ela deve permitir que você atenda às suas metas de negócios e deve funcionar bem ao lado do resto de sua pilha de tecnologia. Quando se trata de selecionar tecnologias de camada de dados para construir sua arquitetura de aplicativo, o código aberto Apache Cassandra, Apache Kafka, Apache Spark e Elasticsearch continuam a aumentar em popularidade.

no entanto, eles não são a escolha certa para cada caso de uso.Vamos dar uma olhada mais profunda em cada uma dessas tecnologias e em alguns dos casos de uso que são – e não são – aplicações vantajosas dessas soluções de código aberto.

Apache Cassandra

Originalmente criado pelo Facebook, em 2007, Cassandra utiliza um Dínamo arquitetura e um Bigtable-estilo de modelo de dados para fornecer um armazenamento de dados NoSQL, que oferece alta disponibilidade e escalabilidade.

quando você deve usar Apache Cassandra

Cassandra é uma escolha ideal para casos de uso que exigem os níveis mais altos de disponibilidade sempre ativa. O banco de dados também é particularmente adequado para atender organizações que antecipam cargas de trabalho massivas ou que desejam garantir que seus serviços possam crescer de forma flexível à medida que as cargas de trabalho se expandem (e, portanto, precisam da fácil escalabilidade que o Cassandra fornece). O Cassandra oferece redundância de dados confiável e operações ativas em vários data centers.

quando você não deve

o Cassandra consome mais recursos do que alternativas quando encarregado de armazenamento de dados ou armazenamento de análise pura (mesmo considerando o uso de conectores Spark disponíveis e plug-ins Tableau e Hadoop). O Cassandra também é pouco adequado para análises em tempo real, especialmente na forma de consultas ad-hoc ou personalizadas do usuário final, porque a necessidade de implementar o código no lado do aplicativo pode se tornar complicada. Além disso, Cassandra não atende à maioria dos Requisitos de ácido.

Apache Kafka

criado pela primeira vez pela equipe técnica do LinkedIn, o Apache Kafka fornece uma plataforma de streaming e barramento de mensagens altamente escalável e altamente disponível. O Kafka funciona como um log distribuído, no qual as mensagens recém-chegadas são adicionadas ao cabeçalho de uma fila e os leitores (consumidores) as consumirão com base em um deslocamento.

Quando Você Deve Usar o Apache Kafka

Apache Kafka é geralmente uma escolha inteligente para casos de uso que envolvem microservices e arquitetura orientada a serviços. O Kafka também pode servir como uma fila de trabalho altamente eficaz que é capaz de coordenar caminhos de trabalho separados, reservando poder de computação ouvindo e esperando até que o trabalho chegue. Os recursos de processamento de fluxo da plataforma são úteis para detecção de anomalias, roll-ups e agregações, bem como para passar métricas. O Kafka também é uma opção altamente capaz para sourcing de eventos, reconciliação de dados em vários microsserviços e para fornecer um log de confirmação externo para sistemas distribuídos. Casos de Uso apropriados adicionais incluem agregação de log, mascaramento e filtragem de dados, enriquecimento de dados e detecção de fraude.

quando você não deve

embora possa ser tentador em alguns casos, pode ser aconselhável usar o Kafka como um banco de dados ou fonte de registro, pelo menos sem uma compreensão muito sólida das limitações e propriedades do Kafka para este caso de uso. Um banco de dados verdadeiro quase sempre será mais simples de operar e mais flexível. Kafka é uma escolha igualmente inadequada para processamento em ordem em um tópico inteiro. Em qualquer caso de uso em que o objetivo seja avançar os pacotes de dados para a fonte final rapidamente, como áudio e vídeo em tempo real ou outros fluxos de dados com Perdas, as organizações devem usar soluções específicas em vez de Kafka.

Apache Spark

uma estrutura de computação de cluster de uso geral adequada para casos de uso envolvendo grandes volumes de dados, o Apache Spark divide dados e executa computação nesses segmentos, de modo que os trabalhadores realizam todo o trabalho possível até que exijam dados de outros trabalhadores. Esse design oferece uma enorme escalabilidade e Disponibilidade, além de torná-lo altamente resiliente contra a perda de dados.

quando você deve usar o Apache Spark

o Spark se presta a casos de uso envolvendo análises em grande escala, especialmente casos em que os dados chegam por meio de várias fontes. O Spark é uma solução poderosa para ETL ou qualquer caso de uso que inclua a movimentação de dados entre sistemas, seja quando usado para preencher continuamente um data warehouse ou data lake a partir de armazenamentos de dados transacionais ou em cenários únicos, como migrações de banco de dados ou sistema. As organizações que criam pipelines de aprendizado de máquina no topo dos dados existentes, trabalhando com streaming de alta latência ou realizando análises interativas, ad-hoc ou exploratórias encontrarão um forte ajuste. O Spark também se presta a ajudar as organizações a atender às suas necessidades de Conformidade, oferecendo mascaramento de dados, filtragem de dados e auditoria de grandes conjuntos de dados do ponto de vista da conformidade.

quando você não deve

em geral, o Spark não será a melhor escolha para casos de uso envolvendo processamento em tempo real ou baixa latência. (Apache Kafka ou outras tecnologias oferecem latência ponta a ponta superior para essas necessidades, incluindo processamento de fluxo em tempo real.) Ao trabalhar com conjuntos de dados pequenos ou únicos, o Spark costuma ser uma opção muito excessiva. Além disso, quando se trata de data warehousing e data lakes, é melhor usar uma tecnologia de nível superior no lugar do Apache Spark, embora esses produtos para o Spark existam.

Elasticsearch

Elasticsearch oferece um mecanismo de pesquisa de texto completo que apresenta uma ampla gama de funcionalidades para pesquisar e analisar dados não estruturados. A tecnologia oferece pesquisa linear escalável perto de tempo real, fornece substituição robusta de pesquisa suspensa e recursos analíticos significativos.

quando você deve usar Elasticsearch

Elasticsearch é fortemente adequado para casos de uso que exigem pesquisa de texto completo, Pesquisa Geográfica, raspagem e combinação de dados públicos, análise de registro e log, visualizações e dados e métricas de eventos de pequeno volume.

quando você não deve

o Elasticsearch não deve ser usado como banco de dados ou fonte de registro, com dados relacionais ou para atender aos requisitos do ACID.

Seleção de Tecnologias Complementares

Escolher a melhor combinação de tecnologias para a sua organização (se o código aberto ou não) obviamente, implica mais do que apenas avaliar as próprias soluções – os tomadores de decisão também deve prever a forma como a organização irá adotar e utilizar cada solução, como parte de sua tecnologia de pilha. Apache Cassandra, Apache Kafka, Apache Spark e Elasticsearch oferecem um conjunto particularmente complementar de tecnologias que fazem sentido para as organizações utilizarem juntas e que oferecem liberdade de taxas de licença ou bloqueio de fornecedores graças à sua natureza de código aberto. Ao unir essas tecnologias e perceber suas vantagens coletadas, as organizações podem atingir seus objetivos e permitir o desenvolvimento de aplicativos altamente escaláveis, disponíveis, Portáteis e resilientes.

Ben Slater é o diretor de produtos da Instaclustr, que fornece uma plataforma de serviço gerenciado de tecnologias de código aberto, como Apache Cassandra, Apache Spark, Elasticsearch e Apache Kafka.

itens relacionados:

aqui está o que Doug Cutting diz ser a maior contribuição do Hadoop

uma década depois, o Apache Spark ainda está forte

Deixe uma resposta

O seu endereço de email não será publicado.