Archives mensuelles : juillet 2013

Une rupture technologique – du PHP au Python

J’ai essayé de rendre la narration de l’histoire la plus accessible possible. Et pour ceux qui aimeraient avoir tous les détails concernant la technique, vous les trouverez dans la deuxième partie de cet article.

L’histoire

Les débuts du projet

L’idée de la refonte du portail TopChrétien ne date pas d’hier et une réflexion de fond a véritablement commencé au début de l’année 2011. A cette époque, nous étions également en train de développer le moteur de ce qui allait devenir TopFormations. Le développement de cette nouvelle section du Top était pour moi l’occasion de tester des nouveaux choix techniques sans pour autant entrer en rupture complète avec la technologie existante sur le Top. Ce test avait pour but de valider sur un projet réel que ce choix serait le bon pour le nouveau portail TopChrétien.

La top coding party

Pour ceux qui ont suivi, nous avons organisé en septembre 2012 une TopCodingParty où nous avons invité sous la forme d’un concours les développeurs et web-designer chrétiens à venir au Top et développer des projets pour des œuvres chrétiennes. Suite à cet événement, nous avons pu faire des connexions avec plusieurs d’entre eux.

Le point de non retour

Les développements de TopFormation s’étant bien passés, je me suis dit que ce choix serait le bon et le moins risqué pour l’avenir du Top. Nous approchions du point de non-retour. En effet, le moment du développement du portail proprement dit approchait à grand pas. Et une fois le travail commencé, il devient très difficile de changer car il faut tout reprendre de zéro.

C’est également à cette période que l’on a cherché à recruter des personnes pour nous aider car le développement d’un tel site est une lourde tache. Nous avons donc envoyé une proposition de travail à plusieurs des personnes que l’on avait rencontrées lors de la TopCodingParty. Nous savions qu’il y avait peu de chance que cette démarche aboutisse, car chacun d’entre eux était bien investi dans leur travail respectif.

une réponse

A notre grande joie, une personne a répondu qu’elle serait intéressée par la proposition. Elle avait déjà à cœur de devenir indépendant et le contrat que lui proposait le TopChrétien lui permettrait d’assurer le démarrage de son entreprise. Il s’agit de Mathieu.

Le détail qui fache

Parmi toutes les conditions posées par le projet, il y en a une qui le dérangeait tout particulièrement et c’est le choix de la technologie. En effet, le choix avait été fait d’utiliser le language PHP. Bien que ce soit un language utilisé par de nombreux grands sites, PHP est un peu considéré comme le language du bricoleur du dimanche et peu utilisé par les grandes sociétés informatiques.

Mathieu de son côté préconisait l’utilisation du langage Python. Ce n’est pas le language utilisé le plus sur le web mais il est utilisé par un nombre non négligeable de startup à succès (youtube, instagram, pinterest…).

Après de nombreuses discussions, Mathieu a accepté le choix du langage PHP malgré ses réticences. Si ça n’avait pas été pour l’œuvre du Top, la réponse aurait été un « non » catégorique.

Une parole inattendue

Lors d’un temps de jeûne et prière que l’on a eu en équipe, nous avons pris un temps pour prier pour le projet en général (peu de personnes étant au courant de cette question du choix de la technologie). Après ce temps de prière, Muriel est venue me voir car elle avait une parole sur le cœur qu’elle souhaitait partager. Dans cette parole, Dieu nous invitait à ne pas avoir peur des choses nouvelles et de frayer des chemins nouveaux dans le domaine des nouvelles technologies.

la torture mentale

Alors que jusqu’ici malgré toutes les discussions le choix était arrêté sur le choix de PHP, je n’étais pas tranquille dans mon esprit à l’idée du choix de la technologie. Après en avoir longuement parlé avec Emmanuel Schulz, nous avons fait un tableau comparatif des différentes technologies pour nous permettre de faire un choix en ayant des critères objectifs. Les critères n’étaient pas uniquement liés à la technologie elle-même mais aussi à l’impact sur le planning, au risque pris pour chacun des choix… Suite à cette étude, le PHP est sorti en tête (bien que de peu) par rapport aux autres choix.

L’un des éléments qui nous gênait le plus dans le fait de choisir un autre langage était celui du délai. En effet, qui dit nouveau langage, dit aussi un temps d’apprentissage. Considérant le fait que Mathieu devait : démissionner, puis ensuite venir nous former, pour que l’on puisse enfin commencer l’architecture et les développements ; ce n’était pas envisageable car on perdrait ainsi 3 mois sur le planning déjà très court.

La visite de Mathieu

Mathieu était intéressé par le projet. Mais avant qu’il donne sa démission, nous avons voulu nous rencontrer face à face afin de donner plus de détails sur le projet. Nous serions ainsi sûrs les uns et les autres que l’on souhaitait bien travailler ensemble. Nous lui avons donc reconfirmé ce jour-là le choix de PHP.

Avant qu’il ne parte du Top pour aller voir son employeur, je lui dit sur le parking sous la forme d’une boutade à moitié sérieuse : « Si tu commences avec nous lundi prochain, on peux partir sur Python ».

Son rendez-vous avec son employeur

Le lendemain il rencontrait donc son patron pour lui annoncer la nouvelle et l’entretien s’est très bien passé. Non seulement il n’a pas été obligé de faire son préavis de 3 mois, mais il a pu également poser à partir du lundi suivant deux semaines de congés.

On lui a donc proposé de venir dès la semaine suivante. Il avait ainsi deux semaines pour nous convaincre que le Python est mieux que le PHP.

épilogue

Au jour où j’écris ce blog, Mathieu a terminé son travail auprès de son précédent employeur et le choix du Python s’est avéré pertinent. Rendez-vous dans quelques mois pour le lancement du site pour que vous puissiez profiter des nouveautés !

Vous pouvez lire l’histoire du point de vue de Mathieu sur son blog.

Les détails techniques pour les plus curieux

Au delà du choix du langage, ce sont de nombreux autres choix technologiques qui ont été faits. Certains avaient déjà été faits avant que Mathieu n’intervienne, d’autres ont été faits car tout ceci nous a vraiment poussé à remettre à plat complètement nos choix.

Voici donc les différentes nouvelles technologies que nous allons utiliser. Ce qui est intéressant c’est que les choix que l’on a fait sont très proche de ceux d’intagram, lisez cet article dans un blog où ils donnent plus de détails (en anglais).

Python à la place de PHP

Faire un comparatif entre Python et PHP sort largement du cadre de cet article (internet regorge d’article à ce sujet). En ce qui nous concerne, voici quelques éléments intéressants.

En préliminaire je rappellerai que la qualité d’un logiciel ne dépends pas de la qualité du langage mais avant tout de la compétence des développeurs. En effet on peut faire un bon logiciel avec un langage pourri et faire un logiciel pourri avec un bon langage.

  • Python a été conçu comme un véritable langage en 1991 à usage général
  • PHP a été conçu en 1995 comme une bidouille pour faire des petits site webs
  • Les deux sont des langages interprétés
  • Faire un néophyte, il est plus rapide d’apprendre PHP que Python
  • La philosophie de Python invite à coder proprement
  • Il n’y a aucune philosophie en PHP
  • La syntaxe de Python est très compacte et globalement plus lisible

Django à la place de Symfony2

Avec le langage viennent également tout un ensemble d’outils. En particulier le choix du framework est important car c’est la boite à outils qui va nous aider à développer le site. Initialement avec PHP nous étions parti sur le framework Symfony2, car c’est celui que j’avais testé avec succès sur TopFormations. En utilisant le python, il a fallu faire le choix d’un framework du monde python. Le choix s’est naturellement porté sur django, car c’est un des frameworks python les plus populaires du moment et c’est celui que Mathieu maîtrise.

Nginx à la place d’Apache

Ce choix n’était pas évident de prime abord. Apache est le serveur web le plus utilisé sur Internet (et de loin). C’est un serveur web rempli d’un grand nombre de fonctionnalités mais le prix à payer est la performance. Nginx prend le parti opposé : en faire moins, mais le faire de manière plus efficace. Nginx est maintenant de plus en plus utilisé sur les sites à fort traffic. En savoir plus… (lien en anglais)

PostgreSQL à la place de MySQL

MySQL est un moteur de base de données gratuit très populaire car il est très simple à installer et utiliser. Par contre il a un certain nombre de lacunes qui sont comblées par son principal concurrent PostgreSQL (lui aussi gratuit). Notamment avec MySQL, la complexité des requêtes est parfois limitée, la gestion des transaction et des contraintes est incomplète et peu performante. Le passage à PostgreSQL était assez naturel pour moi, l’ayant déjà utilisé intensivement par le passé.