Black Friday Spécial Anniversaire: -30% sur la formation et -10% sur les services Demandez un devis

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

The SensioLabs team celebrating the 20th anniversary of Symfony with balloons

L'histoire continue : SensioLabs célèbre les 20 ans de Symfony

Le temps passe vite, surtout quand on écrit le futur du développement ! L’équipe de SensioLabs vient de souffler les 20 bougies du framework Symfony. Nous avons marqué le coup au bureau, mais la fête n'est pas terminée. Le rendez-vous est déjà pris pour une célébration XXL à SymfonyCon Amsterdam 2025 les 27 au 28 novembre.

En savoir plus
3 dog heads

Venez avec votre propre client HTTP

Libérez-vous des dépendances rigides de vos SDK PHP. Dans cet article, apprenez à utiliser les normes PSR-7, PSR-17 et PSR-18, ainsi que la bibliothèque php-http/discovery, pour permettre à vos utilisateurs d'utiliser le client HTTP de leur choix, qu'il s'agisse de Guzzle, de Symfony HttpClient ou d'un autre. Un incontournable pour les développeurs PHP et Symfony.

En savoir plus
Staffbase logo icon

Staffbase : découvrez vos nouveaux collègues, Symfony et Storyblok

Leader mondial des plateformes de communication interne, Staffbase s'est associé à SensioLabs Deutschland pour réaliser une refonte complète de son site web d'entreprise.

En savoir plus
Blue sign on a building with several Now What? letters

Comment prioriser les messages lors du développement d'applications asynchrones avec Symfony Messenger

Le traitement asynchrone offre des avantages tels que la découplage des processus et des temps de réponse plus rapides, mais la gestion des priorités des messages peut s'avérer complexe. Pour traiter des tâches allant de la réinitialisation de mot de passe à des exports complexes, il est essentiel de garantir la livraison rapide des messages critiques. Cet article examine les problèmes fréquents liés au traitement asynchrone et propose des solutions avec Symfony Messenger pour optimiser votre application sans refonte majeure.

En savoir plus
SensioLabs University Courses Annonce La nouvelle formation Master de niveau 3 est disponible sur un fond vert

Master Symfony : Devenez un expert de Symfony avec notre nouvelle formation

Améliorez votre maîtrise de Symfony grâce à la nouvelle formation Master de niveau 3 sur Symfony ! Maîtrisez les sujets les plus complexes du framework et développez des compétences approfondies.

En savoir plus
Two images: on the left many cars stuck in a traffic jam with the sign "All directions" above, on the right a blue car moving forward alone on the highway with the sign "Service Subscriber" and a Symfony logo above

Les Lazy Services de Symfony : Boostez votre DX en utilisant les Service Subscribers

Optimisez la performance de votre application Symfony et l'expérience développeur ! Apprenez à utiliser les Service Subscribers et les attributs de chargement différé des services afin de réduire l'instanciation rapide, de simplifier les dépendances et de créer un code modulaire et maintenable.

En savoir plus
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.

En savoir plus
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é.

En savoir plus
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.

En savoir plus
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.

En savoir plus
SymfonyDay Chicago 2025

SymfonyDay Chicago 2025 : La célébration de la communauté Symfony

Le 17 mars, la communauté Symfony s’est réunie à Chicago pour le SymfonyDay Chicago 2025. Bien plus qu’une simple conférence, c’était un rassemblement autour de Ryan Weaver, un membre précieux de la communauté.

En savoir plus
type-safety-uuid

Des identifiants sécurisés par type avec Symfony et Doctrine : l'utilisation de classes d’ID dédiées

Apprenez à améliorer la sécurité des types dans Symfony et Doctrine en utilisant des classes d’ID dédiées comme BookId et UserId au lieu d’UUID bruts. Cette approche permet d'éviter la confusion des identifiants, de rendre le code plus clair et d'assurer une meilleure intégration avec Symfony Messenger et les méthodes de repository. Découvrez des exemples pratiques et les meilleures pratiques pour implémenter des identifiants sécurisés par type dans vos applications Symfony.

En savoir plus
Storyblok Logo

SensioLabs adopte le Headless : Libérer la flexibilité du contenu avec Storyblok

SensioLabs a adopté la puissance de Storyblok, un CMS headless leader, pour offrir une plus grande flexibilité et évolutivité dans la gestion de contenu. En intégrant Storyblok dans nos workflows, nous donnons aux développeurs et aux créateurs de contenu la possibilité de livrer des expériences dynamiques et fluides sur plusieurs plateformes.

En savoir plus
Doctrine

Expert Doctrine

Vous avez des questions sur vos modèles de données dans votre projet Symfony ? Obtenez des réponses d'un Expert Doctrine de SensioLabs pour vous aider à identifier et optimiser l'accès Doctrine à vos données.

En savoir plus
Image