Partager via


Implémentation d’un système distribué

Une façon d’implémenter des logiciels dans un système distribué consiste à utiliser la prise en charge réseau brute. Cette approche inclut des sockets, des canaux nommés ou des requêtes HTTP POST, GET, etc. Tous ces modèles forcent le développeur à utiliser des primitives de programmation de bas niveau, d’une manière ou d’une autre, ce qui force le développeur à gérer la représentation des données réseau (NDR), l’empaquetage des données, la gestion des conditions de trafic réseau et de défaillance, la protection et le chiffrement de l’intégrité des données, et ainsi de suite.

RPC offre un modèle de programmation où le développeur conserve le contrôle granulaire de l’interaction réseau entre le client et le serveur via une API riche, tout en épargnant aux développeurs les détails et les charges qu’un système distribué introduit généralement.

Par exemple, considérez le fardeau associé à différentes approches pour protéger l’intégrité et la confidentialité des échanges de messages dans un système distribué. Lorsque vous envisagez la sécurité réseau pour les échanges de paquets, certaines protections sont plus faibles, certaines plus fortes. Il n’y a pas de sécurité réseau vraie, seulement différents mécanismes de sécurité basés sur les paquets ; sécurité identifiant l’appelant (qui a tendance à être faible, car le contenu du paquet peut souvent être modifié en transit), la sécurité protégeant l’intégrité du paquet sans protéger sa confidentialité (diverses signatures et hachages) et la sécurité protégeant la confidentialité de l’échange de messages (différents mécanismes de chiffrement).

Un autre fardeau de l’implémentation d’un système distribué sécurisé est les algorithmes nécessaires pour implémenter des primitives de sécurité telles que le chiffrement, la signature, l’authentification, etc. Un développeur peut implémenter ces algorithmes, mais cela est difficile, sujette aux erreurs et même risqué, car les algorithmes résultants présentent souvent des failles de sécurité subtiles. Un développeur peut également utiliser un fournisseur de sécurité disponible pour implémenter la protection des interactions réseau au sein d’un système distribué.

En utilisant RPC, ces deux charges sont résolues très facilement. Un développeur doit simplement indiquer à RPC quel package de sécurité utiliser et quelle protection de sécurité doit être appliquée à l’échange de messages (en termes d’authentification, de chiffrement, d’authentification mutuelle, de suivi de l’identité de l’appelant, etc.). RPC s’occupe de tous les détails en arrière-plan d’une manière efficace, mais fournit au développeur un contrôle total sur la façon dont les données seront protégées.