Go to Hackademy website

La métaphysique des systèmes proudhoniens

Cédric Brancourt

Posté par Cédric Brancourt dans les catégories architecture

Libertaire, Anarchiste, Utopiste, ZADiste, Étudiant (68) … C’est la saison ! Quelle étiquette coller à un système dessiné pour privilégier l’autonomie et l’indépendance de ses composants ?

C’est une promenade philosophique, sans conclusion, qui fait le parallèle entre une « Utopie » sociale et le design d’un système.

Proudhonien ?

Ces deux dernières années mes recherches documentaires professionnelles ont porté principalement sur la composition de systèmes distribués, plus particulièrement sur la capacité à diviser ces systèmes en sous-systèmes découplés.

L’objectif est de devenir plus efficace sur des systèmes dont l’éventail fonctionnel est large, et donc d’éviter le couplage entre les différentes fonctionnalités offertes par le système. (voir Pérégrinations vers une architecture découplée)

Ces recherches ont fait écho à certaines de mes lectures sur les possibles alternatives de société et plus particulièrement la pensée de Pierre Joseph Proudhon.

Pierre-Joseph_Proudhon_thumb_650.png

Aujourd’hui quand je regarde ces systèmes avec une interprétation personnelle, ils présentent en effet des qualités et similitudes avec les aspirations de P.J. Proudhon.

De l’Utopie idéaliste ?

On peut se laisser porter par le courant, nager à contre courant, mais aussi rejoindre la berge et continuer à pied ! Cette dernière option n’est pas envisagée quand on idéalise, mais s’avère bien plus pratique.

Dans son genre, Proudhon n’était pas un idéaliste mais un pragmatique. Il donnait dans la proposition concrète. Une proposition qui tendait vers un idéal mais qui était faite aussi de compromis afin de la rendre pratique. Quitte à se contredire ! Ce qui lui a été reproché parfois.

Parmi l’énumération nombreuse des droits de l’homme que la sagesse du XIXe siècle recommence si souvent et si complaisamment, deux assez importants ont été oubliés, qui sont le droit de se contredire et le droit de s’en aller. — Charles Baudelaire

Dans la conception du système découplé il n’est point nécessaire de dogmatiser ni de réaliser l’idéal dans son intégralité. C’est une direction à suivre plus qu’un objectif à atteindre. Une force qui s’opère comme un contre-pouvoir aux processus qui sont employés par réflexe pavlovien.

L’ordre sans le pouvoir

Le pouvoir s’exerce sur des sujets, d’autres personnes ou entités. Quand il s’exerce sur soi, j’imagine qu’il doit s’appeler l’indépendance.

Dans notre système découplé l’abolition du pouvoir autoritaire peut se traduire par un passage du mode de coopération de l’orchestration à la chorégraphie.

mon image
Building Microservices by Sam Newman, O'Reilly

Il n’y a plus de relation impérative entre les composants du système, mais une relation réactive, comme le montrent les études plus formelles.

La notion de contrôle de flux assurée par une cascade d’orchestrateurs disparaît au profit de l’apparition de plusieurs acteurs qui agissent de concert quand on leur donne la réplique.

Si le résultat de loin ressemble à un brouhaha, localement il est loin de brouiller l’écoute.

La décentralisation

En passant du mode orchestration au mode chorégraphie, en plus de nous affranchir de la notion de contrôle nous décentralisons la décision pour la rendre locale.

Chaque service est en charge d’opérer sur son strict périmètre de responsabilité, ses propres données. Aucun autre service ne peut faire d’ingérence dans ces dernières, ni produire d’effet de bord non maîtrisé. Il ne peut y avoir d’effets de bords sur d’autres services.

Autrement dit les décisions sont prises localement et ont un impact direct local uniquement.

La commune est par son essence… un être souverain. En cette qualité, la commune a le droit de se gouverner elle-même, de s’administrer, de s’imposer des taxes, de disposer de ses propriétés et de ses revenus, de créer pour sa jeunesse des écoles, d’y nommer des professeurs, de faire sa police, d’avoir sa gendarmerie, et sa garde civique ; de nommer ses juges ; d’avoir ses journaux, ses réunions, ses sociétés particulières, ses entrepôts, sa mercuriale, sa banque, etc. La commune prend des arrêtés, rend des ordonnances : qui empêche qu’elle n’aille jusqu’à se donner des lois ? Elle a son Église, son culte, son clergé, librement élus ; elle discute publiquement, en conseil municipal, dans ses journaux ou ses cercles, tout ce qui touche à ses intérêts ou excite son opinion… Il n’y a point de milieu : la commune sera souveraine ou succursale, tout ou rien — P.J. Proudhon

Le fédéralisme

Toutes mes idées économiques… peuvent se résumer en ces trois mots : Fédération agricole industrielle ; toutes mes vues politiques se réduisent à une formule semblable : Fédération politique ou décentralisation… Toutes mes espérances actuelles et futures sont exprimées par ce troisième terme, corollaire des deux autres : Fédération progressive — P.J. Proudhon

Pour que les systèmes puissent coopérer, ils doivent adhérer à des principes communs. L’adhésion d’un service à un système est une initiative qui est gérée dans son périmètre de décision.

En souscrivant à un bus d’événements commun, les services forment une fédération.

La Bretagne Fédérale - novembre 1931

Le contrat de fédération, dont l’essence est de réserver toujours plus aux citoyens qu’à l’État, aux autorités municipales et provinciales plus qu’à l’autorité centrale, pouvait seul nous mettre sur le chemin de la vérité. — P.J. Proudhon

Les échanges au sein de cette fédération sont régulés par un contrat. C’est la clé de voûte du système et de la fédération.

La définition des APIs et des formats de messages échangés de manière formelle et concrète permet aux composants du système de s’intégrer sans heurts. Empaqueté et distribué, notre contrat peut être utilisé par les tests d’intégration des services qui y souscrivent pour assurer la cohésion de l’ensemble.

Voila l’aspect fédéraliste du système. Son rôle est d’assurer la composition d’entités autonomes afin de pouvoir achever collectivement des projets plus grands.

La propriété

data-ownership_thumb_650.png

Chaque service est seul propriétaire et exploitant de ses données internes. Il peut ainsi garantir sa cohérence interne et son autonomie.

Dans un système composé de Self-Contained Systems, dont l’intégration repose sur un flux d’événements chaque système maintient sa propre version d’une donnée plus globale.

Le flux d’événements est partagé entre les différents services, chacun constitue son jeu de données local à partir de ce flux.

La propriété dans ce cas est non privative.

Le fruit du travail d’un service, ce sont quelques effets de bords sur la donnée locale, mais surtout un nouvel événement. Événement qui sera exploité par quantité d’autres services pour en produire de nouveaux.

Échanger le fruit du travail tout en mutualisant les ressources, ça laisserait rêveur plus d’un communard !

Une majorité de minorités

 Un État de 26 millions d’âmes, comme serait l’Italie, est un État dans lequel toutes les fiertés provinciales et municipales sont confisquées au profit d’une puissance supérieure, qui les gouvernent. Là, toute localité doit se taire, l’esprit de clocher, faire silence : hors le jour des élections, dans lequel le citoyen manifeste sa souveraineté par un nom propre écrit sur un bulletin, la collectivité est absorbée dans le pouvoir central… La fusion, en un mot, c’est-à-dire l’anéantissement des nationalités particulières, où vivent et se distinguent les citoyens, en une nationalité abstraite où l’on ne respire ni ne se connaît plus : voilà l’unité… Et qui profite de ce régime d’unité ? Le peuple ? Non, les classes supérieures. — P.J. Proudhon

Puisque notre système est composé d’unités indépendantes dont les choix d’implémentation se font localement. Il est possible de faire cohabiter un grand nombre de services faisant tous appel à des technologies différentes. Permettant à chaque service d’exploiter les technologies qui répondent le mieux à son périmètre de responsabilités. La seule contrainte étant de respecter le contrat.

Un système qui valorise la diversité plutôt que de cacher les différences derrière un ordre dicté à un niveau supérieur.

Liberté, Égalité, Fraternité ou choucroute ?

Au témoignage de l’histoire, la fraternité, but suprême des révolutions, ne s’impose pas : elle a pour condition la liberté d’abord, l’égalité après. Comme si la justice nous disait à tous : Hommes, soyez libres ; citoyens, devenez égaux, et puis, frères, embrassez-vous. — P.J. Proudhon

Ce qui est vrai pour le système est vrai pour l’équipe qui le développe.

Organizations which design systems […] are constrained to produce designs which are copies of the communication structures of these organizations. — M. Conway

Le système fonctionne plutôt bien dans des équipes autogérées.

Puisque chaque membre est autonome dans son domaine, Il est indispensable que chacun ait une bonne connaissance de l’objectif global et final. Pour que chacun ait cette maitrise et cette envie positive, ils doivent être impliqués dès le début du projet.

liberte-egalite-solidarite-20693_thumb_650.png

L’attachement au respect du contrat (API, conventions, guidelines…), est un autre pilier qui doit faire l’objet d’une grande attention. C’est ce qui garantit que le travail fourni par chacun peut s’intégrer correctement avec celui du voisin.

Finalement le ciment du tout doit être la fraternité bienveillante. Se serrer les coudes, assister, écouter, concéder, concilier et réconcilier.

 Le système de l’humanité ne sera connu qu’à la fin de l’humanité. — P.J. Proudhon


L’équipe Synbioz.
Libres d’être ensemble.

Articles connexes

Une bibliothèque JavaScript modulaire grâce aux plugins

15/11/2018

Salutations ! Aujourd’hui, je vous propose un article un poil plus « avancé » puisqu’il s’adresse davantage aux auteur·rice·s de bibliothèques ; ce pourrait être le premier d’une série plus ou moins...

Droits et rôles dans une architecture orientée domaine

08/11/2018

Le chemin à emprunter en suivant la direction DDD n’est pas si complexe qu’il n’y paraît. Il requiert, entre autres, de se débarrasser de certains réflexes et idées préconçues. Surtout de la fâcheuse...

Meta de la configuration, illustré avec Elixir

22/02/2018

La configuration des applications est un (non)sujet qui semble simple à première vue, mais qui n’est pas si bien maîtrisé par les développeurs juniors ou seniors. Attaquons par le fond du problème,...

Design stratégique et jeu de Go

08/09/2017

Dans l’article précédent nous avons effleuré le concept de design stratégique. La phase indispensable qui consiste à analyser notre système sous l’aspect et dans le référentiel du problème (par...