Quand – et Quand Pas – Utiliser Apache Cassandra, Kafka, Spark et Elasticsearch en Open Source

À peu près toutes les décisions technologiques doivent répondre à deux critères essentiels: elles doivent vous permettre d’atteindre vos objectifs commerciaux et elles doivent bien fonctionner avec le reste de votre pile technologique. Lorsqu’il s’agit de sélectionner des technologies de couche de données pour construire votre architecture d’application, Apache Cassandra, Apache Kafka, Apache Spark et Elasticsearch en open source continuent de gagner en popularité.

Cependant, ils ne sont pas le bon choix pour tous les cas d’utilisation.

Examinons de plus près chacune de ces technologies et certains des cas d’utilisation qui sont – et ne sont pas – des applications avantageuses de ces solutions open source.

Apache Cassandra

Créé à l’origine par Facebook en 2007, Cassandra utilise une architecture Dynamo et un modèle de données de style Bigtable pour fournir un magasin de données NoSQL offrant une haute disponibilité et une grande évolutivité.

Quand vous devez utiliser Apache Cassandra

Cassandra est un choix idéal pour les cas d’utilisation qui nécessitent les plus hauts niveaux de disponibilité permanente. La base de données est également particulièrement bien adaptée aux organisations qui anticipent des charges de travail massives ou qui souhaitent s’assurer que leurs services peuvent se développer de manière flexible à mesure que les charges de travail se développent (et ont donc besoin de l’évolutivité facile fournie par Cassandra). Cassandra offre une redondance de données fiable et des opérations actives sur plusieurs centres de données.

Quand vous ne devriez pas

Cassandra consomme plus de ressources que les alternatives lorsqu’elle est chargée de l’entreposage de données ou du stockage analytique pur (même en tenant compte de l’utilisation des connecteurs Spark disponibles et des plugins Tableau et Hadoop). Cassandra est également mal adaptée à l’analyse en temps réel, en particulier sous la forme de requêtes ad hoc ou personnalisées de l’utilisateur final, car la nécessité d’implémenter du code côté application peut devenir compliquée. De plus, Cassandra ne répond pas à la plupart des exigences en matière d’ACIDE.

Apache Kafka

Créé pour la première fois par l’équipe technique de LinkedIn, Apache Kafka fournit une plate-forme de streaming et un bus de messages hautement évolutifs et hautement disponibles. Kafka fonctionne comme un journal distribué, dans lequel les messages nouvellement arrivés sont ajoutés à la tête d’une file d’attente et les lecteurs (consommateurs) les consommeront en fonction d’un décalage.

Quand vous devez utiliser Apache Kafka

Apache Kafka est généralement un choix judicieux pour les cas d’utilisation impliquant des microservices et une architecture orientée services. Kafka peut également servir de file d’attente de travail très efficace capable de coordonner des chemins de travail distincts, en réservant de la puissance de calcul en écoutant et en attendant l’arrivée du travail. Les capacités de traitement de flux de la plate-forme sont utiles pour la détection d’anomalies, les cumuls et les agrégations, ainsi que pour le passage de métriques. Kafka est également une option hautement performante pour le sourcing d’événements, la réconciliation des données sur divers microservices et pour fournir un journal de validation externe pour les systèmes distribués. D’autres cas d’utilisation appropriés incluent l’agrégation de journaux, le masquage et le filtrage des données, l’enrichissement des données et la détection des fraudes.

Quand vous ne devriez pas

Bien que cela puisse être tentant dans certains cas, il peut être mal avisé d’utiliser Kafka comme base de données ou source d’enregistrement, du moins sans une compréhension très solide des limitations et propriétés de Kafka pour ce cas d’utilisation. Une véritable base de données sera presque toujours plus simple à exploiter et plus flexible. Kafka est un choix tout aussi inapproprié pour le traitement en ordre sur un sujet entier. Dans tous les cas d’utilisation où l’objectif est d’acheminer rapidement des paquets de données vers la source finale, tels que des flux audio et vidéo en temps réel ou d’autres flux de données avec perte, les organisations doivent utiliser des solutions spécialement conçues à la place de Kafka.

Apache Spark

Cadre informatique de cluster à usage général adapté aux cas d’utilisation impliquant de gros volumes de données, Apache Spark divise les données et exécute le calcul sur ces segments, de sorte que les travailleurs effectuent tout le travail possible jusqu’à ce qu’ils aient besoin de données d’autres travailleurs. Cette conception offre à Spark une évolutivité et une disponibilité exceptionnelles, tout en le rendant très résistant à la perte de données.

Quand vous devez utiliser Apache Spark

Spark se prête aux cas d’utilisation impliquant des analyses à grande échelle, en particulier les cas où les données arrivent via plusieurs sources. Spark est une solution puissante pour ETL ou tout cas d’utilisation qui inclut le déplacement de données entre systèmes, soit lorsqu’il est utilisé pour remplir en continu un entrepôt de données ou un lac de données à partir de magasins de données transactionnels, soit dans des scénarios ponctuels tels que des migrations de bases de données ou de systèmes. Les organisations qui construisent des pipelines d’apprentissage automatique au-dessus des données existantes, travaillent avec un streaming à haute latence ou effectuent des analyses interactives, ad hoc ou exploratoires trouveront Spark un bon choix. Spark se prête également à aider les organisations à répondre à leurs besoins en matière de conformité en proposant le masquage des données, le filtrage des données et l’audit de grands ensembles de données du point de vue de la conformité.

Alors que vous ne devriez pas

En général, Spark ne sera pas le meilleur choix pour les cas d’utilisation impliquant un traitement en temps réel ou à faible latence. (Apache Kafka ou d’autres technologies offrent une latence de bout en bout supérieure pour ces besoins, y compris le traitement des flux en temps réel.) Lorsque vous travaillez avec des ensembles de données petits ou simples, Spark est le plus souvent une option trop excessive. En outre, en ce qui concerne l’entreposage de données et les lacs de données, il est préférable d’utiliser une technologie de niveau supérieur à la place d’Apache Spark, bien que de tels produits pour Spark existent.

Elasticsearch

Elasticsearch propose un moteur de recherche en texte intégral qui offre un large éventail de fonctionnalités pour rechercher et analyser des données non structurées. La technologie offre une recherche linéaire évolutive en temps quasi réel, un remplacement robuste de la recherche sans rendez-vous et des capacités d’analyse importantes.

Quand vous devez utiliser Elasticsearch

Elasticsearch est parfaitement adapté aux cas d’utilisation nécessitant une recherche en texte intégral, une recherche géographique, un grattage et une combinaison de données publiques, une journalisation et une analyse de journaux, des visualisations et des données et métriques d’événements de petit volume.

Quand vous ne devriez pas

Elasticsearch ne doit pas être utilisé comme base de données ou source d’enregistrement, avec des données relationnelles ou pour répondre aux exigences ACID.

Choisir des technologies complémentaires

Choisir la meilleure combinaison de technologies pour votre organisation (qu’elle soit open source ou autre) implique évidemment plus qu’une simple évaluation des solutions elles–mêmes – les décideurs doivent également envisager comment l’organisation adoptera et utilisera chaque solution dans le cadre de sa pile technologique. Apache Cassandra, Apache Kafka, Apache Spark et Elasticsearch offrent un ensemble de technologies particulièrement complémentaires que les organisations peuvent utiliser ensemble et qui offrent une liberté de droits de licence ou de verrouillage des fournisseurs grâce à leur nature open source. En associant ces technologies et en réalisant leurs avantages, les organisations peuvent atteindre leurs objectifs et permettre le développement d’applications hautement évolutives, disponibles, portables et résilientes.

Ben Slater est Directeur produit chez Instaclustr, qui fournit une plate-forme de services gérés de technologies open source telles qu’Apache Cassandra, Apache Spark, Elasticsearch et Apache Kafka.

Articles Connexes:

Voici Ce Que Doug Cutting Dit Être La Plus Grande Contribution De Hadoop

Une Décennie Plus Tard, Apache Spark Est Toujours En Activité

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.