[:fr]La parole est aux speakers : Vincent Lainé (AFUP Day 2019 Rennes)[:]

Publié le

[:fr]Jusqu’à l’AFUP Day 2019 Lyon, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

Préparer son application php pour l’exécution dans un environnement contenerisé

À travers cette session je vous propose de venir réfléchir aux challenges qui découlent de l'utilisation d'une solution de conteneurs. Nous aborderons quelques unes des questions principales ainsi que leur(s) solution(s) au travers d'exemples utilisant Kubernetes.

La Fabrique
17/05/2019
15:10-15:50

Toi qui as une forte expérience .NET, trouves-tu les applications PHP plus ou moins simples à conteneuriser ? Quelles sont les principales différences ?

Les challenges de la conteneurisation sont majoritairement les mêmes quel que soit le langage car ils sont principalement liés à l’environnement dans lequel l’application s’exécute plutôt qu’au code de l’app. C’est d’autant plus vrai si on parle d’un nouveau projet qui démarre avec docker comme cible !

En fonction des frameworks et des librairies disponibles, ces challenges peuvent être plus ou moins faciles à relever mais PHP et .NET sont tous deux bien équipés pour cela grâce à leur communauté.

La principale différence que j’ai pu voir entre une app .NET Core et PHP qui s’exécute dans un conteneur est lorsque que l’application est un serveur http (API REST par exemple). PHP est intimement lié à un serveur externe (apache ou nginx) alors que .NET Core embarque son propre serveur http (basé sur libuv) ce qui évite la configuration et le maintien d’un composant supplémentaire.

Sur quels environnements utilises-tu des conteneurs aujourd’hui ? Les conteneurs sont souvent utilisés en développement et même parfois en recette. Est-ce ton cas, et pousses-tu jusqu’à les utiliser en production ?

Bien sûr ! Chez KelBillet nous déployons l’ensemble de nos nouveaux micro services et de nos fronts sur docker y compris en prod.

À mon sens, les conteneurs ont bien plus d’intérêt en preprod et prod qu’en développement car ils permettent de s’assurer une reproductibilité et une indépendance à l’environnement qui n’est pas possible (ou très compliqué) à avoir avec un déploiement directement sur un serveur.

Par exemple, nous avons encore des services « legacy » qui n’ont pas les mêmes dépendances que nos nouveaux services et pousser des images docker en prod, nous permet de ne pas avoir de problème de cohabitation entre des extensions PHP ou même des versions de PHP différentes.

Dans le même temps, aller en prod avec des conteneurs ne se fait pas en un claquement de doigts et même si docker apporte des solutions à un certain nombre de problèmes, il apporte également … de nouveaux problèmes qui lui sont propres, à la fois au niveau applicatif (d’où cette conférence) mais également au niveau du déploiement (mais ça, ça fera l’objet d’une autre conf :))

L’utilisation de containers en local a t-il un impact sur les performances, notamment sous Mac ? Les machines sous Linux sont-elles aussi affectées ?

Pour être honnête, je n’en sais rien ^^.

Dans mon équipe chacun est libre de travailler comme il le souhaite (du moment que son choix n’impacte pas les autres ;)) et certains utilisent docker lors du dev sous Windows, d’autres lors du dev sous linux et quant à moi, je suis sous mac mais je n’utilise pas docker en dev 😀

La question de la performance applicative n’est pas une vraie question en dev, nous faisons l’ensemble de nos benchmarks de perfs sur la prod des environnements iso-prod car c’est le meilleur moyen pour avoir des résultats représentatifs. Et donc savoir si l’app est plus lente de 30ms sur une requête http ou pas en local, n’est, à mon avis, pas une bonne question.

Par contre la question de la performance des outils de développement est importante afin de ne pas générer de frustration chez les développeurs et de ce côté, il faut savoir ruser un peu en utilisant docker pour l’exécution de l’applicatif mais le système hôte pour l’exécution des outils de dev (yarn mon ami …)

Lors du déploiement en production, la question de la performance devient centrale et de ce côté je n’ai pas été confronté à des problèmes qui seraient intimement liés à docker mais plus à des problèmes de complexification de l’infrastructure qui entraine une multiplication des applicatifs par lesquels une requête http doit passer avant d’arriver dans le code PHP ainsi qu’à leur configuration/finetuning.

Une conférence présentée par

Vincent LAINÉ
Vincent LAINÉ
Vincent Lainé est actuellement CTO KelBillet ou avec son équipe il relève les challenges imposés par la gestion de plusieurs sites grand public telques la scalabilité, la robustesse et la performance des sites. En tant que responsable de l'équipe technique, il intervient également sur des sujets comme la mise en place de l'agilité ou l'animation de l'équipe. Bien que passionné par le développement, l'architecture (logiciel) et le management 3.0, l'escalade et la montagne ne sont pas oubliées et occupent une part importante de son temps.

Autres interviews

[:]