• Formerly Platform.sh
  • Contact us
  • Documentation
  • Login
Watch a demoFree trial
Blog
Blog
BlogProduktFallstudienNachrichtenInsights
Blog

Umwandlung von Symfony Monolith in Multi-Apps: eine Schritt-für-Schritt-Anleitung

SymfonySymfonyConMulti-AppMigrationPaaSBereitstellungRessourcenzuweisung
18 Dezember 2025
Teilen Sie
Diese Seite wurde von unseren Experten auf Englisch verfasst und mithilfe einer KI übersetzt, um Ihnen einen schnellen Zugriff zu ermöglichen! Die Originalversion finden Sie hier.

Dieser Blogbeitrag basiert auf einem Vortrag von Florent Huck, Developer Advocate bei Upsun, auf der SymfonyCon 2023. Wir haben KI-Tools für die Transkription und zur Verbesserung der Struktur und Verständlichkeit des Inhalts verwendet.

Der Weg von einer einzigen monolithischen Anwendung zu einer Multi-Anwendungs-Architektur muss nicht abschreckend sein. Auf einer kürzlich stattgefundenen Entwicklerkonferenz stellte Florent vom Developer Relations Team von Upsun eine praktische Schritt-für-Schritt-Anleitung vor, wie man mit Upsun einen Monolithen in mehrere Anwendungen umgestalten kann.

Warum von einer App zu vielen wechseln?

Laut den Daten von Upsun sind überwältigende 90 % der auf ihrer Plattform gehosteten Symfony-Anwendungen Monolithen, während nur 10 % zwei oder mehr Anwendungen verwenden. Diese Statistik zeigt, dass Entwickler eine große Chance haben, ihre Architektur zu modernisieren und ihre Anwendungen zu entkoppeln, um eine bessere Skalierbarkeit und Wartbarkeit zu erreichen.

Das Beispielprojekt ist die „Bigfoot”-Workshop-Website. Sie begann als Symfony 6.2-Anwendung auf PHP 8.3 mit PostgreSQL 15 und ohne Admin-Oberfläche. Für den Workshop benötigte das Team dieselbe Website in anderen Sprachen und eine einfache Möglichkeit, Inhalte zu verwalten. Das führte dazu, dass von einer App zu einer Multi-App-Konfiguration gewechselt wurde:

  • Beibehaltung von Symfony als Kernanwendung und Hinzufügen von API Platform zur Bereitstellung von Daten.
  • Hinzufügen eines Administrators unter Verwendung der API Platform Admin-Komponenten.
  • Fügen Sie ein Gatsby-„White Label“-Frontend hinzu, das aus der API liest.
  • Hinzufügen eines Mercure-Servers für Echtzeit-Updates.

Was Upsun für Sie übernimmt

Upsun befindet sich zwischen Ihrem Programm und einem großen Cloud-Anbieter Ihrer Wahl. Sie müssen sich nicht um die Verwaltung von Servern kümmern. Sie programmieren Ihren Code, legen eine einfache YAML-Konfiguration fest und Upsun kümmert sich um das Hosting. Ein neues Projekt erhält die Standardarchitektur aus der Box: CDN, automatische backups, Caches, Suche und eine Datenbank. Selbst die Demo-App enthält PostgreSQL, ohne dass zusätzliche Schritte erforderlich sind. Zertifikate werden für Sie mit automatischer Verlängerung verwaltet, sodass Sie sich nicht um die Verwaltung von TLS-Zertifikaten kümmern müssen.

Wenn Sie sich einen schnellen Überblick über die Funktionsweise von Upsun verschaffen möchten, beginnen Sie hier auf der Upsun-Website.

Vier Befehle zum Leben

Der Bereitstellungsprozess ist unkompliziert. Mit nur vier Befehlen über die Symfony-CLI können Sie Ihre Anwendung zum Laufen bringen:

  1. Erstellen Sie ein Demo-Projekt mit der Upsun-Option
  2. Initialisieren Sie ein bestehendes Symfony-Projekt (das automatisch die erforderlichen Konfigurationsdateien generiert)
  3. Befolgen Sie den Standard-Git-Workflow (hinzufügen, commit)
  4. Erstellen und pushen Sie Ihr Projekt

Von dort aus erhält jeder Git-Zweig seine eigene Live-Umgebung mit einer stabilen URL und einem gültigen Zertifikat. Sie testen in einer Umgebung, die sich wie eine Produktivumgebung verhält. Dank der Arbeit von Fabien Potencier, der die Upsun-CLI-Tools in die Symfony-CLI integriert hat, kann alles über eine einzige Schnittstelle verwaltet werden.

Fallstudie: Die Bigfoot-Website

Um den Refactoring-Prozess zu veranschaulichen, verwendete Florent ein reales Beispiel: die Bigfoot-Website, die ursprünglich für Blackfire-Workshops erstellt wurde. Diese blogähnliche Website über Bigfoot-Sichtungen wurde als Monolith mit folgenden Komponenten erstellt:

  • Symfony 6.2 (aktualisiert für PHP 8.3)
  • PostgreSQL 15
  • Umfangreiche Fixtures
  • Keine Verwaltungsschnittstelle

Das Ziel war es, diese einzelne Anwendung in mehrere miteinander verbundene Anwendungen umzuwandeln:

  • Eine Symfony-Anwendung für die Hauptwebsite von Bigfoot
  • Eine API-Plattform-Admin-Komponente für die Verwaltung von Inhalten
  • Ein Gatsby-Frontend als White-Label-Lösung
  • Ein Mercure-Server für die Echtzeitkommunikation

Schrittweiser Refactoring-Prozess

1. Erstellen Sie eine neue Umgebung

Pushen Sie niemals direkt in der Produktivumgebung. Beginnen Sie mit der Erstellung eines neuen Branches mithilfe der Symfony-CLI, die automatisch sowohl einen lokalen Git-Branch als auch eine entsprechende Umgebung mit denselben Daten wie Ihr vorheriger Branch erstellt.

Upsun generiert automatisch SSL-Zertifikate und verwaltet deren Erneuerung, wodurch die Probleme beseitigt werden, mit denen viele Entwickler bei der manuellen Verwaltung von Zertifikaten konfrontiert sind.

2. Passen Sie die Ordnerstruktur an

Die Umstellung erfordert eine Neuorganisation Ihrer Ordnerstruktur. Anstelle einer einzelnen Anwendung mit einem Konfigurationsordner „.upsun” erstellen Sie Folgendes:

  • Einen Stammordner „.upsun“, der die Hauptkonfiguration enthält
  • Separate Ordner für jede Anwendung, die den jeweiligen Quellcode enthalten
  • Jede Anwendung erhält ihre eigene angepasste Konfiguration

3. API-Plattform zu Symfony hinzufügen

Installieren Sie das API Platform Core Bundle in der Symfony-App. Es stellt eine REST-API aus Ihren Doctrine-Entitäten bereit. Wenn sich eine Entität ändert, spiegeln die REST-Endpunkte diese Änderung wider. Auf diese Weise lesen und schreiben das Gatsby-Frontend und der Admin Inhalte.

4. Konfiguration verwalten 

Upsun verwendet eine einzige YAML-Konfigurationsdatei. Diese Datei enthält drei Hauptabschnitte:

Routenkonfiguration: Jede Anwendung erhält einen eigenen Routing-Block. Sie definieren URL-Muster, z. B. die Verwendung der Standarddomain für die Hauptanwendung, /admin für die Administrationsoberfläche,  /site für das Gatsby-Frontend und Subdomains für Dienste wie Mercure.

Dienstkonfiguration: Das Hinzufügen von Diensten ist ganz einfach. Definieren Sie unter services die Datenspeicher, die jede App benötigt:

  • type: postgresql mit version: 15 für die Datenbank.

 Um beispielsweise Redis hinzuzufügen, geben Sie einfach Folgendes an:

redis:

  type: redis

  version: 7

Hier können Sie kleine Konfigurationsflags hinzufügen (z. B. die maximale Speicherrichtlinie). Upsun wandelt diesen einfachen Block in den richtigen verwalteten Dienst in der von Ihnen gewählten cloud um. Sie müssen keine anbieterspezifischen Setup-Skripte schreiben.

Anwendungskonfiguration: Für jede Anwendung definieren Sie:

  • Laufzeit: Geben Sie Haupt- und Nebenversionen an (z. B. PHP 8.3). Jede Bereitstellung verwendet die neueste Wartungsversion für diese Linie.
  • Quellstammverzeichnis: Der Ordner, in dem sich der Code der App befindet.
  • Beziehungen: Verknüpfen Sie die App mit Diensten (z. B. die Symfony-App mit PostgreSQL).
  • Mounts: Beschreibbare Pfade wie var/ für Cache und Protokolle.
  • Web: Speicherort des Web-Stammverzeichnisses und des Front-Controllers (z. B. public/index.php).
  • Build- und Bereitstellungsschritte: Verwenden Sie „symfony build “ und „symfony deploy“ des Symfony Configurators, um den Cache zu löschen, Migrationen auszuführen und alle erforderlichen benutzerdefinierten Befehle auszuführen. Fügen Sie bei Bedarf Cron-Jobs und Worker hinzu.

Push, Test und Promotion

Wenn Ihre Konfigurations- und Programmieränderungen fertig sind:

  • Pushen Sie Ihren Branch: symfony push stellt Ihre Branch-Umgebung bereit.
  • Upsun druckt ein kleines Diagramm der Apps und Dienste aus, sodass Sie die Beziehungen überprüfen können.
  • Routen werden anhand Ihrer Routing-Regeln generiert, z. B.:
    • Standardwebsite im Stammverzeichnis.
    • Admin unter /admin.
    • Gatsby-Website unter einem Pfad wie /site.
    • Mercure auf einer Subdomain.

Testen Sie jede Route. Wenn Sie zufrieden sind, führen Sie symfony merge aus. Upsun fördert den Übergang von der Entwicklung zur Produktion.

Ressourcenzuweisung: Was ändert sich mit Upsun?

Upsun führt einen resource:set-CLI-Befehl ein, der die Ressourcenzuweisung pro Container ermöglicht. Sie können genau festlegen, wie viel CPU und RAM jeder Container erhält, wodurch die Plattform flexibler und kostengünstiger wird.

Diese detaillierte Steuerung bedeutet, dass Sie:

  • Ressourcen für Entwicklungsumgebungen verkleinern
  • verschiedene Ressourcenkonfigurationen in dedizierten Umgebungen testen
  • Nur für das bezahlen, was Sie in allen Umgebungen bereitstellen

Kontinuierliche Integration

Upsun unterstützt die Integration mit GitHub, GitLab und Bitbucket. Wenn Sie einen neuen Branch erstellen und ihn in Ihr Repository übertragen, stellt Upsun Ihren Quellcode automatisch in einer dedizierten Umgebung bereit und ermöglicht so eine ordnungsgemäße kontinuierliche Integration.

Entwickler müssen jedoch auf die Ressourcennutzung achten, da jede Umgebung zur monatlichen Rechnung beiträgt. Im Gegensatz zu Preview-Umgebungen mit fester Größe kann das flexible Modell von Upsun dazu führen, dass Ihre Feature-Branches die Kosten beeinflussen, wenn sie nicht angemessen verwaltet werden.

Bewährte Verfahren

Häufig bereitstellen, sicher bereitstellen

Das Motto von Upsun lautet „Deploy Friday“ (und sogar „Deploy on Black Friday“). Die Philosophie ist einfach: Wenn Sie Ihre Features in einer produktionsähnlichen Umgebung testen können, können Sie den gesamten erforderlichen Quellcode sicher in Ihren Git-Zweig übertragen.

Dieser Ansatz beseitigt den häufigen Albtraum von Entwicklern: „Ich verstehe nicht, warum die Staging-Umgebung abgestürzt ist; lokal funktioniert es doch.“ Bei einer ordnungsgemäßen Umgebungsparität führen fehlende Dateien zu Fehlern in Ihrer Entwicklungsumgebung, bevor sie die Produktivumgebung erreichen.

Anpassung des Git-Workflows

Die Multi-Anwendungsarchitektur erfordert geringfügige Änderungen an Ihrem Git-Workflow, aber der Kernprozess bleibt vertraut. Der Schlüssel liegt darin, häufig zu deployen und gründlich in Umgebungs-Branches zu testen, bevor Sie in der Produktivumgebung mergen.

Häufige Fallstricke und Lösungen

Während der Entwicklung der Multi-Anwendungs-Website Bigfoot traten mehrere Herausforderungen auf:

  1. Routing-Probleme: Wenn Sie URI-Elemente zur Erkennung von Anwendungen verwenden, müssen Sie das erste URI-Element sowohl im Routennamen als auch in der Pfadkonfiguration angeben.
  2. Umgebungsvariablen: Bei der lokalen Entwicklung wird in der Regel localhost:8000 verwendet, in der Produktivumgebung hingegen dynamische URLs. Die Lösung mit der Datei „.environment“ bietet die erforderliche Flexibilität für verschiedene Bereitstellungsszenarien.
  3. Ressourcenmanagement: Ohne sorgfältige Planung können Entwicklungsumgebungen genauso viele Ressourcen verbrauchen wie die Produktivumgebung, was sich erheblich auf die Kosten auswirkt.

Die Zukunft der Multi-Anwendungsarchitektur

Dieser Ansatz zur Refaktorisierung eröffnet zahlreiche Möglichkeiten für die moderne Webentwicklung. Durch die Aufteilung Ihres Monolithen in spezialisierte Anwendungen profitieren Sie von folgenden Vorteilen:

  • Bessere Trennung der Aufgabenbereiche
  • Verbesserte Skalierbarkeitsoptionen
  • Technologische Diversität (Kombination von Symfony, Gatsby und anderen Frameworks)
  • Verbesserter Workflow des Entwicklungsteams

Das Bigfoot-Projekt hat erfolgreich gezeigt, wie sich ein traditioneller Symfony-Monolith zu einer modernen Multi-Anwendungsarchitektur weiterentwickeln kann, wobei alle Funktionen beibehalten und neue Funktionen wie Echtzeitkommunikation und erweiterte Verwaltungsschnittstellen hinzugefügt werden.

Was bedeutet das für Sie?

Sie müssen sich nicht in ein Labyrinth aus Microservices stürzen. Sie können einen Monolithen in mehrere Apps aufteilen, wo dies sinnvoll ist, z. B. API, Admin, Frontend und Echtzeit. Die einheitliche YAML-Datei, die Managed Services, das automatische HTTPS und die Branch-Umgebungen von Upsun machen diesen Schritt sicher und wiederholbar. Wenn Sie bereit sind, führen Sie die Zusammenführung durch und gehen Sie live. 

Bleiben Sie auf dem Laufenden

Abonnieren Sie unseren monatlichen Newsletter.

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

Kostenloser Test
UpsunFormerly Platform.sh

Join our monthly newsletter

Compliant and validated

ISO/IEC 27001SOC 2 Type 2PCI L1HIPAATX-RAMP
© 2026 Upsun. All rights reserved.