- Funktionen
- Pricing

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.
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:
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:
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.
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:
Das Ziel war es, diese einzelne Anwendung in mehrere miteinander verbundene Anwendungen umzuwandeln:
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.
Die Umstellung erfordert eine Neuorganisation Ihrer Ordnerstruktur. Anstelle einer einzelnen Anwendung mit einem Konfigurationsordner „.upsun” erstellen Sie Folgendes:
.upsun“, der die Hauptkonfiguration enthältInstallieren 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.
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: 7Hier 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:
public/index.php).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.Wenn Ihre Konfigurations- und Programmieränderungen fertig sind:
symfony push stellt Ihre Branch-Umgebung bereit./admin./site.Testen Sie jede Route. Wenn Sie zufrieden sind, führen Sie symfony merge aus. Upsun fördert den Übergang von der Entwicklung zur Produktion.
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:
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.
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.
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.
Während der Entwicklung der Multi-Anwendungs-Website Bigfoot traten mehrere Herausforderungen auf:
.environment“ bietet die erforderliche Flexibilität für verschiedene Bereitstellungsszenarien.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:
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.
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.
Join our monthly newsletter
Compliant and validated