• Contact us
  • Documentation
  • Login
Watch a demoFree trial
Blog
Blog
BlogProduitÉtudes de casNouvellesPerspectives
Blog

Upsun : la PaaS qui manquait pour faire évoluer les applications Laravel

PaaSPHPconfigurationGitLaravel
03 janvier 2024
Thomas di Luccio
Thomas di Luccio
Ingénieur DevRel
Partager
Cette page a été rédigée en anglais par nos experts, puis traduite par une IA pour vous y donner accès rapidement! Pour la version originale, c’est par ici.

Laravel est un framework PHP simple, évolutif et sécurisé, soutenu par une communauté dynamique et active. C'est le point de départ de nombreuses applications web et entreprises en ligne de qualité, conçu pour permettre aux développeurs de se concentrer sur la création de valeur pour leurs clients et utilisateurs, plutôt que de se battre avec un framework rigide.

Upsun et Laravel partagent la même conviction : les développeurs devraient se concentrer davantage sur la création de fonctionnalités et l'exploration de nouvelles technologies et de nouveaux horizons, et moins sur la recréation sans cesse renouvelée des outils qui soutiennent leurs projets. Avec autant de points communs et de qualités partagées, on peut affirmer sans risque que Upsun est la PaaS idéale pour héberger et faire évoluer les applications Laravel.

Crée sans te soucier des détails

Il s’agit de se concentrer sur ce qui compte le plus : être libre de créer de superbes applications sans se soucier des détails. Pour tous les artisans du web, Upsun t’aide à atteindre les sommets avec tes applications Laravel, un déploiement à la fois.

Upsun offre aux équipes de développement la flexibilité nécessaire pour créer — et la puissance pour faire tourner — des applications variées sur une seule plateforme PaaS en libre-service. En automatisant la gestion de l’infrastructure et la sécurité, Upsun permet à chaque développeur d’expérimenter facilement, d’itérer rapidement et de déployer des applications à grande échelle de manière responsable. Mais comment ?

Quelle que soit la complexité de tes applications, Upsun te permet de contrôler entièrement ton environnement via ton terminal et des fichiers YAML. Nous sommes là pour te guider à travers les étapes nécessaires pour y parvenir en exécutant tes applications Laravel sur Upsun — consulte la documentation complète ici.

Upsun CLI pour les artisans du web : comment le configurer

Commence par télécharger et installer la CLI Upsun, où tu pourras ensuite découvrir toutes les commandes Upsun avec upsun list—tout ce dont tu as besoin pour coder avec audace ce qu’aucun développeur n’a jamais codé auparavant se trouve ici.

Une fois que tu disposes de la CLI Upsun, tu auras besoin d’un projet. Tu peux cloner ton application Laravel à partir de son dépôt Git ou créer une nouvelle application Laravel à partir de zéro et initialiser un dépôt Git.

Nous te recommandons d’initialiser un dépôt Git avant de créer un projet Upsun, car celui-ci servira alors de main suivi d’environnement de ta branche principale. Sinon, l’environnement principal pourrait suivre une branche principale tandis que ta branche par défaut pourrait être une master et donc traitée comme un environnement secondaire.

Il est maintenant temps de créer un projet Upsun avec upsun project:create. Tu peux également créer un projet via l'interface utilisateur, puis le récupérer localement avec upsun get PROJECT_ID.

La CLI Upsun dispose d’une project:init conçue pour initialiser les configurations et t'aider à démarrer en un clin d'œil. Cette commande a un raccourci sympa : upsun ify. C'est aussi simple que ça, mais comment ça marche ?

Upsunifie ton application Laravel

La upsun ify commande détecte automatiquement le framework, le runtime et les gestionnaires de dépendances utilisés. Il ne te reste plus qu’à nommer ton projet Upsun et à sélectionner les différents services que tu comptes utiliser.

La upsun ify commande fournit une liste de services dont la configuration sera initialisée pour toi. Utilise les flèches pour déplacer le sélecteur, la barre d’espace pour sélectionner un service et la saisie pour filtrer la liste.

Tu peux ajouter autant de services que tu le souhaites à ton application — consulte la documentation pour savoir tout ce dont tu as besoin pour personnaliser ton projet Upsun à ta guise.

Selon la complexité de l'application, la upsun ify commande ne générera peut-être pas l’intégralité des fichiers de configuration pour toi, mais elle te permettra de démarrer avec 80 à 90 % de la configuration déjà prête. Nos guides de stack, notre documentation et notre communauté sont également toujours à ta disposition pour t’aider à réaliser une configuration de premier ordre en un rien de temps.

Laravel libéré : créer un écosystème découplé prêt à évoluer

Upsun est la plateforme PaaS conçue pour t'aider à faire évoluer tes applications Laravel dans la direction que tu souhaites, quelle que soit la complexité apparente de ton application. Tu souhaites peut-être faire évoluer ton projet horizontalement en intégrant davantage de technologies. Ton projet n’est peut-être pas une simple application Laravel. Il peut être associé à des workers, des services web en NodeJS et Go, ainsi qu’à une couche de données en Python. C’est cet écosystème technologique, avec Laravel en son cœur, qui est nécessaire pour faire fonctionner le produit ou le service de ton entreprise. Et Upsun peut t’aider à le gérer.

Notre documentation fournit un guide pour créer des projets Uspun comprenant plusieurs applications. Le .upsun/config.yaml fichier contient une application’s clé de niveau supérieur contenant la configuration de tes premières applications. Tu peux soit choisir d'ajouter d'autres entrées à ce fichier, soit diviser la configuration en plusieurs fichiers, un par application. Lors de la mise en place de l'infrastructure pour notre projet, Upsun regroupe également tous les fichiers YAML dans le .upsun dossier en un seul fichier de méta-configuration.

Configurer les répertoires de cache accessibles en écriture

Laravel nécessite que certains dossiers de cache soient accessibles en écriture. Upsun nous oblige à définir explicitement quels dossiers sont accessibles en écriture après la compilation — ces dossiers sont appelés « mounts ». Pour garantir que bootstrap/cache et storage soient accessibles en écriture, vérifie la mounts définition de ton .upsun/config.yaml file, comme indiqué ci-dessous. Un dossier de cache spécifique à Laravel doit être créé lors du déploiement de l'application s'il en manque un.

applications:
      app:
        ...
        mounts:
          ...
      
        "bootstrap/cache":
          source: "storage"
          source_path: "cache"
                     
        "storage":
          source: "storage"
          source_path: "storage"

 

Plusieurs hooks s’exécutent dans le cadre du processus de compilation et de déploiement de ton application. Ce sont des points où tu peux exécuter des scripts personnalisés, comme ce deploy hook qui garantit que les caches sont correctement configurés et préchauffés :

applications:
      app:
        ...
        hooks: 
          deploy: |
            set -eux
               
            # ensure the cache directories are available
            mkdir -p storage/framework/cache/data
            mkdir -p storage/framework/views
            mkdir -p storage/framework/sessions
               
            # clear all caches and dumped files
            php artisan optimize:clear
               
            # run all available migrations
            php artisan migrate --force

 

Les hooks offrent encore plus de puissance d'automatisation, car tu pourras exécuter plusieurs commandes à un moment critique du cycle de vie du déploiement, notamment build, deploy, et post_deploy.

Un pont entre Laravel et Upsun

Laravel s'attend à ce que toutes les configurations soient fournies via des variables d'environnement portant des noms spécifiques, dans un format spécifique. Upsun fournit les informations de configuration sous forme de variables d'environnement dans un format spécifique différent.

La platformsh/laravel-bridge bibliothèque mappe les variables Upsun au format attendu par Laravel pour les valeurs courantes et facilite grandement la vie de nos artisans. Ajoutons-la avec :

composer require platformsh/laravel-bridge

 

L'artisanat au service d'une croissance durable : allouer les ressources alors que la demande explose

À l'ère de la durabilité numérique, les développeurs doivent garder le contrôle. Garder le contrôle garantit une allocation optimale des ressources, ce qui est directement lié au succès d'une application, et implique une plus grande responsabilité environnementale.

Une utilisation excessive des ressources n'est pas seulement une question de coûts gaspillés ; elle se traduit directement par des émissions de carbone inutiles. En ajustant méticuleusement les ressources pour qu'elles correspondent à la trajectoire de croissance d'une application, les développeurs peuvent créer des applications efficaces et performantes sans impact écologique. Upsun vise à donner aux développeurs les moyens de remplir cette double mission : favoriser la croissance numérique tout en défendant la gestion responsable de l'environnement.

La commande upsunify et la documentation devraient t'avoir permis de définir l'infrastructure nécessaire à ton application. Dès le premier déploiement, l'allocation des ressources s'effectue par défaut avec des ressources standard, qui peuvent être personnalisées à tout moment.

Contrôle total de l'allocation des ressources

La définition de ton projet doit alors être prise en compte. Tu dois encore définir quelles ressources doivent être utilisées pour faire fonctionner ton application, et ce sera l’exigence finale. C’est un processus en deux étapes : tu décris ton infrastructure dans un fichier YAML et tu définis l’allocation des ressources pour contrôler les coûts.

Imaginons que tu aies défini une backend application fonctionnant sous Laravel, frontend utilisant NodeJS ou Bun, et une base de données MySQL database. Nous devons maintenant nous assurer que chacun de ces conteneurs bénéficie d’une quantité optimale de ressources.

Voyons ce qui se passe en coulisses pour bien comprendre les possibilités qui s’offrent à toi. Toutes les images à ta disposition ont un profil par défaut : BALANCED, HIGH_CPU, HIGH_MEMORY, selon que tu souhaites privilégier le CPU ou la mémoire, ou que tu préfères un équilibre entre ces deux exigences. Cela se traduit par un rapport mémoire/unité CPU.

Les images sont fournies avec une valeur de profil par défaut optimisée qui sera le choix privilégié dans la plupart des cas. Mais on veut que tu sois aux commandes. Tu peux éventuellement remplacer la valeur par défaut et définir explicitement le profil que tu souhaites utiliser en étendant la définition des services dans ton .upsun/config.yaml fichier.

services:
      database:
        type: mysql:10.6
        container_profile: HIGH_MEMORY

 

Une fois cela défini, ou plus probablement laissé tel quel, nous allons indiquer la quantité de CPU, et donc de mémoire, que nous souhaitons allouer à chaque conteneur. La taille de ce conteneur peut être 0,1, 0,25, 0,5, 1, 2 ou 4. La quantité de mémoire associée à chaque niveau de CPU est disponible dans la documentation.

Notre nœud frontend est ultra-léger et ne nécessite que 0,1 CPU, le minimum. On a apporté de nombreuses améliorations à notre backend (merci Blackfire !), et 0,25 suffit pour le faire tourner. Notre base de données est énorme et a besoin de plus de ressources pour rester rapide :    

upsun resources:set --size frontend:0.1,backend:.25,database:1

 

Notre backend nécessite une redondance. Donnons-lui 3 instances :

upsun resources:set --count backend:3

 

Terminons notre configuration en attribuant 512 Mo de disque à l’ backend application et 2 Go au database service :

upsun resources:set --disk backend:512,database:2048

 

Pas besoin de redéployer (upsun redeploy). Nos modifications ont déjà été prises en compte. Cela signifie également qu’il suffira de quelques commandes CLI pour augmenter ou réduire les ressources allouées à l’avenir.

Imagine que tu s’apprêtes à lancer un nouveau produit passionnant qui va attirer une foule importante sur ton site. Quelques commandes juste avant le moment « One more thing » de ton discours garantiront que ton application reste opérationnelle et continue de fonctionner même en cas de trafic intense et soutenu.

Observabilité à tous les niveaux

Chaque projet Upsun s’accompagne d’une solution d’observabilité complète qui donne aux développeurs et aux équipes opérationnelles la capacité de superviser leurs applications, d’identifier les erreurs et les anomalies, et de résoudre les problèmes de manière proactive avant qu’ils ne s’aggravent.

Les outils d’observabilité d’Upsun comprennent :

Grâce à l'observabilité à tous les niveaux, les développeurs peuvent prendre des décisions basées sur les données et obtenir des informations précieuses sur le comportement de leurs applications, ce qui leur permet d'améliorer en continu leurs systèmes pour des performances et une efficacité optimales.

Infrastructure pilotée par Git

Non seulement Upsun donne les moyens aux développeurs de décrire l’infrastructure dont ils ont besoin dans de simples fichiers YAML, mais il fait également de Git la source unique de vérité. En particulier, chaque environnement créé sur ton projet est lié à des branches Git.

Imaginons que tu souhaites travailler sur une fonctionnalité spécifique de ton application. Tu vas créer un environnement basé sur ton environnement de production, et très probablement sur ta main branche. Upsun provisionnera automatiquement un clone de ton application, avec tous ses services et données associés, à partir de la dernière sauvegarde disponible. Tu disposeras même d’une URL de développement afin de pouvoir tester tes fonctionnalités et collaborer avec ton équipe.

Il existe une intégration avec GitHub et les principaux fournisseurs Git tiers que tu pourrais envisager. Cette intégration te permet de disposer d’environnements provisionnés automatiquement à chaque fois que tu crées des branches, effectues un pull ou soumets des demandes de fusion. La fusion d’une branche redéploie automatiquement l’environnement cible. C’est génial, non ?

Tu as donc un contrôle total sur tes environnements de production et hors production. C'est également le cas pour l'allocation des ressources. Tu peux décider de réduire les ressources allouées aux différents conteneurs ou à ton environnement hors production avec la même upsun resources:set commande, tout en maintenant des exigences élevées en matière de ressources pour ton environnement de production.

Artisans du Web, le monde t'appartient. Que vas-tu créer ensuite avec Laravel et Upsun ?

En conclusion, Upsun est spécialement conçu pour offrir aux développeurs le meilleur des deux mondes : la possibilité de faire évoluer les ressources au rythme des besoins croissants de leur application Laravel, tout en étant respectueux de l’environnement. Le rôle du développeur n’a jamais été aussi crucial ; tu ne te contentes pas de coder une application, tu construis l’avenir de la durabilité et de la performance numériques.

Nous comprenons qu’aucun parcours de développement ne se fait en solitaire. C’est un effort collectif qui se nourrit du partage des connaissances et de la résolution collaborative des problèmes. C’est pourquoi nous t’invitons à poursuivre la conversation et à partager tes expériences, tes questions ou tes idées sur nos réseaux sociaux dédiés.

Rejoins un espace où les développeurs Laravel comme toi peuvent collaborer, apprendre et grandir ensemble pour créer la prochaine génération d'applications évolutives, découplées et respectueuses de l'environnement. Nous avons hâte de savoir sur quoi tu travailles et comment nous pouvons mieux t'accompagner dans ton parcours de développement.

Construisons tout ensemble avec Laravel et Upsun, en tirant pleinement parti de la puissance de notre PaaS Laravel.

Restez informé

Abonnez-vous à notre newsletter mensuelle pour les dernières mises à jour et nouvelles.

Votre meilleur travail
est à l'horizon

Essai gratuit