- Funktionen
- Pricing

Dieser Blogbeitrag basiert auf einer Live-Präsentation von Guillaume auf der SymfonyCon 2023 zum Thema „Bereitstellung von Anwendungen mit der Platform-as-a-Service von Upsun”. Wir haben KI-Tools für die Transkription und zur Verbesserung der Struktur und Verständlichkeit des Inhalts verwendet.
Wenn Sie für die Bereitstellung noch immer das File Transfer Protocol (FTP) verwenden, ist dieser Beitrag genau das Richtige für Sie. In einer 35-minütigen Live-Session erläuterte Guillaume, was eine Platform as a Service (PaaS) ist, warum sie hilfreich ist und wie man eine echte App von der lokalen Entwicklung in eine skalierbare, beobachtbare Produktionsumgebung überführt.
Bevor er sich mit modernen Lösungen befasste, stellte Guillaume dem Publikum eine interessante Frage: „Gibt es noch Leute, die mit FTP bereitstellen?“ Die Frage offenbarte eine aufschlussreiche Realität über die aktuelle Bereitstellungslandschaft. Während einige Entwickler zu AWS und anderen cloud-Plattformen gewechselt sind, suchen viele noch immer nach der optimalen Balance zwischen Einfachheit und Leistungsfähigkeit.
Guillaume bringt umfangreiche Erfahrungen in diese Diskussion ein, da er seine Entwicklerkarriere mit PHP 3 und Symfony 1.0 begonnen hat und somit eine einzigartige Perspektive auf die Entwicklung der Bereitstellungspraktiken im Laufe der Jahre hat.
Um praktische Einsatzszenarien zu demonstrieren, erstellen wir eine Chat-Anwendung, die als Wrapper für ChatGPT dient. Die Anwendung besteht aus zwei Hauptkomponenten:
Das Backend: Eine Symfony-API, die Eingaben über REST empfängt, sie an OpenAI's ChatGPT sendet und die Antworten zurück an das Frontend streamt. Das Backend speichert die Konversationen in einer PostgreSQL-Datenbank und implementiert Echtzeit-Streaming mithilfe der StreamResponse-Funktionalität von Symfony.
Das Frontend: Eine mit Create React App erstellte React-Anwendung, die die Benutzeroberfläche und die Echtzeit-Anzeige von Nachrichten verwaltet.
Besonders bemerkenswert ist die Streaming-Implementierung. Anstatt darauf zu warten, dass ChatGPT eine vollständige Antwort generiert (was mehrere Sekunden dauern kann), streamt die Anwendung jeden Textblock, sobald er von OpenAI eintrifft, mithilfe von Server-Sent Events zurück an das Frontend. Dieser Ansatz verbessert die Benutzererfahrung erheblich, da die Antworten sofort nach ihrer Generierung angezeigt werden.
Guillaume hob ein kritisches Skalierbarkeitsproblem bei Streaming-Anwendungen hervor: „Wenn die Generierung der Antwort drei Sekunden dauert, habe ich einen PHP-Worker, der drei Sekunden lang im Hintergrund arbeitet. Wenn 10.000 Benutzer Ihre Anwendung gleichzeitig nutzen, müssen diese 10.000 PHP-Worker laufen.“
Dies führt zu einem Problem bei der Ressourcenzuweisung, da die Worker auf externe API-Antworten warten müssen, obwohl sie keine nennenswerten CPU-Ressourcen verbrauchen. Dies ist eine häufige Herausforderung, mit der viele Entwickler bei der Erstellung von Echtzeitanwendungen konfrontiert sind.
Upsun steht für einen neuen Ansatz für Platform-as-a-Service speziell für Entwickler, die komplexe Anwendungen mit mehreren Technologien und Komponenten erstellen. Die Plattform wurde am Tag von Guillaumes Präsentation gestartet und richtet sich an Entwickler, die mit anspruchsvollen, aus mehreren Komponenten bestehenden Architekturen arbeiten.
Ein interessanter Aspekt von Upsun ist der Fokus auf die Umweltbelastung. Bei der Erstellung eines neuen Projekts können Entwickler aus verschiedenen cloud-Regionen von AWS, Orange, Azure und Google Cloud Platform wählen. Die Plattform bietet CO2-Bilanz-Indikatoren für jede Region, sodass Entwickler umweltfreundlichere Hosting-Optionen wählen können, wenn keine spezifischen Standorte aufgrund von Souveränitätsanforderungen vorgeschrieben sind.
Eine der wichtigsten Innovationen von Upsun ist sein Ansatz zur Konfiguration. Anstelle der komplexen YAML-Konfigurationen, die Kubernetes-Bereitstellungen erschweren (oftmals sind „25 verschiedene YAML-Dateien aus Community-Plugins” erforderlich), verwendet Upsun die Symfony-CLI, um Projektanforderungen zu erkennen und automatisch geeignete Konfigurationen zu generieren.
Der Prozess ist bemerkenswert einfach:
Guillaume fügte dann die zweite App und die Routen hinzu, die den Datenverkehr zwischen api. und dem Haupt-Frontend aufteilen. Konzeptionell sieht das so aus:
# .upsun/config.yaml (illustrative)
routes:
"https://api.{default_domain}/":
to: "app:api"
"https://{default_domain}/":
to: "app:web"
apps:
api:
type: "php:8.3"
build:
flavor: composer:2
extensions: [curl, pdo_pgsql]
relationships:
database: "db:postgresql"
web:
type: "nodejs:20"
build:
commands:
- "bun install"
- "bun run build"
web:
commands:
start: "serve -s build -l 8080"
services:
db:
type: postgresqlBei Projekten mit mehreren Komponenten (wie Guillaumes Chat-Anwendung mit separatem Frontend und Backend) übernimmt Upsun automatisch das Routing. Entwickler können Subdomains definieren (z. B. api und frontend) und die Plattform verwaltet das Traffic-Routing über verschiedene Anwendungscontainer hinweg.
Die Live-Demonstration zeigte den gesamten Bereitstellungsprozess, von der lokalen Entwicklung bis zur Produktion:
symfony project:createSymfony deploy) übernimmt die Erstellung, Containerisierung und BereitstellungDie Plattform führt deterministische Builds durch und stellt so sicher, dass die Bereitstellungen unabhängig von den individuellen Entwicklerumgebungen konsistent sind. Dadurch wird das häufige Problem beseitigt, dass Anwendungen aufgrund von Abweichungen in lokalen PHP-Versionen, Datenbankversionen oder Unterschieden in JavaScript-Tools unterschiedlich funktionieren.
Upsun umfasst eine integrierte blackfire-Profilierung für alle Umgebungen und liefert detaillierte Einblicke in die performance ohne zusätzliche Einrichtung. Diese Integration ergab, dass Guillaumes Streaming-Implementierung 85 % ihrer Zeit mit dem Warten auf ChatGPT-Antworten verbrachte, was die Bedenken hinsichtlich der Ressourcenzuweisung bestätigte.
Im Gegensatz zu herkömmlichen Hosting-Angeboten, die Sie an bestimmte Tarife binden, ermöglicht Upsun eine Echtzeitanpassung der Ressourcen. Über die CLI oder die Weboberfläche können Entwickler die CPU-Zuweisung, Speichergrenzen und Instanzanzahlen spontan ändern.
Guillaume demonstrierte die Skalierung seines Backends von einer auf vier Instanzen in Echtzeit, wobei die Plattform innerhalb von Sekunden automatisch zusätzliche Knoten bereitstellte. Diese Flexibilität erstreckt sich sowohl auf die horizontale Skalierung (Erhöhung der Anzahl der Instanzen) als auch auf die vertikale Skalierung (Zuweisung von mehr Ressourcen pro Instanz).
Die Plattform unterstützt eine benachrichtigungsgesteuerte Skalierung, bei der Überwachungssysteme automatisch Ressourcenanpassungen auslösen können. Wenn blackfire beispielsweise um 4 Uhr morgens eine Verschlechterung der Antwortzeiten bei Checkout-Transaktionen feststellt, kann es automatisch die Ressourcen erhöhen und sie wieder zurückfahren, wenn sich die performance normalisiert.
Upsun verfolgt auch einen ressourcenbasierten Preisansatz. Entwickler zahlen pro CPU-Sekunde und Speicher-Sekunde der tatsächlich genutzten Ressourcen sowie geringe Lizenzgebühren für Benutzer. Laut Guillaume kostet eine einfache Produktionsanwendung (wie ein Blog) etwa 4 US-Dollar pro Monat, während komplexere Setups in der Regel 30 bis 40 US-Dollar pro Monat kosten.
Dieses Modell richtet die Kosten direkt nach der Nutzung aus und vermeidet so das häufige Problem, dass für ungenutzte Kapazitäten bezahlt werden muss oder dass man von Skalierungskosten überrascht wird.
Bereitstellungsstrategien und null Ausfallzeiten
Die Fragen aus dem Publikum enthüllten wichtige Details zum Bereitstellungsansatz von Upsun. Die Plattform verwendet eine Blue-Green-Deployment-Strategie, bei der neue Container-Images im Hintergrund erstellt und die Netzwerkverbindungen im letzten Moment umgeschaltet werden, wodurch Ausfallzeiten minimiert werden.
Für Anwendungen, die Datenbankmigrationen verwenden, bietet die Plattform folgende Vorteile:
Dieser Vorgang führt in der Regel zu einer scheinbaren Latenz von 5 bis 10 Sekunden und nicht zu einer tatsächlichen Ausfallzeit, da die Anfragen in die Queue gestellt und verarbeitet werden, sobald die neue Version live ist.
Während der gesamten Präsentation betonte Guillaume, dass Upsun „von Entwicklern für Entwickler” entwickelt wurde, wobei auch die Bedürfnisse des gesamten Unternehmens berücksichtigt wurden. Die Plattform umfasst Features für die teamübergreifende Zusammenarbeit, sodass Marketingmitarbeiter Pull-Anfragen überprüfen und Projektmanager die Bereitstellungen und den Status der Umgebung überwachen können.
Dieser ganzheitliche Ansatz berücksichtigt die Diversität der Stakeholder, die an der modernen Entwicklung beteiligt sind. Neben dem Engineering-Team sind dies verschiedene andere Stakeholder.
Erstellen Sie die Demo mit Ihrer eigenen API und einem kleinen Frontend neu:
api und den Haupt-Host.Ihr erstes Ziel ist nicht Perfektion. Es ist eine saubere, wiederholbare Pipeline vom Commit bis zur Produktion, die das gesamte Team verstehen kann. Danach stehen Ihnen die Regler zur Verfügung, wenn Sie sie brauchen.
Upsun steht für eine interessante Entwicklung bei den Platform-as-a-Service-Angeboten, die sich auf die Entwicklererfahrung konzentriert und gleichzeitig die für komplexe Anwendungen erforderliche Flexibilität beibehält. Die Kombination aus automatischer Konfiguration, Echtzeit-Skalierung, integrierter Überwachung und nutzungsbasierter Preisgestaltung behebt viele Schwachstellen in der aktuellen Bereitstellungslandschaft.
Wie Guillaume bemerkte: „Wir müssen sicherstellen, dass das Produkt wirklich gut zu Ihnen passt.“ Der Erfolg der Plattform hängt letztendlich davon ab, wie gut sie die realen Anforderungen von Entwicklern erfüllt, die in der heutigen Umgebung mit vielen Komponenten und Technologien anspruchsvolle Anwendungen erstellen.
Für Entwickler, die es leid sind, sich mit komplexen Bereitstellungskonfigurationen herumzuschlagen oder an unflexible Hosting-Pläne gebunden zu sein, bietet Upsun eine überzeugende Alternative, die den Weg vom Programmieren zur Produktivumgebung vereinfacht und gleichzeitig die Kontrolle und Beobachtbarkeit gewährleistet, die moderne Anwendungen erfordern.
Join our monthly newsletter
Compliant and validated