Systèmes distribués : ces bonnes pratiques à apprendre des Blockchains
Vous allez beaucoup entendre parler de Bitcoin et de son architecture Blockchain ou « chaînes de blocs ». Car le fonctionnement de la crypto-monnaie est en passe de devenir un modèle pour le développement de systèmes distribués.
Les responsables IT se penchent de plus en plus sur la cryptomonnaie Bitcoin et son architecture de type Blockchain, qui lui confère sa nature distribuée. Une des raisons principales est que les architectes logiciels peuvent tirer plusieurs enseignements des chaînes de blocs, qui permettent un traitement sécurisé mais anonyme des transactions.
Le scénario selon lequel les gestionnaires de fonds vont convertir leurs milliards en une devise numérique n’est pas à l’ordre du jour. Les pouvoirs publics pourraient éventuellement interdire l'utilisation du Bitcoin, signant l'arrêt de mort de la monnaie par simple décision législative et la rendre ainsi inutile (sauf pour le commerce de marchandises illicites et pour ceux qui auront choisi de vivre en marge de la société). Mais quelle que soit votre opinion sur l'avenir de cette crypto-monnaie, il est indiscutable que les développeurs logiciels ont beaucoup à apprendre en termes de bonnes pratiques sur la manière dont les Bitcoins sont traités, exploités et vérifiés, et dont les transactions sont validées.
Side-chains
Quelle est la taille du registre Bitcoin actuel ? Il fait des centaines de gigaoctets, ce qui n'augure rien de bon pour une architecture censée être distribuée.
Pour résoudre ce problème, Bitcoin a recours au concept de chaînes collatérales (side-chains), de petits réseaux de données qui renvoient à la chaîne de blocs principale et peuvent être vérifiés par le biais de techniques de hachage et de cryptographie. Il s'agit d'une technique de fractionnement ou de segmentation utilisable par toute organisation confrontée au problème du traitement de gros blocs de données.
Sécurité
Et qu'en est-il de la sécurité ? On utilise souvent des jetons SAML pour établir le niveau d'autorisation et d'autorité d'un composant donné. Mais le traitement de ces jetons induit de nombreux frais supplémentaires, ce qui n'est guère favorable pour l'Internet des objets (IoT).
Bitcoin implémente, lui, un modèle non sécurisé, ce qui semble presque paradoxal pour un système réalisant des transactions monétaires de plusieurs millions de dollars. Mais le succès du réseau Bitcoin peut attester de sa validité en tant que schéma de conception. Ce type d'architecture peut s'avérer efficace pour les appareils basse consommation qui manquent de puissance de traitement, mais également de la capacité à dissiper la chaleur générée par un trop grand nombre de cycles d'horloge.
Reconnaissance
L’un des aspects les plus intéressants du système Bitcoin, que tout architecte visionnaire devrait intégrer à ses propres systèmes, réside dans le mécanisme incitatif qui assure un traitement rapide et efficace des transactions.
Ainsi, lorsqu'une transaction a été traitée dans la chaîne de blocs Bitcoin, le nœud ayant effectué la tâche est récompensé financièrement. Ce mécanisme valorise le travail réalisé, et il encourage les divers nœuds à exécuter encore plus de tâches et ce, avec une efficacité toujours plus grande.
Tous les systèmes ne peuvent pas récompenser les participants en numéraire, mais toute forme de reconnaissance peut fonctionner, même s'il s'agit simplement d'une saine émulation entre différents services. Récompenser les comportements positifs est un principe fondamental de psychologie humaine, et l'intégration d'une dose de renforcement positif à un système logiciel ne peut que favoriser la productivité, l'efficacité et la qualité du logiciel.
Conclusion
Nous avons beaucoup à apprendre de Bitcoin pour le développement d’architectures distribuées hautement évolutives. C'est pourquoi sa technologie sous-jacente mérite que l’on s’y attarde. Même si elle n’en est, encore, qu’à ses prémices.