
Une file de tâches distribuée constitue un bon premier projet : soumettez une tâche, confiez-la à un worker, puis arrêtez ce worker avant sa réponse. La décision suivante, faut-il relancer la tâche et comment, introduit un problème que l'on retrouve dans de nombreux systèmes distribués.
Ces 12 projets de calcul distribué vont des workers indépendants aux bases de données répliquées et aux tests de panne. Chacun propose un environnement de départ limité, un défi technique, un test de réussite et une appréciation de l'utilité de Compute with Hivenet. Une section distincte présente le calcul volontaire pour les personnes qui souhaitent contribuer aux recherches scientifiques.
Choisissez le comportement à comprendre : reprendre un travail interrompu, réconcilier des mises à jour contradictoires, convenir d'un ordre d'exécution ou déplacer des données pendant que les requêtes continuent. Notre guide du traitement distribué explique le modèle général. L'objectif est de construire un système assez petit pour pouvoir expliquer ses défaillances.
Commencez par des processus séparés sur un seul ordinateur. Ils peuvent échanger des messages, dépasser leurs délais d'attente et s'arrêter indépendamment en tant que processus. Cela suffit pour étudier de nombreux comportements de protocole. Ils partagent toutefois un hôte, une interface réseau et d'autres ressources. Une expérience locale ne démontre pas la résistance aux pannes de machines indépendantes.
Les environnements proposés sont des configurations de départ, pas des exigences matérielles ni des recommandations de dimensionnement en production. Utilisez d'abord de petites entrées. Des ressources CPU suffisent, sauf si vous ajoutez volontairement un traitement nécessitant un GPU. Les appréciations concernant Hivenet sont éditoriales : Adapté désigne une option raisonnable pour une expérience distante autogérée ; Sous conditions signale des vérifications propres au projet ; Inutile indique que le cloud apporte peu à l'exercice initial.
Niveau : débutant. Construisez une API de soumission, un coordinateur qui enregistre l'état des tâches et des workers qui les prennent en charge puis renvoient leurs résultats. Attribuez un identifiant à chaque tâche. Ajoutez une durée maximale de prise en charge et une politique de relance pour le travail inachevé.
Hivenet : adapté. Des workers CPU indépendants constituent un premier déploiement distant raisonnable. Vous devez toujours mettre en œuvre la coordination et protéger les communications avec le coordinateur.
Niveau : débutant à intermédiaire. Découpez un ensemble de textes en partitions, exécutez des tâches map, regroupez les résultats intermédiaires par clé, puis lancez les tâches reduce. Un comptage de mots ou un petit index inversé fournit des résultats faciles à examiner. Le TP MapReduce du MIT propose un point de départ structuré avec un coordinateur et des workers.
Hivenet : adapté. Des workers distants peuvent traiter des portions indépendantes, mais vous devez organiser l'accès aux données et la coordination. Le déploiement d'instances ne crée pas un service MapReduce géré.
Niveau : intermédiaire. Construisez une file d'URL partagée, plusieurs workers de collecte, un mécanisme de déduplication et un stockage des résultats. Commencez par un site de test que vous contrôlez, avec des liens connus, des redirections, des URL en double et des réponses volontairement lentes.
Hivenet : adapté. Les workers peuvent fonctionner comme des services autogérés. Avant d'explorer des sites externes, respectez robots.txt, les conditions applicables et les limites de requêtes ; gardez un périmètre limité.
Niveau : intermédiaire. Implémentez GET et PUT sur trois répliques. Commencez par une politique de réplication documentée, par exemple un leader pour les écritures et des répliques mises à jour de manière asynchrone. Enregistrez les versions pour rendre visibles les lectures obsolètes et la reprise.
Hivenet : sous conditions. Vérifiez la connectivité, la latence et le comportement du disque avant de passer à des nœuds distants. Des quorums de lecture et d'écriture qui se recoupent ne suffisent pas à établir la linéarisabilité : la gestion des versions, les écritures concurrentes et les règles de panne comptent aussi.
Niveau : intermédiaire. Découpez les fichiers en fragments, suivez leurs emplacements dans un service de métadonnées et conservez deux copies de chaque fragment sur des processus de stockage distincts. Ajoutez des sommes de contrôle et un worker de réparation. Considérez le résultat comme un prototype pédagogique.
Hivenet : sous conditions. Confirmez le cycle de vie du stockage et conservez des copies indépendantes des données de test importantes. Cet exercice nécessite votre propre service de fichiers ; il ne suppose pas un système de fichiers distribué géré.
Niveau : intermédiaire. Faites partager un quota de requêtes à deux instances applicatives. Commencez par un compteur atomique dans un limiteur central, puis comparez-le à des quotas répartis ou à des compteurs synchronisés périodiquement.
Hivenet : adapté. De petits services distants permettent d'observer le coût de coordination sur des connexions réelles. Gardez une charge modeste jusqu'à ce que le comptage soit correct.
Niveau : intermédiaire à avancé. Utilisez un type de données répliqué sans conflit (CRDT) pour construire un éditeur partagé dont les clients peuvent modifier le texte hors connexion, puis fusionner leurs mises à jour. Vous pouvez commencer par intégrer une bibliothèque comme Yjs, puis implémenter séparément un petit type de données répliqué pour étudier ses règles de fusion.
Hivenet : inutile pour l'exercice local. Il devient une option raisonnable si vous avez ensuite besoin d'un service distant de synchronisation pour des clients sur plusieurs réseaux. La synchronisation de texte ne nécessite pas de GPU.
Niveau : intermédiaire à avancé. Permettez aux pairs d'annoncer et de télécharger des fragments entre eux. Utilisez des identifiants de contenu et des sommes de contrôle, puis gérez l'arrivée et le départ des pairs. Une liste explicite de pairs suffit pour la première version ; la recherche distribuée peut venir ensuite.
Hivenet : sous conditions. Vérifiez les connexions entrantes et sortantes, les protocoles choisis et l'exposition des ports. Un point d'accès applicatif public ne prend pas nécessairement en charge tous les protocoles pair à pair.
Niveau : avancé. Implémentez les élections, les mandats, les journaux répliqués, les règles de validation, la persistance de l'état et la reprise. Appliquez les commandes validées à une machine à états déterministe simple. Le TP Raft du MIT fournit un exercice structuré et des tests.
Hivenet : sous conditions. Les essais distants peuvent prolonger les tests locaux après vérification du stockage et du réseau. Les temps mesurés sur un déploiement ne déterminent pas les performances générales de Raft.
Niveau : avancé. Répartissez les clés entre des groupes de stockage, puis ajoutez un service de configuration et une migration contrôlée des partitions. Établissez la réplication dans chaque groupe avant de tenter une migration sous charge.
Hivenet : sous conditions. Prévoyez la persistance, les communications entre nœuds et la reprise avant de placer les groupes sur des instances distantes. Ajouter des nœuds ne crée pas automatiquement des domaines de panne indépendants utiles.
Niveau : avancé. Étendez la file de tâches avec l'enregistrement des workers, leurs ressources disponibles, des priorités et des décisions de placement. Ajoutez des affectations qui expirent, souvent appelées baux, et une reprise lorsqu'un worker cesse de répondre.
Hivenet : adapté aux workers asynchrones. Il s'agit de votre propre expérience d'ordonnancement. Les tâches étroitement couplées nécessitent des vérifications supplémentaires du réseau et de la coordination ; ne supposez pas la présence d'un cluster Kubernetes ou Slurm géré.
Niveau : avancé. Construisez un contrôleur qui lance un autre projet de cette liste, injecte certaines pannes et enregistre l'historique des opérations. Incluez des arrêts de processus, des réponses retardées, des requêtes dupliquées et des communications interrompues.
Hivenet : sous conditions. Limitez les pannes injectées aux ressources que vous contrôlez et vérifiez les commandes autorisées par votre instance. Les tests de fiabilité n'établissent pas, à eux seuls, la sécurité du système ni sa capacité à gérer toutes les pannes.
Le calcul volontaire permet d'exécuter des tâches scientifiques sur votre matériel. Vous découvrez les limites de ressources, les files de travail et les délais de remise des résultats, mais exécuter le client d'un projet ne vous fait pas implémenter ses protocoles internes.
L'annuaire des projets BOINC présente des projets scientifiques et leurs plateformes compatibles. Il comprend notamment Einstein@home en astrophysique, PrimeGrid en mathématiques et Rosetta@home en biologie. Une présence dans l'annuaire ne garantit pas la disponibilité actuelle de tâches adaptées : vérifiez les annonces, les exigences et l'état des serveurs de chaque projet. Science United propose une autre façon de participer via BOINC, en choisissant les domaines scientifiques à soutenir.
Folding@home utilise son propre client, distinct de BOINC, pour simuler les mouvements des protéines. LHC@home, présent dans l'annuaire BOINC, soutient les recherches du CERN en physique. Il ne faut pas le confondre avec le Worldwide LHC Computing Grid utilisé par les établissements de recherche participants.
Consultez les consignes actuelles de participation, même pour les noms connus. Le site de SETI@home, consulté en octobre 2026, indique que le projet est en hibernation et ne distribue plus de tâches, tandis que l'analyse des données existantes se poursuit.
Commencez avec du matériel que vous possédez déjà et fixez des limites adaptées à sa température, à sa consommation et à vos autres activités. Tenez compte du coût de l'électricité et des échéances des tâches. Louer des instances cloud pour donner de la puissance de calcul constitue une décision de dépense distincte, pas une condition pour participer.
Passez à plusieurs hôtes lorsqu'ils permettent de répondre à une question précise : la reprise d'un worker résiste-t-elle à une connexion perdue, quelle latence ajoute la coordination distante, ou comment les clients se comportent-ils depuis des réseaux différents ?
Le guide de démarrage de Compute with Hivenet présente les conteneurs et machines virtuelles, les options avec vCPU seuls ou GPU et les paramètres de connexion. Consultez les ressources disponibles et les tarifs actuels dans la console. Choisissez des ressources CPU pour ces projets, sauf si le traitement lui-même nécessite un GPU.
Avant de déployer un système avec état ou pair à pair, testez les connexions entre nœuds, les ports requis, le stockage et la latence. Conservez des copies de reprise hors de l'expérience : la suppression définitive d'une instance efface ses données locales. Vous gérez l'application, la coordination, les contrôles d'accès et la reprise ; ne supposez pas la présence d'un logiciel de cluster géré ni d'un réseau privé à haut débit.
Conservez vos relevés avec le code : topologie, configuration, données d'entrée, calendrier des pannes, comportement observé et limites restantes. Notre guide de gestion des systèmes distribués présente les responsabilités opérationnelles qui augmentent lorsque ces prototypes deviennent des services.
Pour un premier projet, terminez le test de panne et de relance de la file de tâches avant d'ajouter un tableau de bord. Pour un système avec état, précisez les garanties de lecture et d'écriture avant d'ajouter des répliques. Pour les projets avancés, construisez un environnement de test contrôlable avant d'interpréter les performances.
Un projet terminé utile dispose d'une installation reproductible, d'une version de référence correcte, d'un cas de panne documenté et de preuves que la reprise respecte les garanties annoncées. Choisissez l'exercice le plus petit qui révèle le problème distribué que vous souhaitez comprendre.
Choisissez une charge de travail d’IA, de calcul ou de stockage à tester sur Hivenet, ou échangez avec notre équipe sur sa mise en production.