AFUP Forum PHP 2019 Baromètre Planète PHP

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

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.

Le speaker

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

En poursuivant votre navigation sur ce site, vous acceptez l’utilisation des cookies pour améliorer votre navigation. plus d'infos

1. Qu’est-ce qu’un cookie?

Un Cookie est un petit fichier texte enregistré sur votre terminal (ordinateur, tablette, smartphone, etc.), à l’occasion de la consultation d’un service en ligne grâce à votre logiciel de navigation. Il permet à son émetteur d’identifier le terminal dans lequel il est enregistré, pendant la durée de validité ou d’enregistrement du Cookie. Lors de la consultation de notre site Internet, des informations relatives à la navigation de votre terminal sont susceptibles d'être enregistrées dans ces fichiers dits "Cookies". Ces derniers sont installés sur votre terminal, sous réserve des choix que vous auriez exprimés concernant les Cookies et que vous pouvez modifier à tout moment.

2. A quoi servent les cookies émis sur notre site ?

Seul l’émetteur d’un cookie est susceptible de lire ou de modifier les informations qui y sont contenues.
Les cookies utilisés sur notre site permettent :

3. Vos choix concernant les cookies

Vous disposez de différents moyens pour gérer les cookies. Tout paramétrage que vous pouvez entreprendre sera susceptible de modifier votre navigation sur notre site et sur Internet en général et vos conditions d'accès à certains services de notre site nécessitant l'utilisation de cookies. Vous pouvez à tout moment exprimer et modifier vos souhaits en matière de cookies, par les moyens décrits ci-dessous. L'accord sur les cookies L'enregistrement d'un cookie dans un terminal est essentiellement subordonné à la volonté de l'utilisateur du terminal, que celui-ci peut exprimer et modifier à tout moment et gratuitement à travers les choix qui lui sont offerts par son logiciel de navigation. Si vous avez accepté dans votre logiciel de navigation l'enregistrement de cookies dans votre terminal, les cookies intégrés dans les pages et contenus que vous avez consultés pourront être stockés temporairement dans un espace dédié de votre terminal. Ils y seront lisibles uniquement par leur émetteur.

Le refus des cookies Si vous refusez l'enregistrement de cookies dans votre terminal, ou si vous supprimez ceux qui y sont enregistrés, vous ne pourrez plus bénéficier d'un certain nombre de fonctionnalités qui sont néanmoins nécessaires pour naviguer dans certains espaces de notre site. Tel serait le cas si vous tentiez d'accéder à votre compte ou à votre abonnement qui nécessite de vous identifier. Tel serait également le cas lorsque nous, ou nos prestataires, ne pourrions pas reconnaître, à des fins de compatibilité technique, le type de navigateur utilisé par votre terminal, ses paramètres de langue et d'affichage ou le pays depuis lequel votre terminal semble connecté à Internet. Le cas échéant, nous déclinons toute responsabilité pour les conséquences liées au fonctionnement dégradé de nos services résultant de l'impossibilité pour nous d'enregistrer ou de consulter les cookies nécessaires à leur fonctionnement et que vous auriez refusés ou supprimés. Les choix offerts par votre logiciel de navigation Vous pouvez configurer votre logiciel de navigation de manière à ce que des cookies soient enregistrés dans votre terminal ou, au contraire, qu'ils soient rejetés, soit systématiquement, soit selon leur émetteur. Vous pouvez également configurer votre logiciel de navigation de manière à ce que l'acceptation ou le refus des cookies vous soient proposés ponctuellement, avant qu'un cookie soit susceptible d'être enregistré dans votre terminal. Pour la gestion des cookies et de vos choix, la configuration de chaque navigateur est différente. Elle est décrite dans le menu d'aide de votre navigateur, qui vous permettra de savoir de quelle manière modifier vos souhaits en matière de cookies. Selon votre navigateur, consultez le lien ci-dessous pour configurer votre navigateur et refuser les cookies :