• Contact us
  • Documentation
  • Login
Watch a demoFree trial
Blog
Blog
BlogProduktFallstudienNachrichtenInsights
Blog

Übersetzung von Procfiles in Service-Definitionen

PaaScloudInfrastrukturHerokuBereitstellungDevOps
05 Mai 2026
Teilen
Diese Seite wurde von unseren Experten auf Englisch verfasst und mithilfe einer KI übersetzt, um einen schnellen Zugriff zu ermöglichen! Die Originalversion findest du hier.

Wie übersetzt man eine Heroku-Procfile-Datei in Upsun-Dienstdefinitionen?

Die Übersetzung eines Heroku-Procfiles in Upsun beinhaltet die Zuordnung von „Prozesstypen“ (Web, Worker, Cron) zu separaten Anwendungsblöcken innerhalb einer „.upsun/config.yaml“-Datei. Während Heroku ein Procfile und Buildpacks verwendet, um Laufzeitbefehle zu definieren, nutzt Upsun eine deklarative YAML-Struktur, um Laufzeiten, Build-Hooks und explizite Service-Beziehungen (wie PostgreSQL oder Redis) zu definieren. Durch diese Umstellung wechselt die Anwendung von prozessbasierter Skalierung (Dynos) zu ressourcenbasierter Containerisierung, was eine feinere Kontrolle über CPU und RAM ermöglicht.

TL;DR

  • Das Risiko: Sich auf proprietäre Procfile-Logik zu verlassen, schränkt die Flexibilität der Infrastruktur ein und verbirgt die zugrunde liegenden Service-Abhängigkeiten, was cloud-Migrationen anfällig macht.
  • Die Lücke: Ältere PaaS-Anbieter bündeln Ressourcen in „Einheiten“, während moderne cloud-Architekturen eine explizite Ressourcenzuweisung für verschiedene Prozesstypen erfordern.
  • Die Lösung: Nutze den „.upsun/config.yaml“ mit Upsun, um Procfile-Prozesse in separate, bedarfsgerechte Anwendungscontainer mit dedizierten Build- und Deploy-Hooks aufzuteilen.

I. Zuordnung von Prozesstypen zu Anwendungsdefinitionen

Das Wichtigste: Die Migration von einem Procfile erfordert die Neudefinition von Prozesstypen als isolierte Anwendungscontainer für eine bessere Ressourceneffizienz.

In einem Heroku-Procfile findest du vielleicht eine einfache Zeile wie „web: bundle exec rails server“. Bei Upsun wird diese Logik in die „.upsun/config.yaml“ verlagert. Das ist nicht nur eine syntaktische Änderung. Es ist ein architektonisches Upgrade.

  1. Von Dynos zu Runtimes: Anstelle von generischen „Dynos“ gibst du die genaue Runtime an (z. B. nodejs:22 oder python:3.12).
  2. Explizite Web-Befehle: Der „web“-Prozess aus deiner Procfile-Datei wird in Upsun zur Anweisung „web.commands.start“.
  3. Worker-Isolation: Hintergrund-Worker (wie Sidekiq oder Celery) werden als separate Anwendungsinstanzen definiert, sodass du ihre CPU- und RAM-Ressourcen unabhängig von deinem Web-Traffic skalieren kannst.
Heroku-Procfile-ElementUpsun-.upsun/config.yaml-Äquivalent
web: [command]web.commands.start: [command]
worker: [command]applications.[name].commands.start: [command]
Buildpackstype: [runtime] + hooks.build
Add-onsservices: [service_name]

II. Buildpacks in Build-Hooks umsetzen

Das Wichtigste auf einen Blick: Der Wechsel von „Black-Box“-Buildpacks zu expliziten Build-Hooks sorgt für schnellere, reproduzierbare Deployments.

Einer der größten Stolpersteine bei der Migration ist die „Magie“ der Buildpacks. Upsun ersetzt diese durch transparente Build- und Deploy-Hooks.

  • Der Mechanismus: In deiner „.upsun/config.yaml“-Datei definierst du einen Abschnitt „hooks.build“, in dem du explizit „npm install“ oder „composer install“ ausführst.
  • Vorteil: Dies eliminiert den Overhead der „Buildpack-Suche“ und ermöglicht es dir, Instant Data-Complete Preview Environments zu nutzen, um zu überprüfen, ob deine Build-Logik einwandfrei funktioniert, bevor sie in die Produktivumgebung geht.
  • Tools: Für diejenigen mit komplexen Legacy-Setups können Tools wie upshelf dabei helfen, die anfängliche Erkennung dieser Abhängigkeiten zu automatisieren.

III. Strategische Logik: Von „Einheiten“ zu „Beziehungen“

Das Wichtigste auf einen Blick: Explizite Service-Beziehungen in .upsun/config.yaml verhindern die bei Legacy-PaaS-Migrationen häufig auftretenden „stillen Ausfälle“.

In Heroku werden Datenbankverbindungen oft über unsichtbare Umgebungsvariablen verwaltet. Upsun verlangt, dass du eine „relationship“ zwischen deiner Anwendung und ihren Diensten (z. B. einem PostgreSQL- oder Redis-Dienst) definierst.

  • Informationsgewinn: Dieses Modell der „expliziten Beziehung“ ermöglicht es Upsun, cloudunabhängig zu sein. Unabhängig davon, ob das Projekt auf AWS oder GCP erstellt wird, weiß die Plattform genau, wie das Netzwerk zwischen deiner App und deiner Datenbank zu verknüpfen ist.
  • Portabilität: Da du nicht auf die „Add-on“-API eines bestimmten Anbieters angewiesen bist, wird deine Anwendung zu einem portablen Container, der zwischen cloud-Anbietern verschoben werden kann, ohne dass du auch nur eine einzige Zeile deiner Procfile-Ersatzlogik ändern musst.

Häufig gestellte Fragen (FAQ)

Unterstützt Upsun mehrere Prozesse im Procfile-Stil in einem Projekt?

Ja. Du kannst mehrere Anwendungen innerhalb eines einzigen Projektverzeichnisses definieren. Jede kann ihr eigenes Ressourcenprofil (CPU/RAM) und ihre eigenen Skalierungsregeln haben, sodass du eine komplexe Heroku-Konfiguration mit viel höherer Effizienz nachbilden kannst.

Wie gehe ich bei der Migration mit Umgebungsvariablen um?

Variablen, die zuvor in der Heroku-Benutzeroberfläche „Config Vars“ zu finden waren, können über die Upsun-CLI oder die Konsole verwaltet werden. Service-Anmeldedaten (wie Datenbank-URLs) sollten jedoch niemals fest codiert werden; sie werden automatisch über die in deiner „.upsun/config.yaml“ definierte „relationships“ eingefügt.

Kann ich Buildpacks auf Upsun weiterhin verwenden?

Obwohl Upsun aus Gründen der Performance und Übersichtlichkeit explizite Laufzeitdefinitionen bevorzugt, ist die Plattform so konzipiert, dass sie mit der Standard-Containerisierungslogik umgehen kann. Die meisten Teams stellen fest, dass die Umstellung auf explizite „hooks“ in der „.upsun/config.yaml“ die Build-Zeiten erheblich verkürzt und „magische“ Fehler deutlich reduziert.

Bleiben Sie auf dem Laufenden

Abonnieren Sie unseren monatlichen Newsletter.

Ihr größtes Werk
steht vor der Tür

Kostenloser Test