Besoin d'un expert pour vous aider dans votre projet de développement Symfony ou PHP ? Demandez-nous un devis dès maintenant

Logo Yuka

Yuka : Une montée de version saine et équilibrée sur Symfony

Yuka, start-up en hyper croissance de la Tech for Good, est passée de Symfony 4 à 7 avec l'aide de SensioLabs pour améliorer les fonctionnalités de son application et réduire sa dette technique. Découvrez la success story de Yuka sur Symfony.

A phone with the Yuka application in the hands of a consumer at the supermarket

Yuka, en quelques mots

Yuka est une application mobile, disponible sur iOS et Android, qui permet aux consommateurs de décrypter les étiquettes des produits alimentaires et cosmétiques afin de faire les meilleurs choix pour leur santé et pour l'environnement. En un seul scan, le consommateur a accès à une évaluation rapide et facile via un code couleur allant du vert au rouge. Une fiche d'information détaillée permet également de comprendre la notation du produit et les critères (valeurs nutritives, additifs, etc.) pris en compte. C’est une application collaborative : l’utilisateur est invité à nourrir la base avec des produits inconnus.

Yuka collecte les informations de plus de 5 millions de produits. C’est une application gratuite disponible en France et dans 12 pays différents, principalement situés en Europe et en Amérique du Nord. L’application compte plus de 68 millions d’utilisateurs dans le monde et plus de 70 produits sont scannés chaque seconde par Yuka. Entreprise phare de la Tech for Good et start-up en hyper croissance, Yuka aide les consommateurs à faire de meilleurs choix pour leur santé et pour la planète.

Les challenges

Malgré l’ampleur de sa mission, Yuka ne compte qu’une équipe limitée pour gérer au quotidien et améliorer un si vaste projet avec autant de produits et de langues disponibles. L’équipe technique compte 5 membres, y compris 2 des cofondateurs. Et elle assume l’entière responsabilité du fonctionnement technique de l’application

Depuis sa création, Yuka utilise Symfony pour gérer sa base de données et le back-end avec une interface d’administration EasyAdmin et une API custom. L’application mobile visible des utilisateurs, disponible sur iOS et Android, se connecte directement à l’application Symfony.

Yuka était restée sur la version 4 de Symfony et sur EasyAdmin 1, sans avoir évolué depuis. Or, ces versions n’étaient plus à jour. L’application de Yuka ne bénéficiait donc plus des nouvelles fonctionnalités développées par Symfony et les nouveaux bugs détectés n’étaient plus corrigés dans cette version. L’utilisation d’EasyAdmin 1 par Yuka représentait un véritable défi pour la montée de version. En effet, il fallait faire évoluer EasyAdmin en coordination avec Symfony. La dette technique s’accumulait et les risques liés à la sécurité augmentaient.

Pour suivre les bonnes pratiques de Symfony, l’idée d’une montée de version s’est rapidement imposée.

L’équipe technique de Yuka n’était pas assez nombreuse pour mener de front une montée de version sur le long terme et continuer à améliorer l’application au jour le jour. Yuka a donc eu besoin du soutien d’experts de Symfony pour travailler sur le montée de version. L’équipe technique de Yuka poursuivait le développement de l’application mobile en parallèle.

L'histoire

Yuka a entrepris une refonte significative de ses pratiques de développement en s’appuyant sur la puissance et la flexibilité des nouvelles versions de Symfony. Initialement basée sur Symfony 4 avec EasyAdmin 1, Yuka a progressivement mis à niveau son application vers les versions 5, 6, puis 7, tout en passant EasyAdmin à la version 4. Cette montée de version, c'est aussi le passage de PHP 7.4 à 8.3, ainsi qu'une mise à jour de Doctrine de 2 à 3. Grâce à son expertise éprouvée, SensioLabs a orchestré et réalisé  ces montées de version, garantissant leur déroulement dans le bon ordre et en conformité avec les bonnes pratiques.

Le passage à des versions plus récentes de Symfony et EasyAdmin a nécessité une refactorisation approfondie du code, notamment en raison de l'évolution des standards et de la nécessité d'adapter la personnalisation d’EasyAdmin. En parallèle de la montée de version, plusieurs actions ont été menées : 

  • Mise en place d’une chaîne d’intégration continue (CI) qui n'existait pas auparavant.

  • Uniformisation des pratiques avec PHPStan, Rector et PHP CS Fixer.

  • Renforcement de la couverture de tests.

Des revues de code régulières et des tests de non-régression ont été mis en place pour garantir que le code de l’application reste performant et de bonne qualité sur le long terme.

La montée de version a enfin été l’occasion de contribuer à l’open source, dans une logique très stimulante de partage avec la communauté. Les contributions open source ont porté sur des bundles tiers, tels que NzoUrlEncryptorBundle, kreait/firebase-bundle et algolia/search-bundle, ainsi que sur EasyAdminBundle. Grâce à ces améliorations, la dette technique a été réduite et des fonctionnalités essentielles à la montée de version ont été ajoutées.

Les résultats

Yuka bénéficie de l’innovation de Symfony 7 pour plusieurs années.

Grâce à la montée de version, pas besoin de réécrire tout le code pour se mettre à jour. Yuka a donné un coup de jeune à sa base de code pour l’adapter aux nouveautés de Symfony et de PHP. Et avec la logique de backward compatibility de Symfony, l’application devrait bientôt passer sur Symfony 7.4, la version Long-Term Support, maintenue jusqu’à fin 2028.

La dette technique est réduite.

Grâce à la montée de version et aux refactorisations du code, Yuka a considérablement réduit sa dette technique. Pour François Martin, cofondateur et CTO de Yuka, il était primordial de “ne pas rester coincés sur une version vieillissante”.  Avec Symfony 7, la maintenance du back-end est simplifiée, les patchs de sécurité sont à jour et il est plus facile de recruter des développeurs sur les versions récentes du framework.

La performance de Yuka est optimisée.

En parallèle de la montée de version, la refactorisation du code a permis de mettre en cache de nombreuses requêtes. Le nombre de requêtes Algolia nécessaires pour effectuer des recherches sur des millions de produits a ainsi pu être diminué.

Besoin de mettre à jour votre application Symfony vers une version plus récente ?

Faites comme Yuka et mettez à jour la version de votre application Symfony pour améliorer vos performances et votre sécurité, et pour profiter de toutes les dernières innovations de Symfony.

Cela pourrait aussi vous intéresser

Affiche sur l'interview de Guillaume Loulier

Dans les coulisses d’une formation SensioLabs

À quoi ressemble une formation Symfony donnée par SensioLabs ? Découvrez-le dans cette interview avec Guillaume Loulier, développeur & formateur passionné, qui nous explique tout sur le fonctionnement des formations officielles sur le framework.

Toy factory production line

Boostez vos tests Symfony avec Zenstruck Foundry

Zenstruck Foundry a révolutionné notre manière d’écrire des tests dans Symfony. Dans cet article, vous apprendrez comment des fabriques expressives, des données de test isolées et une expérience développeur plus fluide nous ont permis d’optimiser nos flux de tests et d’améliorer la productivité.

Photo speaker meetup AI Symfony

Symfony et l’IA : la vidéo de l’événement est disponible

Et si on parlait de Symfony et l’intelligence artificielle (IA) ? C’était le thème de l’événement exclusif organisé le 3 octobre dernier par SensioLabs en partenariat avec Codéin. Avec en prime un retour d’expérience d’un projet de développement combinant Symfony et l’IA. Si vous avez manqué l’événement, retrouvez la vidéo, aujourd’hui disponible en accès libre sur notre chaîne Youtube.

2025 a year of celebrations for PHP with windows about API Platform, PHP, AFUP and Symfony

2025 : l’année des anniversaires pour PHP, l’AFUP, Symfony et API Platform

En 2025, plusieurs anniversaires majeurs vont avoir lieu. Les 20 ans de Symfony bien sûr, mais aussi les 30 ans de PHP, les 25 ans de l’AFUP et les 10 ans d’API Platform. Pour SensioLabs, c’est un jalon majeur qui montre la pérennité des technologies de notre écosystème. Nous sommes très heureux de fêter ces anniversaires avec la communauté pendant toute l’année.

Image