Zum Inhalt springen
Sprache
DE EN FR
Projekt starten

Der cloudtec Plattform-Stack

Jede Plattform, die wir bauen, startet auf derselben Basis. Woraus dieser Stack besteht, wie er entstanden ist und welche Umwege wir dabei genommen haben.

Im Beitrag Stack als Basis für Online-Plattformen und Portale ging es darum, was ein Software-Stack allgemein leistet. Hier wird es konkret: unser eigener Stack, seine Bestandteile und die Gründe für den Aufbau.

Die Bausteine sind durchgehend etablierte Open-Source-Komponenten. Das ergibt eine Basis, die auf langen Betrieb ausgelegt ist und trotzdem flexibel bleibt: einzelne Teile lassen sich austauschen, ohne dass alles daran hängt.

Wie der Stack entstanden ist und was zuerst schiefging

Auch bei uns läuft jedes Projekt im Spannungsdreieck aus Zeit, Qualität und Budget. Die Idee, neue Projekte immer auf derselben Software- und Infrastruktur-Basis zu starten, kam aus der simplen Beobachtung, dass wir denselben Unterbau immer wieder neu bauten.

Isometrische Darstellung des cloudtec Stacks: vier gestapelte, farbige Ebenen (Security, Software, Platform und Infrastructure) über einer weissen Grundplatte mit den Merkmalen reliable, extensible und secure.
Der Stack in Ebenen: jede baut auf der darunterliegenden auf.

Der erste Anlauf scheiterte trotzdem. Neue Entwicklungen liessen sich nicht in den Stack zurückspielen, er konnte also nicht mit den Projekten mitwachsen und das Setup wurde kein Stück schneller. Die Lösung waren Branching und Sub-Tree-Splits: Verbesserungen aus einem Projekt landen seither wieder in der gemeinsamen Basis.

Ein zweiter Umweg waren die Templates. Zu Beginn nutzten wir viele verschiedene, was Verwaltung und Gestaltung unnötig aufwendig machte. Mit dem Entscheid für eine feste Template-Library wurden Entwicklung und Design einheitlich. Anpassen an Corporate Design und Kundenwünsche lässt sich weiterhin alles. Gleichzeitig haben wir die Applikationssprache von Deutsch auf Englisch umgestellt.

Auch der Deployment-Prozess wurde Schritt für Schritt vereinheitlicht. Die Ausfallzeit während eines Deployments liegt seither bei höchstens rund 20 Sekunden. Server- und Datenbankkonfiguration sowie das File-System-Management überarbeiten wir laufend. Weil der Stack von der Infrastruktur bis zur Software durchgeht, ist die Installation zu einem grossen Teil standardisiert. Das senkt die Komplexität einer Plattform und vereinfacht ihren Betrieb.

Die Ebenen des Stacks

Bei der Auswahl von Technologien, Frameworks und Sprachen gilt ein Grundsatz: Open Source. Solche Komponenten werden laufend weiterentwickelt, lassen sich tief anpassen und binden uns nicht an einen Hersteller.

Der Stack ist in vier Ebenen aufgeteilt:

  • Der Infrastruktur-Layer stellt die technische Basis bereit, auf der alles läuft.
  • Der Plattform-Layer liefert die Frameworks und die wiederkehrenden Funktionen einer Online-Plattform.
  • Der Software-Layer ist die Individualentwicklung je Kunde.
  • Der Security-Layer legt sich mit Monitoring, Fehlererkennung und ausgelagerten Backups über die anderen drei.

Der Infrastruktur-Layer

Ohne ihn läuft keine Applikation. Wir haben uns für eine einheitliche Umgebung mit Docker entschieden: Sie muss nicht mehr pro Projekt eingerichtet werden, mit je eigener PHP-Version und eigenem Betriebssystem. Lokal entsteht ein Abbild der Produktivumgebung mit denselben Konfigurationen. Das macht Einrichtung und Entwicklung schnell und die Fehlersuche berechenbar.

Docker trennt die Applikation von der Infrastruktur. Das Betriebssystem wird containerisiert und abstrahiert. So stellen wir auch Hilfsdienste wie Virenscanner und PDF-Indexierung bereit, die lokal mit den Projekt-Containern sprechen.

Isometrische Ebene «Infrastructure»: Docker Swarm in hochverfügbarer Konfiguration, Portainer als Docker-Orchestrierung und ein software-definiertes, dreifach redundantes Virtual Data Center, dazu Beschriftungen zu DevOps-Automation, VPN-Verbindungen und Skalierbarkeit.
Infrastruktur-Layer

Dazu kommt Portainer als Container-Management: Container zentral verwalten, konfigurieren, orchestrieren und absichern, mit einer Weboberfläche für den Alltag.

Hosting, Container und virtuelles Rechenzentrum (und damit sämtliche Projektdaten) bleiben bei uns. Wir betreiben die Server und verantworten die Versionierung. Kundendaten liegen isoliert in einem eigenen Container und können sich nicht vermischen.

Zwei weitere Bestandteile dieser Ebene sind Security und DevOps. Über DevOps ist ein Grossteil der Deployment-Prozesse automatisiert. Auf der Sicherheitsseite stehen Firewall und Web Application Firewall, Netzwerksegmentierung sowie automatisierte Prüfungen im Build-Prozess.

Der Plattform-Layer

Die Basis bilden Symfony und Sylius, beide auf PHP und beliebig erweiterbar. Symfony stellt wiederverwendbare Komponenten für Webanwendungen, APIs und Microservices bereit.

Isometrische Ebene «Platform»: Queues, Workflows und Messages über dem Symfony-Framework, ergänzt durch E-Commerce-Framework, E-Commerce-Konnektoren, API Platform und einen Integration Layer.
Plattform-Layer

Für Symfony haben wir uns entschieden, weil es genau das nicht mitbringt, was andere Frameworks aufdrängen, ein fertiges CMS zum Beispiel. Sylius setzt darauf auf und liefert die Funktionen und APIs für den Betrieb eines Webshops.

Auf dieser Basis haben wir ergänzt, was eine Online-Plattform üblicherweise braucht: Grid-Mechanismen, Filter, Benutzerverwaltung und den Unterbau für Messaging. RabbitMQ kommt dazu, damit Schnittstellen transaktionssicher angebunden werden können, und API Platform für REST- und GraphQL-Endpunkte.

Der Software-Layer

Hier trifft der Stack auf die Individualentwicklung. Er wird nach den Anforderungen des Projekts erweitert und angepasst: Oberfläche, kundenspezifische Module, Rollen und Zugriffe.

Isometrische Ebene «Software»: Application Core mit Kernfunktionen und Modulen, kundenspezifische Features und Module, dazu Custom Interface Design und Access Management mit sicheren Logins.
Software-Layer

Technisch sind die Grenzen weit; die Frage ist meist eine andere. Rechtfertigt der Nutzen einer Sonderlösung ihren Aufwand, im Bau und in jedem späteren Update? Wenn nicht, ist die Standardvariante die bessere Antwort.

Was der Stack uns bringt

  • Viele Geschäftsapplikationen haben ähnliche Anforderungen: Listen, Filter, Benutzerverwaltung, Workflows.
  • Ein neues Projekt startet nicht bei null.
  • Wer in ein bestehendes Projekt einsteigt, kennt den Aufbau bereits.
  • Wiederkehrende Funktionen sind einmal gebaut und mehrfach im Einsatz.
  • Die Basiskomponenten sind umfassend getestet, das kommt jedem Projekt zugute.
  • Weniger Eigenbau heisst weniger technisches Risiko.

Der Stack ist kein fertiges Produkt, sondern wächst mit jedem Projekt weiter. Was sich einmal bewährt hat, steht beim nächsten Mal allen zur Verfügung.

Geschrieben von Kevin Jüni CTO / Senior Fullstack Software Developer

Tech 4 Minuten Lesezeit