AWS MSK pour les débutants : Guide complet pour bien débuter

De nombreuses entreprises choisissent de passer à AWS MSK pour éviter les maux de tête opérationnels liés à la gestion des clusters Apache Kafka.

Dans ce tutoriel, nous explorerons les fonctionnalités, avantages et meilleures pratiques d’AWS MSK. Nous passerons également en revue les étapes de base pour configurer AWS MSK et verrons comment cela se compare à d’autres services populaires tels que Kinesis et Confluent.

Qu’est-ce que AWS MSK?

Tout d’abord, comprenons Apache Kafka et pourquoi il est si utile pour le streaming de données.

Apache Kafka est une plateforme de streaming distribuée open source qui gère des flux de données en temps réel et peut construire des applications pilotées par des événements. Il peut ingérer et traiter des données en continu au fur et à mesure de leur arrivée.

Selon le site web de Kafka, plus de 80% des sociétés du Fortune 100 font confiance à Kafka et l’utilisent.

Plus important encore, Kafka est scalable et très rapide. Cela signifie qu’il peut gérer beaucoup plus de données que ce qui pourrait tenir sur une seule machine et avec une latence extrêmement faible.

Si vous souhaitez apprendre à créer, gérer et résoudre les problèmes de Kafka pour le streaming de données, envisagez de suivre le cours d’Introduction à Kafka

Quand est le meilleur moment pour utiliser Apache Kafka ? 

  1. Lorsque vous avez besoin de gérer des quantités massives de données en temps réel, telles que le traitement des flux de données des appareils IoT.
  2. Lorsque vous avez besoin d’un traitement immédiat des données et d’une analyse, comme pour le suivi en temps réel de l’activité des utilisateurs ou les systèmes de détection de fraudes.
  3. Dans les scénarios d’événements-sourcing où vous avez besoin de pistes de vérification avec des exigences de conformité et des réglementations.

Cependant, la gestion des instances Kafka peut être source de nombreux maux de tête. C’est là qu’intervient AWS MSK.

Image by Author

AWS MSK (Managed Streaming for Kafka) est un service entièrement géré qui gère la provision, la configuration, l’évolutivité et la maintenance des clusters Kafka. Vous pouvez l’utiliser pour construire des applications qui réagissent instantanément aux flux de données.

Kafka est souvent utilisé dans le cadre d’une configuration de traitement de données plus importante, et AWS MSK facilite encore plus la création de pipelines de données en temps réel qui déplacent des données entre différents systèmes.

Comment Amazon MSK fonctionne. Source de l’image: AWS

Si vous êtes nouveau sur AWS, envisagez de suivre notre cours Introduction à AWS pour vous familiariser avec les bases. Quand vous serez prêt, vous pourrez passer à notre cours Technologie et Services Cloud AWS pour explorer l’ensemble complet des services sur lesquels les entreprises comptent.

Fonctionnalités de AWS MSK

AWS MSK se distingue de la concurrence car c’est un service entièrement géré. Vous n’avez pas à vous soucier de la configuration des serveurs ou des mises à jour.

Cependant, il y a plus que cela. Ces cinq principales caractéristiques de AWS MSK en font un investissement intéressant :

  1. MSK est hautement disponible, et AWS garantit que les SLA stricts sont respectés. Il remplace automatiquement les composants défaillants sans interruption pour vos applications.
  2. MSK dispose d’une option d’auto-scaling pour le stockage, il évolue donc automatiquement en fonction de vos besoins. Vous pouvez également rapidement ajuster à la hausse ou à la baisse votre stockage ou ajouter plus de courtiers selon vos besoins.
  3. En termes de sécurité, MSK est une solution complète qui offre un chiffrement au repos et en transit. Il s’intègre également avec AWS IAM pour le contrôle d’accès.
  4. Si vous utilisez déjà Kafka, vous pouvez passer à MSK sans changer votre code car MSK prend en charge toutes les API et outils Kafka habituels.
  5. MSK est une option économique qui ne nécessite pas d’embaucher une équipe d’ingénierie entière pour surveiller et gérer les clusters. AWS va même jusqu’à affirmer qu’il peut être jusqu’à 40% moins cher que Kafka auto-géré.

Avantages de l’utilisation d’AWS MSK

Comme nous l’avons déjà vu, AWS MSK apporte une valeur immédiate grâce à sa disponibilité, sa scalabilité, sa sécurité et sa facilité d’intégration. Ces avantages essentiels en ont fait le choix privilégié des entreprises exécutant des charges de travail Kafka dans le cloud.

AWS MSK résout quatre défis critiques auxquels chaque projet de diffusion de données est confronté :

  • MSK est un service entièrement géré, vous permettant de vous concentrer sur la création d’applications plutôt que sur la gestion de l’infrastructure.
  • MSK est hautement disponible et fiable, ce qui est devenu de plus en plus critique de nos jours, car les utilisateurs attendent un accès 24h/24 et 7j/7 aux services et applications.
  • MSK dispose de capacités de sécurité complètes et critiques.
  • MSK dispose d’une intégration native avec AWS, ce qui rend beaucoup plus facile la construction de solutions complètes de données en streaming au sein de l’écosystème AWS.

Mise en place d’AWS MSK

Pour commencer avec AWS MSK, créez d’abord votre compte AWS. Si c’est la première fois que vous utilisez AWS, apprenez comment configurer votre compte AWS avec notre tutoriel complet.

Connectez-vous à la console de gestion AWS et ouvrez la console MSK. Cliquez sur « Créer un cluster » pour démarrer le processus de configuration. 

Démarrer avec AWS MSK. Source de l’image: AWS

Sélectionnez « Création rapide » pour des paramètres par défaut, puis saisissez un nom de cluster descriptif.

À partir de là, vous avez de nombreuses options supplémentaires à sélectionner, qui dépendent toutes de vos propres besoins pour votre cluster. Voici un aperçu rapide des choix :

  • Type de cluster : « Provisionné » ou « Serverless »
  • Version Apache Kafka
  • Type de courtier : « Standard » ou « Express »
  • Taille du courtier
  • Volume de stockage EBS

Options de configuration AWS MSK

Le cluster est toujours créé au sein d’un Amazon VPC. Vous pouvez choisir d’utiliser le VPC par défaut ou configurer et spécifier un VPC personnalisé.

Maintenant, il vous suffit d’attendre que votre cluster soit activé, ce qui peut prendre de 15 à 30 minutes. Vous pouvez surveiller l’état de votre cluster depuis la page de résumé du cluster, où vous verrez le statut passer de « Création » à « Actif ».

Ingestion et Traitement de Données avec AWS MSK

Une fois votre cluster MSK configuré, vous devrez créer une machine cliente pour produire et consommer des données sur un ou plusieurs sujets. Étant donné qu’Apache Kafka s’intègre si bien avec de nombreux producteurs de données (comme les sites web, les appareils IoT, les instances Amazon EC2, etc.), MSK bénéficie également de cet avantage.

Apache Kafka organise les données dans des structures appelées topics. Chaque topic se compose d’une ou de plusieurs partitions. Les partitions sont le degré de parallélisme dans Apache Kafka. Les données sont distribuées à travers les courtiers en utilisant la partition des données.

Termes clés à connaître lors de la manipulation des clusters Apache Kafka:

  • Topics sont le moyen fondamental d’organiser les données dans Kafka.
  • Les producteurs sont des applications qui publient des données sur les topics – ils génèrent et écrivent des données sur Kafka. Ils écrivent des données sur des topics et des partitions spécifiques.
  • Les consommateurs sont des applications qui lisent et traitent des données à partir de sujets. Ils extraient des données des sujets auxquels ils sont abonnés.

Lors de la construction d’une architecture orientée événements avec AWS MSK, vous devez configurer plusieurs couches, dont MSK est le principal composant d’ingestion de données. Voici un aperçu des couches qui peuvent être requises :

  1. Configuration de l’ingestion de données
  2. Couche de traitement
  3. Couche de stockage
  4. Couche d’analyse

Exemple d’une architecture orientée événements avec Amazon MSK et Amazon EventBridge.Source de l’image : AWS

Si vous souhaitez tirer parti de Python dans vos flux de travail de pipeline de données , consultez notre cours Introduction à AWS Boto en Python.

Meilleures pratiques pour utiliser AWS MSK

AWS MSK est relativement simple à configurer et à utiliser immédiatement. Cependant, certaines meilleures pratiques essentielles amélioreront les performances de vos clusters et vous feront gagner du temps plus tard.

Adaptez la taille de votre cluster

Vous devrez choisir le bon nombre de partitions par courtier et le bon nombre de courtiers par cluster.

Un certain nombre de facteurs peuvent influencer vos décisions ici ; cependant, AWS a fourni des recommandations et ressources pratiques pour vous guider dans ce processus.

De plus, AWS fournit une feuille de calcul de dimensionnement et de tarification facile à utiliser pour vous aider à estimer la taille correcte de votre cluster et les coûts associés à l’utilisation d’AWS MSK par rapport à un cluster Kafka EC2 auto-géré similaire.

Créez des clusters hautement disponibles

AWS recommande de configurer vos clusters pour qu’ils soient hautement disponibles. C’est particulièrement important lors de la réalisation d’une mise à jour (comme la mise à jour de la version Apache Kafka) ou lorsque AWS remplace un courtier. 

Pour garantir que vos clusters soient hautement disponibles, vous devez effectuer trois actions :

  1. Configurez vos clusters à travers trois zones de disponibilité (également appelé un cluster à trois zones de disponibilité).
  2. Configurez le facteur de réplication à 3 ou plus.
  3. Configurez le nombre minimum de répliques synchronisées à RF-1.

La grande chose à propos d’AWS est qu’ils s’engagent à des SLA stricts pour les déploiements multi-zones ; sinon, vous obtenez vos crédits en retour.

Surveillez l’utilisation du disque et du CPU

Deux métriques clés à surveiller via AWS CloudWatch sont l’utilisation du disque et du CPU. Faire cela garantira non seulement le bon fonctionnement de votre système, mais contribuera également à réduire les coûts.

La meilleure façon de gérer l’utilisation du disque et les coûts de stockage associés est de mettre en place une alarme CloudWatch qui vous alerte lorsque l’utilisation du disque dépasse une certaine valeur, comme 85 %, et d’ajuster vos politiques de rétention. Définir un temps de rétention pour les messages dans votre journal peut grandement vous aider à libérer de l’espace disque automatiquement.

De plus, pour maintenir les performances de votre cluster et éviter les goulots d’étranglement, AWS recommande de maintenir l’utilisation totale du processeur de vos courtiers en dessous de 60 %. Vous pouvez surveiller cela en utilisant AWS CloudWatch, puis prendre des mesures correctives en mettant à jour la taille de vos courtiers, par exemple.

Protégez vos données en utilisant le chiffrement en transit

Par défaut, AWS chiffre les données en transit entre les courtiers de votre cluster MSK. Vous pouvez désactiver cela si votre système rencontre une utilisation élevée du processeur ou une latence. Cependant, il est fortement recommandé de garder le chiffrement en transit activé en tout temps et de trouver d’autres moyens d’améliorer les performances si cela pose problème pour vous.

Découvrez notre cours Gestion de la sécurité et des coûts AWS pour en savoir plus sur la sécurisation et l’optimisation de votre environnement cloud AWS et la gestion des coûts et des ressources dans AWS.

Comparaison de AWS MSK avec d’autres outils de streaming

Lorsqu’il s’agit de décider quel outil est le meilleur pour un projet, nous devons souvent évaluer plusieurs options. Voici les alternatives les plus courantes à AWS MSK et comment elles se comparent.

AWS MSK contre Apache Kafka sur EC2

Le principal compromis entre MSK et une option auto-hébergée utilisant EC2 réside dans la commodité et le contrôle : MSK vous demande moins de gestion mais offre moins de flexibilité, tandis qu’EC2 vous donne un contrôle complet mais nécessite plus de travail.

AWS MSK gère toutes les tâches opérationnelles complexes, avec une approvisionnement et une configuration automatiques. Le côté positif est qu’il n’y a pas de coûts d’infrastructure initiaux. Il y a également une intégration transparente avec d’autres services AWS et des fonctionnalités de sécurité robustes.

Utiliser Kafka sur EC2, en revanche, implique une configuration et une installation plus manuelles, et vous devez également gérer vous-même toute la maintenance et les mises à jour. Cela offre beaucoup plus de flexibilité mais pourrait entraîner plus de complexité et des coûts opérationnels plus élevés, et pourrait nécessiter des équipes plus qualifiées.

AWS MSK vs. Kinesis

Utilisez Kinesis pour sa simplicité et son intégration profonde avec AWS, et MSK pour la compatibilité Kafka ou un plus grand contrôle sur votre configuration de streaming.

Kinesis est une architecture entièrement serverless qui utilise des shards pour le streaming de données. AWS gère tout pour vous. Cependant, il y a des limites de rétention des données à prendre en compte. Kinesis est une excellente solution pour des besoins simples de streaming de données.

AWS MSK repose sur le modèle de topics et de partitions de Kafka, avec une rétention de données pratiquement illimitée, en fonction de votre stockage. C’est une solution plus flexible et personnalisable que vous pouvez migrer hors d’AWS si nécessaire.

Si vous n’êtes pas familier avec Kinesis, nous avons un cours qui vous guide à travailler avec les données en streaming en utilisant AWS Kinesis et Lambda.

AWS MSK vs. Confluent

Choisissez Confluent si vous avez besoin de fonctionnalités complètes et de support, et choisissez MSK si vous êtes fortement investi dans AWS et avez de l’expertise en Kafka en interne.

Confluent dispose d’un ensemble de fonctionnalités riches avec de nombreux connecteurs intégrés. C’est une option plus coûteuse dans l’ensemble, mais propose une couche gratuite avec des fonctionnalités limitées. Confluent fonctionne bien pour les charges de travail variables et a un processus de déploiement plus facile.

En comparaison, AWS est plus rationalisé et se concentre sur les fonctionnalités de base de Kafka. Pour accéder à un ensemble de fonctionnalités plus étendu, AWS MSK doit être intégré à d’autres services AWS. Heureusement, cette intégration est transparente. AWS MSK a un coût de base inférieur et peut être une bonne option pour des charges de travail cohérentes.

Le tableau suivant offre une comparaison d’AWS MSK et de ses alternatives :

Fonctionnalité

AWS MSK

Apache Kafka sur EC2

Kinesis

Confluent

Déploiement

Géré entièrement

Auto-géré sur EC2

Géré entièrement

Géré entièrement ou auto-géré

Facilité d’utilisation

Facile à configurer et à gérer

Nécessite une configuration et une mise à l’échelle manuelles

Configuration simple ; natif AWS

Interface utilisateur conviviale et outils avancés

Scalabilité

Auto-scaling avec ajustements manuels

Échelle manuelle

Évolutivité transparente

Auto-scaling avec flexibilité

Latence

Latence faible

Latence faible

Latence inférieure pour les petits payloads

Comparable à MSK

Support de protocole

Compatible avec l’API Kafka

Compatible avec l’API Kafka

Protocole propriétaire Kinesis

API Kafka et protocoles supplémentaires

Conservation des données

Configurable (jusqu’à 7 jours par défaut)

Configurable

Configurable (max 365 jours)

Très configurable

Surveillance et métriques

Intégré avec CloudWatch

Requiert une configuration personnalisée

Intégré avec CloudWatch

Outils de surveillance avancés

Coût

Facturation à l’utilisation

Basé sur le tarif des instances EC2

Facturation à l’utilisation

Basé sur l’abonnement

Sécurité

Fonctionnalités de sécurité intégrées AWS

Doit configurer la sécurité manuellement

Intégré à AWS IAM

Fonctionnalités de sécurité complètes

Adaptation aux cas d’utilisation

Idéal pour les utilisateurs de Kafka dans l’écosystème AWS

Flexible, mais nécessite un entretien élevé

Idéal pour les applications natives AWS

Utilisateurs avancés de Kafka et entreprises

Closing Thoughts

Apache Kafka est le choix privilégié pour les situations où vous avez besoin d’une solution fiable à grande échelle, qui ne peut se permettre de perdre des données et nécessite de connecter plusieurs sources de données ou de construire des pipelines de données complexes. AWS MSK évite bon nombre des maux de tête liés à la configuration de clusters Kafka, permettant aux développeurs de se concentrer davantage sur la construction et l’amélioration des applications plutôt que sur l’infrastructure.

Obtenir une certification AWS est un excellent moyen de commencer votre carrière AWS. Vous pouvez développer vos compétences AWS en consultant notre catalogue de cours et en acquérant de l’expérience pratique grâce à des projets!

Source:
https://www.datacamp.com/tutorial/aws-msk