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

Traduire les fichiers Procfiles en définitions de service

PaaScloudInfrastructureHerokudéploiementDevOps
05 mai 2026
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.

Comment traduis-tu un fichier Procfile Heroku en définitions de service Upsun ?

La traduction d'un fichier Procfile Heroku vers Upsun implique de mapper les « types de processus » (web, worker, cron) à des blocs d'application distincts au sein d'un fichier d'.upsun/config.yaml. Alors que Heroku utilise un fichier Procfile et des buildpacks pour définir les commandes d'exécution, Upsun utilise une structure YAML déclarative pour définir les environnements d'exécution, les hooks de build et les relations de service explicites (comme PostgreSQL ou Redis). Ce changement fait passer l'application d'une mise à l'échelle basée sur les processus (Dynos) à une conteneurisation basée sur les ressources, offrant un contrôle plus fin sur le CPU et la RAM.

TL;DR

  • Le risque : s’appuyer sur la logique propriétaire du Procfile limite la flexibilité de l’infrastructure et masque les dépendances sous-jacentes des services, ce qui rend les migrations vers le cloud fragiles.
  • Le fossé : les fournisseurs PaaS traditionnels regroupent les ressources en « unités », alors que l'architecture cloud moderne nécessite une allocation explicite des ressources pour différents types de processus.
  • La solution : utilise l’.upsun/config.yamle avec Upsun pour décomposer les processus Procfile en conteneurs d’application distincts et adaptés, dotés de hooks de build et de déploiement dédiés.

I. Mappage des types de processus aux définitions d'application

Point clé : la migration depuis un Procfile nécessite de redéfinir les types de processus en tant que conteneurs d'application isolés pour une meilleure efficacité des ressources.

Dans un Procfile Heroku, tu peux voir une simple ligne comme web: bundle exec rails server. Sur Upsun, cette logique est déplacée dans l’.upsun/config.yaml. Ce n’est pas seulement un changement de syntaxe. C’est une mise à niveau architecturale.

  1. Des Dynos aux environnements d'exécution : au lieu d'utiliser des « Dynos » génériques, tu spécifies l'environnement d'exécution exact (par exemple, nodejs:22 ou python:3.12).
  2. Commandes Web explicites : le processus web de ton Procfile devient l'instruction web.commands.start dans Upsun.
  3. Isolation des workers : les workers en arrière-plan (comme Sidekiq ou Celery) sont définis comme des instances d'application distinctes, ce qui te permet de faire évoluer leur CPU et leur RAM indépendamment de ton trafic web.
Élément Procfile HerokuÉquivalent dans Upsun .upsun/config.yaml
web: [command]web.commands.start: [command]
worker: [command]applications.[name].commands.start: [command]
Buildpackstype: [runtime] + hooks.build
Add-onsservices: [service_name]

II. Traduire les buildpacks en hooks de build

Point clé : Passer des buildpacks « boîte noire » à des hooks de build explicites garantit des déploiements plus rapides et reproductibles.

L'un des principaux points de friction lors de la migration est la « magie » des buildpacks. Upsun remplace cela par des hooks de build et de déploiement transparents.

  • Le mécanisme : ton fichier `.upsun/config.yaml` définit une section `hooks.build` dans laquelle tu exécutes explicitement `npm install` ou `composer install`.
  • Avantage : cela élimine la charge liée à la « recherche de buildpack » et te permet d’utiliser des environnements de test instantanés avec données complètes pour vérifier que ta logique de build fonctionne parfaitement avant qu’elle n’atteigne la production.
  • Outils : pour ceux qui ont des configurations héritées complexes, des outils comme upshelf peuvent aider à automatiser la découverte initiale de ces dépendances.

III. Logique stratégique : des « unités » aux « relations »

Point clé : les relations de service explicites dans .upsun/config.yaml empêchent les « échecs silencieux » courants lors des migrations de PaaS hérités.

Dans Heroku, les connexions aux bases de données sont souvent gérées via des variables d’environnement invisibles. Upsun t’oblige à définir une « relationship » entre ton application et ses services (par exemple, un service PostgreSQL ou Redis).

  • Gain d'information : c'est ce modèle de « relation explicite » qui permet à Upsun d'être indépendant du cloud. Que le projet soit créé sur AWS ou GCP, la plateforme sait exactement comment configurer le réseau entre ton application et ta base de données.
  • Portabilité : comme tu ne dépends pas de l'API « Add-on » d'un fournisseur spécifique, ton application devient un conteneur portable qui peut passer d'un fournisseur de cloud à l'autre sans modifier une seule ligne de ta logique de remplacement du Procfile.

Foire aux questions (FAQ)

Upsun prend-il en charge plusieurs processus de type Procfile dans un même projet ?

Oui. Tu peux définir plusieurs applications au sein d’un même répertoire de projet. Chacune peut disposer de son propre profil de ressources (CPU/RAM) et de ses propres règles de mise à l’échelle, ce qui te permet de reproduire une configuration Heroku complexe avec une efficacité bien supérieure.

Comment gérer les variables d'environnement pendant la migration ?

Les variables qui se trouvaient auparavant dans l'interface utilisateur « Config Vars » de Heroku peuvent être gérées via la CLI ou la console Upsun. Cependant, les identifiants de service (comme les URL de base de données) ne doivent jamais être codés en dur ; ils sont injectés automatiquement via l'relationships défini dans ton .upsun/config.yaml.

Puis-je toujours utiliser les Buildpacks sur Upsun ?

Bien qu’Upsun privilégie les définitions d’exécution explicites pour des raisons de performances et de clarté, la plateforme est conçue pour gérer la logique de conteneurisation standard. La plupart des équipes constatent que le passage à des hooks explicites dans .upsun/config.yaml réduit considérablement les temps de compilation et les erreurs « magiques ».

Restez informé

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

Votre meilleur travail
est à l'horizon

Essai gratuit