Introducing SOA

Pensez à toutes les choses que vous pouvez faire sur Fandom : modifier des pages, tchatter en direct avec d’autres utilisateurs, collectionner les badges, organiser le contenu ou tout simplement passer des heures et des heures à lire du contenu sur vos sujets favoris. Imaginez cela sur 360 000 communautés, ayant chacune une apparence et un contenu uniques, et vous pourrez vous faire une idée de l'étendue et de la variété de contenu que nous avons.

Nos communautés sont construites là-dessus. Ce que les communautés ne voient pas, cependant, c’est à quel point cette variété peut rendre le codage compliqué pour nos ingénieurs et chefs de produit. Compte tenu de tout ce que Fandom peut faire, nous avons créé un codebase assez important au fil des ans.

Il y a quelques années, certains de nos ingénieurs les plus expérimentés se sont réunis et se sont demandé s’il existait un moyen de couper le codebase. Ils ont voulu voir s’il y avait un moyen plus facile de maintenir tout le codage et les fonctionnalités de Fandom. Après tout, cela permettrait de développer plus rapidement et plus efficacement le logiciel. Je suis heureux de vous annoncer que nous faisons de grands progrès dans ce domaine !

La solution est ce qu'on appelle l'architecture orientée services (Service-Oriented Architecture ou SOA en anglais) et, étant à la fois un ancien contributeur de wiki (je viens de fêter mon 10ème anniversaire en tant que contributeur !) et programmeur, je suis heureux de vous expliquer notre démarche et de partager ce qui se passe dans les coulisses en termes de développement du logiciel de Fandom.

## Termes à connaître

Pour mieux expliquer les modifications techniques sur lesquelles travaille Fandom, commençons par définir certains concepts importants.

MediaWiki : MediaWiki est le principal moteur qui a été l’épine dorsale de Fandom depuis son lancement en 2006. MediaWiki fait partie intégrante de la création du concept de wiki et se reconnait à sa facilité d'édition, sa présentation de contenus créés par l’utilisateur, sa structure de groupes utilisateur simple et sa capacité à suivre les historiques des modifications.

Fandom fonctionne sur une version de MediaWiki numérotée 1.19 et il est peu probable que nous fassions une mise à jour à grande échelle pour une version plus récente. La raison principale de ceci étant que MediaWiki est considéré comme un logiciel rigide. Cela signifie que le codage, la conception etc. de Mediawiki contrôlent tout. La même fonction qui vous permet d’enregistrer une modification, par exemple, est également responsable de la suppression d’une page. Cela se fait principalement par le biais de PHP et JavaScript.

Un service, dans le jargon technologique, est un petit morceau de logiciel effectuant une seule tâche. Il peut être codé dans n’importe quelle langue. L'architecture orientée services, est donc, le fait de concevoir un système qui permet à toutes les tâches d'un site d'être gérées par des services individuels qui travaillent ensemble, plutôt que par un seul logiciel géant qui fait tout.

## Alors, quel est le problème ?

Pour tenter de comprendre les avantages d’utiliser un modèle SOA par rapport au modèle MediaWiki, imaginons que le monolithe de MediaWiki est une ville. Tous ses citoyens sont chargés de traiter toutes les affaires de la ville, de la construction à la police, en passant par le commerce. Toutes les activités quotidiennes sont assez bien gérées par la ville, mais si un incendie se déclare, il serait un peu bizarre de penser qu'un commerçant, agent de police ou travailleur en bâtiment sera responsable de lutter contre cet incendie plutôt que les pompiers, spécialisés là-dedans.

Pour poursuivre notre analogie, regardons quel genre de ville un modèle orienté sur les services offrirait. Dans cette ville, vous auriez des citoyens spécifiquement chargés de la construction, des services de police et des commerces. Ce serait la seule chose sur laquelle ces personnes se concentreraient. Si un incendie éclate, les pompiers arrivent. Je ne sais pas pour vous, mais si ma maison prend feu, je me sentirais beaucoup mieux si un pompier arrivait en premier sur les lieux plutôt qu'un boulanger. Bien que l’idée d'un feu étouffé grâce à un glaçage soit amusante.

Cet exemple décrit bien pourquoi Fandom privilégie désormais la méthode SOA. Les avantages spécifiques de l'architecture orientée services versus MediaWiki sont :

* Moins de complexité. Il est beaucoup plus facile pour un ingénieur logiciel de comprendre, réparer et améliorer un morceau de logiciel si son rayon d'action est limité et si son code est contenu dans un seul endroit
* Efficacité. La méthode SOA nous permet d’utiliser des langages de logiciel comme Java ou Python, qui sont plus performants pour effectuer certaines tâches que PHP ne fait pas bien
* Capacité d’adaptation. MediaWiki est immense et lent à mettre à jour. Et internet évolue vite. MediaWiki est souvent loin derrière en matière de fonctionnalités nécessaires, comme le développement d’applications mobiles.

## Ce qui a changé ?

Vous serez peut-être surpris d'apprendre que Fandom évolue petit à petit vers un modèle SOA depuis l'année dernière. Avoir un modèle SOA ne signifie pas que vous aurez un nouveau site complètement différent. Le modèle SOA prend des morceaux de ce que fait MediaWiki pour Fandom, reconstruit les codes de manière à ce qu'il soit efficace, avant de remettre le code en marche. Vous ne devriez même pas remarquer la différence, bien que réécrire le code nous permette souvent d’ajouter une fonctionnalité supplémentaire ou deux.

Un bon exemple est notre système d’ouverture de session de compte. Croyez-le ou non, oui, il a beaucoup changé depuis l’année dernière ! Le système d’authentification utilisateur de MediaWiki rencontrait quelques problèmes pour gérer une base de données utilisateur de la taille de celle de Fandom et pour ajouter facilement des choses comme Facebook Connect. Alors l’année dernière, nous avons commencé à concevoir quelque chose appelé Helios, qui permet un processus d’enregistrement et de connexion beaucoup plus sûr et plus rapide. Helios s’exécute indépendamment de MediaWiki et communique avec MediaWiki via une simple API.

En outre, nous avons créé des services qui traitent spécifiquement les permissions des groupes utilisateur et les préférences utilisateur. Mais la plupart de ce développement s’est produit dans le monde des applications mobiles et du web mobile. En fait, nous avons été en mesure d’utiliser Helios pour authentifier les utilisateurs qui se connectent à Fandom sur le web mobile et les applications mobiles, ce qui s'est avéré beaucoup plus facile que d’essayer de relier le système d’authentification MediaWiki existant dans ces outils mobiles.

Ce n'est que le début de nos efforts pour rendre le système de Fandom plus efficace. Cela nous permettra de mieux concevoir nos fonctionnalités et notre code pour poursuivre la croissance de Fandom dans le futur. Si vous avez des questions concernant le développement de l'architecture orientée services sur Fandom, nous serons heureux d’y répondre dans les commentaires !

Modèle:Blog footer