Best Practices for CI/CD for eZ Projects
Dans les blog posts précédents, nous avons couvert les différentes disciplines qui composent ce que l'on pourrait appeler un processus de développement continu. Nous avons défini l'intégration continue (CI), le déploiement continu (CD) et la livraison continue (CD). Nous avons pris connaissance des nombreux avantages que ces approches procurent aux organisations qui s'efforcent de devenir des organisations logicielles efficaces à l'ère numérique d'aujourd'hui. Nous avons également exploré les divers défis auxquels les entreprises peuvent être confrontées lorsqu'elles tentent d'intégrer CI/CD dans leur workflow de développement. Dans le blog de cette semaine, le dernier de cette série, j'aimerais partager quelques bonnes pratiques et suggestions qui peuvent vous aider à adopter une stratégie CI/CD efficace pour vos projets eZ.
Pour ce faire, j'ai rencontré Sébastien Morel, CTO et Responsable des opérations américaines chez Novactive, et Bertrand Dunogier, Technical Product Manager chez eZ Systems, pour un entretien rapide. Ensemble, Sébastien et Bertrand ont plus de 25 ans d'expérience dans le développement de projets sur eZ Platform. Pour débuter, j'ai interrogé chacun d'eux sur leur parcours et leur rôle au sein de leur entreprise respective.
SM : J'ai rejoint Novactive en 2003 à Paris quand nous étions une équipe d'environ 7 personnes dont 2 à 3 développeurs supplémentaires. Depuis ce temps, Novactive a évolué et fait maintenant partie du groupe Nextedia composé de plus de 200 personnes. J'ai commencé comme développeur et maintenant je suis en charge de l'entité américaine à San Francisco, en Californie, où nous essayons de nous concentrer sur l'innovation. Mon parcours a toujours été un mélange de développement et d'administrateur système.
BD: Je travaille sur divers projets eZ depuis près de 13 ans. Dans le passé, j'ai été lead engineer pour eZ Platform. Basé à Lyon, en France, je suis un expert eZ Publish et eZ Platform ainsi que spécialiste du clustering eZ.
AG : Chez eZ, la mise en œuvre de l'intégration continue présente de nombreux avantages. Comment exercez-vous CI dans vos différents projets eZ?
SM : Chez Novactive, nous essayons constamment de tirer parti des différents outils et de la communauté que Symfony et eZ fournissent. Nous essayons de tirer profit de tous les processus ! La raison étant, qu'en tant qu'agence nous avons de multiples projets, pas seulement "un seul produit". Ce qui signifie que nous devons gérer différentes versions et différents outils que nous ne pouvons pas mettre à jour tout le temps comme nous le souhaiterions. Il nous est très difficile de faire des CI/CD correctement à cause de cette diversité et nous manquons parfois de tests automatisés pour la même raison. Pour moi, eZ Systems s'inscrit dans le projet " un seul produit ", ils ont des personnes et des robots qui valident, vérifient et révisent les contributions et c'est ce que nous essayons d'appliquer à tous nos nouveaux projets depuis 1 ou 2 ans.
BD : Cette question me rappelle un peu le temps où nous avons implémenté CI dans notre workflow de développement. Une époque où nous comptions beaucoup sur les tests manuels et les hypothèses que nous avions faits. Cela n'a jamais été rassurant parce que nous n'avions aucun moyen sûr de valider ces hypothèses en tout temps. Chez eZ, nous avons intégré un grand nombre de tests automatisés dans notre workflow de développement. Nous écrivions des tests pour tester différentes instances de cas d'utilisation. Cependant, il s'agissait aussi d'un changement culturel important dans la façon dont notre entreprise abordait le développement de logiciels. Je crois qu'avec cette approche, nous avons facilité un environnement qui favorise la mise à l'essai du code sur une base continue.
AG : Quels sont, selon vous, les avantages de la mise en œuvre de CI/CD pour vos projets eZ ?
SM :La valeur que CI nous a fournie est qu'il a réduit les cas de rupture de code. La raison en est que plus vous utilisez CI, plus le code et les processus deviennent propres. Cela est dû au fait qu'il permet de faire des tests tous les jours plutôt que sur une base hebdomadaire ou mensuelle. Ce qui évite clairement une dépense d'énergie inutile.
BD : CI/CD est merveilleux pour plusieurs raisons. Une des raisons en est qu'il améliore de façon exponentielle la qualité de nos tests et automatise le processus pour nous. Une fois que nous avons intégré CI/CD, nous sommes devenus plus efficaces en évitant les erreurs qui auraient été très coûteuses. CI est excellent parce qu'il peut être utilisé comme mesure préventive pour détecter les problèmes de code au stade du développement et les empêcher d'atteindre nos clients. CI/CD est également très pratique et un grand investissement de temps. Cela nous a également permis de faciliter notre processus d'intégration.
AG : Que recommandez-vous aux décideurs pour que leur équipe puisse adopter ces approches dans leur processus de développement ? Quelles sont certaines pratiques exemplaires en matière de CI/CD que vous avez réussies?
SM: Je crois que la chose la plus essentielle à faire est de mettre en place des processus pour votre projet que votre équipe respectera. Ces normes devraient couvrir : le style de codage, les tests automatisés (TravisCI ou CircleCI), les tests de performance (Blackfire.io) et encore un peu d'analyse humaine pour la sécurité et les choses qui ne peuvent pas être automatisés. Si possible, trouvez un service qui s'occupera de vos déploiements comme eZ Platform Cloud or Platform.sh.
BD : Je pense qu'un bon moyen de faciliter une mise en œuvre correcte d'une pratique CI/CD est d'adopter des outils appropriés. Quelques-uns des outils de test de base dont vous avez besoin pour exécuter sont PHPUnit, GitHub, ou toute autre librairies et outils équivalents qui sont essentiels pour écrire vos tests. Nous utilisons Travis CI pour nos intégrations continues. Nous l'utilisons pour nos fonctionnalités Open Source et Enterprise Edition. Comme Sébastien l'a dit, Platform. sh est une excellente ressource pour le CD. Il nous permet de faciliter massivement les tests et le déploiement des fonctionnalités.
AG : Comment pensez-vous qu'eZ Platform Cloud peut améliorer les projets pour les clients travaillant sur différents projets eZ?
SM : eZ Platform Cloud est une excellente solution pour CD. eZ Platform cloud est excellent car il prend en charge toute l'infrastructure d'hébergement cloud pour vous. En tant qu'agence, [Novactive] n'a plus besoin de s'inquiéter de la configuration des serveurs, mais plutôt du fait qu'un seul fournisseur s'occupe de tout, tant pour l'application que pour l'infrastructure d'hébergement. eZ Platform Cloud fournit également un SLA avec 99,99% de disponibilité garantie. Ils fournissent également un support 24/7 et s'occupent des correctifs de sécurité.