[:fr]Jusqu’au Forum PHP 2017, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils aborderont lors de leur conférence !
La conférence
PHP est-il ton language de prédilection ? Tu as écrit des projets en GO, peux tu nous parler un peu de ce langage ?
J’ai commencé le développement avant les études supérieures, PHP est le premier langage que j’ai maîtrisé car c’est un bon outil pour se former et aujourd’hui je l’utilise au quotidien. Lorsque je suis rentré sur le marché de l’emploi, le NodeJS n’était pas aussi répandu qu’aujourd’hui. Mes premiers projets étaient donc basés sur des frameworks PHP. Avec l’expérience, j’ai cherché à travailler dans un environnement plus mature, sur des produits web plus développés et surtout dans une entreprise dont le business est centré sur son propre produit. Or, aujourd’hui, PHP est emblématique de ce type de produits. Quand on regarde les entreprises françaises du web qui réussissent – je ne parle pas de start-up aux 4 millions d’utilisateurs sans aucun revenu – ; lesquelles ne font pas de PHP? Blablacar, Deezer, Meetic, Dailymotion, etc. toutes ces entreprises ont mis en place et maintiennent du PHP au coeur de leurs systèmes.
Il faut être réaliste sur les forces et les faiblesses de PHP, et de façon générale sur tous les langages de scripting et/ou stateless. Je suis convaincu que PHP accompagné d’un bon framework – bien utilisé – est un choix judicieux pour développer un site web ou un web service, même aujourd’hui. Slack a d’ailleurs très bien su l’expliquer et je le vois au quotidien chez Meetic. Néanmoins, à l’heure de l’Agile et des équipes pluridisciplinaires orientées feature, il faut savoir laisser de côté le PHP et utiliser les bons outils pour les bons usages. Il m’est déjà arrivé de développer un worker (un consumer amqp) en PHP. Avec le recul… c’était l’horreur. Dans des cas comme ceux-ci, il faut se poser la question de l’outil.
Le développement ne se résume plus à écrire des lignes de codes sans prendre part à la conception et au contexte business du produit. Un développeur – d’ailleurs appelé « software engineer » dans les pays anglo-saxon – doit savoir « construire » un produit. Cela nécessite de développer des web services, mais aussi toute une gamme d’outils permettant de faciliter le développement, l’intégration continue, le déploiement, etc. Cette composante du développement logiciel se rapprochant du domaine de l’ops ne peut pas être satisfaite par des outils comme le PHP et relève pourtant de la responsabilité du développeur.
L’Agilité a mis en lumière l’intérêt des équipes pluridisciplinaires où chacun prend part dans toute la chaine de conception d’un produit. Cela ne fait plus sens d’être « développeur PHP » ou « développeur Java ». On est développeur tout court. Le choix de la technologie dépend de l’usage. À chaque use case le bon outil. C’est là que le Go entre en scène, pour ma part.
Comme tout autre langage, Go ne peut pas répondre à tous les problèmes. Mais, la nature même de ce langage le rend très adapté à beaucoup d’utilisations. La tendance montre néanmoins que Go est très utilisé pour développer des outils systèmes et/ou distribués. Une alternative pourrait être le python, mais au moins 3 raisons expliquent l’essor du Go dans ce domaine :
Sa syntaxe très proche des langages de scripting le rend très facile à écrire.
La cross-compilation permet des générer des binaires utilisables sur n’importe quel OS et contenant le runtime. (Ce qui a pour effet indésirable de produire des binaires très gros).
La gestion de processus concurrent extrêmement simplifiée permet de développer des outils très performants en quelques lignes seulement.
Par ailleurs, je m’intéresse de près à la logique de containérisation des applications. Docker ainsi que tous les outils permettant de distribuer des containers sont écrit en Go. Comprendre ce langage est un bon moyen de suivre les évolutions de ces technologies.
Néanmoins, si on me posait la question, je ne choisirais pas Go pour réécrire l’ensemble des microservices chez Meetic. À mon sens, il y a deux principales raisons qui expliquent pourquoi Go est surtout utilisé chez les « cadors ». La première concerne le système de gestion de dépendance : les outils existants sont bien moins matures que Composer. L’autre est liée aux designs pattern et à l’organisation du code : la communauté Go n’est probablement pas encore assez mature et de ce fait, aucune organisation de code ni aucun design pattern ne se sont vraiment imposés. Autant le code de Symfony et le code de Guzzle sont très proches, autant le code de Kubernetes et le code de Revel (framework full-strack en Go) n’ont rien à voir.
En attendant, je pense que Go est un bon choix pour développer des APIs REST servant à piloter des outils systèmes, des outils distribués ou bien encore des microservices effectuant une tâche simple comme cropper des photos en masse. »
(suite…)