Aller au contenu

Multilocation et isolation

Une plateforme partagée échoue dans l’une des deux directions. Soit l’isolation est une convention — un schéma de nommage que tout le monde promet de respecter — et une requête erronée lit ou écrase le travail de quelqu’un d’autre ; soit l’isolation est une installation séparée par locataire, et le coût de la plateforme se multiplie par le nombre de locataires.

La convention échoue silencieusement. Un point de terminaison de listage qui oublie son filtre renvoie les enregistrements de tous les locataires et ressemble exactement à un point de terminaison de listage qui fonctionne.

Chaque enregistrement que la plateforme stocke est écrit sous le locataire qui en est propriétaire, et le client qui lit et écrit ces enregistrements prend le locataire comme argument plutôt que comme option. Une lecture qui ne nomme pas un locataire ne renvoie pas tout ; elle ne compile pas.

Cette limite couvre tout, pas seulement les déploiements : les nœuds, les réseaux, les secrets, les tâches, les planifications et leur historique d’exécution appartiennent chacun à exactement un locataire. Le placement est limité par la même règle — le déploiement d’un locataire ne peut être placé que sur un nœud que ce locataire détient.

Les identifiants suivent également le locataire. Un secret est référencé par chemin, jamais transporté dans la description, et le chemin est résolu dans le stockage propre du locataire propriétaire au moment de l’envoi. Deux locataires peuvent utiliser des chemins identiques et ne jamais voir les données de l’autre.

Les noms sont délimités, pas globaux. Deux locataires peuvent exécuter tous les deux un déploiement appelé api, et aucun ne peut accéder à celui de l’autre.

Not this

Cette page ne traite pas des comptes utilisateurs, des rôles ou de la connexion. Les droits d’un principal au sein d’un locataire — qui peut construire et qui peut exécuter — est un modèle distinct avec son propre vocabulaire.

Il ne décrit pas non plus l’isolation au niveau réseau entre les conteneurs, qui est une propriété des réseaux auxquels un déploiement se connecte plutôt que de la multilocation.

L'écran des locataires dans le tableau de bord Odysseus, listant chaque locataire sur la plateforme — la frontière à l'intérieur de laquelle chaque déploiement, nœud et identifiant appartient.