Migration de PHP vers Django : Vosae

Vosae PHP Django

J'ai récemment été amené à procéder à la migration d'un projet, de PHP 5.3 + MySQL vers Django + MongoDB. Cette migration s'appuie sur deux axes principaux :

  • La volonté de passer sous Django, qui est déjà très présent chez Naeka.
  • Le besoin d'une base NoSQL

Je ne juge pas PHP comme un mauvais langage, bien au contraire, mais, de mon point de vue de développeur, j'ai l'impression que les têtes pensantes de PHP cherchent à donner trop d'importance au côté langage universel et moins à l'utilisation concrête pour les développeurs de PHP : le web.

Bien évidemment, je ne compare pas PHP et Django, l'un est un langage, l'autre est un framework. PHP a aussi ses frameworks web, dont le réputé Symfony2. Nous trouvons quoi qu'il en soit une dynamique plus importante du côté de Django. Django hérite bien évidemment de la puissance, simplicité et modularité de Python, ce qui en fait une plateforme efficace et rapide à développer.

Je souligne également l'ouverture vers l'opensource plus présente avec des projets Python/Django que PHP/Symfony, ce qui vient renforcer les échanges et la dynamique de l'écosystème.

Parallèllement, nos besoins sortaient du "proof of concept", et se tourner vers une base non-relationnelle, capable de s'étendre sur plusieurs nodes et de distribuer les traitements nous paraissait primordial.

Le NoSQL, c'est quelque chose qui a été bien mouliné chez Naeka. Nous avons en effet étudié et utilisé les bases Cassandra, CouchDB et MongoDB.

Dans ce projet, en fonction des besoins, j'avais mis en compétition CouchDB et MongoDB, toutes deux des bases documentaires. MongoDB, s'est différentié en étant davantage flexible selon nos usages et en proposant également un driver python (pymongo) mis à jour régulièrement et complété par plusieurs toolkits permettant de reproduire le fonctionnement de l'ORM sous Django (dont mongoengine que nous utilisons).

Pour revenir sur la transition, presque achevée, il faut savoir que compte tenu du changement de langage et du moyen de stocker l'information, tout le backend a été refait. Au début du projet en question, j'étais pour ma part très à l'aise avec PHP, avait une maîtrise de Python et connaissait vaguement Django. Bref... Python, Django sont formidables !

La simplicité et rapidité à porter 'lensemble est déconcertante, si bien que je regrette de n'avoir pas sauté le pas plus tôt.