- Fonctionnalités
- Pricing

Cet article de blog est basé sur la présentation de Florent Huck, Developer Advocate chez Upsun, lors de la SymfonyCon 2023. Nous avons utilisé des outils d'IA pour la transcription et pour améliorer la structure et la clarté du contenu.
Le passage d'une application monolithique unique à une architecture multi-applications ne doit pas nécessairement être intimidant. Lors d'une récente conférence de développeurs, Florent, de l'équipe Developer Relations d'Upsun, a présenté un guide pratique étape par étape sur la manière de refactoriser un monolithe en plusieurs applications à l'aide d'Upsun.
Selon les données d'Upsun, 90 % des applications Symfony hébergées sur leur plateforme sont des monolithes, et seulement 10 % utilisent deux applications ou plus. Cette statistique révèle une opportunité significative pour les développeurs de moderniser leur architecture et de découpler leurs applications pour une meilleure évolutivité et maintenabilité.
Le projet présenté en exemple est le site de l'atelier « Bigfoot ». Il a démarré sous la forme d'une application Symfony 6.2 sur PHP 8.3 avec PostgreSQL 15 et sans interface d'administration. Pour l'atelier, l'équipe avait besoin du même site dans d'autres langues et d'un moyen simple de gérer le contenu. Cela a motivé le passage d'une application unique à une configuration multi-applications :
Upsun se situe entre votre code et le principal fournisseur de cloud que vous choisissez. Vous n'avez pas à gérer les serveurs. Vous envoyez votre code, définissez une configuration YAML simple, et Upsun se charge de l'hébergement. Un nouveau projet bénéficie d'une architecture prête à l'emploi : CDN, sauvegardes automatiques, caches, recherche et base de données. Même l'application de démonstration inclut PostgreSQL sans nécessiter d'étapes supplémentaires. Les certificats sont gérés pour vous avec des renouvellements automatiques, vous n'avez donc pas à vous soucier de la gestion des certificats TLS.
Si vous souhaitez découvrir rapidement le fonctionnement d'Upsun, commencez ici, sur le site web d'Upsun.
Quatre commandes pour démarrer
Le processus de déploiement est simple. Avec seulement quatre commandes utilisant l'interface CLI Symfony, vous pouvez mettre votre application en service :
À partir de là, chaque branche Git dispose de son propre environnement live avec une URL stable et un certificat valide. Vous testez dans un environnement qui se comporte comme un environnement de production. Grâce au travail de Fabien Potencier qui a intégré les outils CLI Upsun dans le CLI Symfony, tout peut être géré via une seule interface.
Pour illustrer le processus de refactorisation, Florent a utilisé un exemple concret : le site web Bigfoot, initialement créé pour les ateliers Blackfire. Ce site de type blog consacré aux observations de Bigfoot a été construit comme un monolithe à l'aide de :
L'objectif était de transformer cette application unique en plusieurs applications interconnectées :
Ne poussez jamais directement en production. Commencez par créer une nouvelle branche à l'aide de la CLI Symfony, qui crée automatiquement une branche Git locale et un environnement correspondant avec les mêmes données que votre branche précédente.
Upsun génère automatiquement des certificats SSL et gère leur renouvellement, éliminant ainsi le point faible auquel de nombreux développeurs sont confrontés lorsqu'ils gèrent manuellement les certificats.
La transformation nécessite de réorganiser votre structure de dossiers. Au lieu d'avoir une seule application avec un dossier de configuration .upsun, vous créez :
.upsun racine contenant la principaleInstallez le bundle API Platform core dans l'application Symfony. Il expose une API REST à partir de vos entités Doctrine. Lorsqu'une entité change, les points de terminaison REST reflètent ce changement. C'est ainsi que le front-end Gatsby et l'administrateur liront et écriront le contenu.
Upsun utilise un seul fichier de configuration YAML. Ce fichier contient trois sections principales :
Configuration des routes : chaque application dispose de son propre bloc de routage. Vous définissez des modèles d'URL, par exemple en utilisant le domaine par défaut pour l'application principale, /admin pour l'interface d'administration, /site pour le front-end Gatsby et des sous-domaines pour des services tels que Mercure.
Configuration des services : l'ajout de services est très simple. Sous services , définissez les bases de données dont chaque application a besoin :
type: postgresql avec version: 15 pour la base de données.Par exemple, pour ajouter Redis, il suffit de spécifier :
redis:
type: redis
version: 7Vous pouvez ajouter ici de petits indicateurs de configuration (tels que la politique de mémoire maximale). Upsun transforme ce simple bloc en un service géré adapté au cloud que vous avez choisi. Vous n'avez pas à écrire de scripts de configuration spécifiques au fournisseur.
Configuration de l'application : pour chaque application, vous définissez :
public/index.php).symfony build et symfony deploy de Symfony Configurator pour vider le cache, exécuter les migrations et exécuter toutes les commandes personnalisées dont vous avez besoin. Ajoutez des tâches cron et des workers si nécessaire.Lorsque vos modifications de configuration et de code sont prêtes :
symfony push déploie votre environnement de branche./admin./site.Testez chaque route. Lorsque vous êtes satisfait, exécutez symfony merge. Upsun favorise le passage de la construction à la production.
Upsun introduit une commande CLI resource:set qui permet l'allocation des ressources par conteneur. Vous pouvez spécifier exactement la quantité de CPU et de RAM attribuée à chaque conteneur, ce qui rend la plateforme plus flexible et plus rentable.
Ce contrôle granulaire vous permet de :
Upsun prend en charge l'intégration avec GitHub, GitLab et Bitbucket. Lorsque vous créez une nouvelle branche et que vous la poussez vers votre référentiel, Upsun déploie automatiquement votre code source dans un environnement dédié, permettant ainsi une intégration continue adéquate.
Cependant, les développeurs doivent être attentifs à l'utilisation des ressources, car chaque environnement contribue à la facture mensuelle. Contrairement aux environnements de test de taille fixe, le modèle flexible d'Upsun signifie que vos branches de fonctionnalités peuvent avoir un impact sur les coûts si elles ne sont pas gérées de manière adéquate.
La devise d'Upsun est « Déployez le vendredi » (et même « Déployez le Black Friday »). La philosophie est simple : si vous pouvez tester vos fonctionnalités dans un environnement similaire à celui de production, vous pouvez pousser en toute confiance tout le code source nécessaire vers votre branche Git.
Cette approche élimine le cauchemar courant des développeurs : « Je ne comprends pas pourquoi la mise en scène a échoué ; cela fonctionne localement. » Avec une parité d'environnement appropriée, les fichiers manquants entraîneront des échecs dans votre environnement de développement avant d'atteindre la production.
L'architecture multi-applications nécessite de légères modifications de votre processus Git, mais le processus de base reste familier. La clé est de déployer fréquemment et de tester minutieusement dans les branches d'environnement avant de fusionner avec la production.
Au cours du développement du site multi-applications Bigfoot, plusieurs défis sont apparus :
.environment offre la flexibilité requise pour divers scénarios de déploiement.Cette approche de la refactorisation ouvre de nombreuses possibilités pour le développement web moderne. En découplant votre monolithe en applications spécialisées, vous bénéficiez des avantages suivants :
Le projet Bigfoot a démontré avec succès comment un monolithe Symfony traditionnel peut évoluer vers une architecture moderne multi-applications tout en conservant toutes ses fonctionnalités et en ajoutant de nouvelles capacités, telles que la communication en temps réel et des interfaces d'administration avancées.
Vous n'avez pas besoin de vous lancer dans le labyrinthe des microservices. Vous pouvez diviser un monolithe en plusieurs applications lorsque cela est judicieux, par exemple API, administration, front-end et temps réel. Le YAML unique, les services gérés, le HTTPS automatique et les environnements de branche d'Upsun rendent cette transition sûre et reproductible. Lorsque vous êtes prêt, fusionnez et passez en production.
Join our monthly newsletter
Compliant and validated