Der cloudtec Plattform Stack als Basis für Online-Plattformen und Portale: Erfahren Sie mehr über den Aufbau, die Eigenschaften und Einsatzmöglichkeiten.
Im letzten Monat haben wir die Eigenschaften, Einsatzmöglichkeiten und Vorteile von Software Stacks vorgestellt. Diesen Monat möchten wir genauer auf unseren Plattform Stack eingehen und erklären, wie er sich entwickelt hat und wieso wir uns für diesen entschieden haben.
Wir bei cloudtec setzen auf etablierte Open-Source-Software und Technologie-Komponenten, welche in unserem Stack verwendet werden. Damit haben wir einen Stack, der auf langfristigen Betrieb ausgelegt und zukunftssicher ist, jedoch auch flexibel genug bleibt, um Anpassungen und Wechsel von einzelnen Komponenten vorzunehmen.
Wie der cloudtec Plattform Stack entstanden ist (und welche Fehler wir dabei gemacht haben)
Wie in jedem Business muss auch bei uns ein Projekt im Spannungsdreieck von Zeit, Qualität und Budget durchgeführt werden. Auf der Suche nach Verbesserungspotenzialen sind wir auf die Idee gekommen, neue Projekte auf der immer gleichen Software und Infrastruktur Basis aufzubauen. Damit wollten wir den Initial-Aufwand reduzieren, da die Projekte nicht immer von Grund auf neu aufgebaut werden müssen.
Doch aller Anfang ist schwer - unser erster Versuch einen Plattform Stack aufzubauen ist leider gescheitert. Neue Entwicklungen konnten nicht zurück in den Stack gespielt werden. So konnte dieser nur bedingt weiterentwickelt werden und das Projekt Setup konnte nicht effizienter gestaltet werden. Aus diesem Grund haben wir Branching und Sub-Tree-Splits eingeführt.
Zudem verwendeten wir zu Beginn viele verschiedene Templates und hatten dadurch mehr Aufwand in der Verwaltung und Gestaltung der Projekte. Mit dem Entscheid für eine fixe Template Library konnten wir unsere Entwicklungen und Designs vereinheitlichen. Gleichzeitig behalten wir die Flexibilität bei, die Templates an das jeweilige Corporate Design und die individuellen Wünsche unserer Kunden anzupassen. Im Laufe der Entwicklung unseres eigenen Plattform Stacks haben wir uns zudem entschieden, die Applikationssprache von Deutsch zu Englisch zu wechseln.
Auch der gesamte Deployment-Prozess konnte kontinuierlich verbessert und vereinheitlicht werden. So konnten wir eine maximale Downtime der Systeme von etwa 20 Sekunden während eines Deployments erreichen. Im Bereich Infrastruktur konnten wir weitere Schritte vornehmen. Die Server und Datenbank Konfiguration sowie das File System Management werden laufend überarbeitet und verbessert. Da unser Stack vom Software-Layer über den Plattform-Layer bis zum Infrastruktur-Layer durchgehend ist, haben wir den Vorteil, dass die Installation vereinfacht und zu einem beachtlichen Teil standardisiert wird. Dies reduziert gleichzeitig die Komplexität von Plattformen und vereinfacht auch die Verwaltung.
Der Aufbau und die einzelnen Komponenten des cloudtec Plattform Stacks
Bei der Auswahl der Technologien, Frameworks, Modellen und Programmiersprachen unseres Stacks verfolgen wir einen zentralen Hauptansatz: Wir setzen auf Open Source Technologien. Open-Source-Software und Technologien bieten viele Vorteile, unter anderem sind sie kostengünstig, werden kontinuierlich weiterentwickelt, weisen eine hohe Qualität auf und können umfangreich individualisiert werden.
Unser Plattform Stack ist in drei Bereiche, oder auch Layers, aufgeteilt:
- Der Infrastruktur-Layer stellt die technische Basis bereit, auf der unsere Entwicklungen laufen.
- Der Plattform-Layer stellt die Frameworks zur Verfügung, welche für die Entwicklung einer Applikation verwendet werden.
- Der Software-Layer repräsentiert die Individualisierung je Kunde. Hier wird das Design angepasst und weitere Elemente und Funktionen entwickelt.
Der Infrastruktur-Layer
Die Grundlage unseres gesamten Stacks stellt der Infrastruktur-Layer bereit. Ohne ihn kann keine Business-Applikation betrieben werden. Hier können unzählige Technologien gewählt werden.
Wir haben uns für eine einheitliche Entwicklungsumgebung mit Docker entschieden. Die Entwicklungsumgebung muss dadurch nicht mehr pro Projekt unterschiedlich eingerichtet werden (unterschiedliche PHP-Versionen, Betriebssysteme etc.). So sind wir in der Lage, lokal ein 1:1 Abbild der Produktivumgebung mit allen Konfigurationen und Elemente zu erstellen. Dies macht das Setup und die Entwicklung der Systeme enorm effizient.
Docker ist eine Plattform für die Entwicklung, Bereitstellung und Ausführung von Anwendungen. Docker ermöglicht es, die Applikationen von der Infrastruktur zu trennen, sodass Software schnell bereitgestellt werden kann. Mit Docker wird das Betriebssystem “containerisiert” und abstrahiert. Damit stellen wir beispielsweise auch Hilfs Services wie etwa einen Virenscanner und PDF-Indexierung bereit. Diese kommunizieren lokal mit den Projekt-Containern.
Nebst Docker setzen wir Portainer ein. Portainer ist ein Container Management Tool. Es ermöglicht die betriebenen Container zentral zu verwalten, konfigurieren, orchestrieren und abzusichern. Zudem bietet es ein simples User-Interface.
Das Hosting, die Container und das virtuelle Datencenter - also alle Daten der Projekte - sind in der Hoheit von cloudtec. Wir managen die Server, die Versionierung sowie die Zusammenarbeit. Kundendaten sind isoliert und segmentiert in einem eigenen Container, die Daten können nicht vermischt werden.
Zwei weitere Bestandteile des Infrastruktur-Layers sind Security und DevOps. Mithilfe von DevOps haben wir einen Grossteil unserer Deployment-Prozesse automatisiert, was zu einer Effizienzsteigerung geführt hat. Im Bereich Security stellen wir die Sicherheit unserer Systeme und Applikation unter anderem mithilfe von Web Application Firewalls und Routing, sowie automatisierten Checks im Build-Prozess sicher.
Der Plattform-Layer
Die beiden Frameworks Symfony und Sylius bilden die Basis des Plattform Stacks. Sie bauen auf der Programmiersprache PHP auf und sind beliebig erweiterbar. Das Symfony Framework stellt wiederverwendbare PHP-Komponenten bereit und dient zur Erstellung von Webanwendungen, APIs, Microservices und Webdiensten.
Symfony hat uns gegenüber den Alternativen (wie etwa Laravel oder Drupal) überzeugt, da es keine weiteren Features und Funktionen wie etwa ein CMS gibt. Sylius baut auf Symfony auf und ist ein E-Commerce Framework. Es stellt alle Funktionen und APIs bereit, die für den erfolgreichen Betrieb eines Webshops benötigt werden.
Auf dieser Basis (Symfony und Sylius) haben wir unseren Plattform Stack mit weiteren Modulen und Funktionalitäten ergänzt, die eine Online-Plattform normalerweise benötigt. So etwa verschiedene Grid Mechanismen, Filter, eine Benutzerverwaltung und die zugrundeliegende Funktion zum Ablauf von Messagings. Zudem wird unser Plattform Stack von RabbitMQ ergänzt, damit wird die transaktionssichere Anbindung von Schnittstellen gewährleistet.
Der Software-Layer
Der Software-Layer repräsentiert die individuelle Entwicklung pro Kunde. Hier wird der Plattform Stack mit der Individualentwicklung zusammengeführt. Der Stack wird entsprechend den Anforderungen der Kunden erweitert und angepasst. Der Individualisierungsgrad unserer Software ist praktisch unendlich. Einzig die Kosten/Nutzen Frage stellt sich: Ist der Nutzen nicht gross genug um die daraus entstehenden Aufwände zu rechtfertigen, lohnt sich die extra Meile nicht. Von der technologischen Seite gibt es jedoch sehr wenige Einschränkungen in der Machbarkeit.
Warum wir uns für einen Plattform Stack entschieden haben
Wie unser Blogpost im Juni gezeigt hat, gibt es viele Gründe, wieso die Verwendung eines Plattform Stacks Vorteile mit sich bringt. Wir haben die Erarbeitung unseres Stacks noch einmal Revue passieren lassen und konnten folgende Vorteile und Gründe identifizieren:
- Viele Business-Applikationen haben ähnliche Anforderungen, verwenden also oftmals, Listviews, eine Benutzerverwaltung und unterschiedliche Workflows
- Der Aufwand für die Entwickler wird enorm verkleinert
- Weniger Aufwand für die Einarbeitung in ein bestehendes Projekt, da alle gleich aufgebaut sind
- Weniger Aufwand zur Erstellung eines neuen Projektes
- Ein Stack hilft die Code-Qualität zu verbessern
- Die Wiederverwendbarkeit von Funktionen kann erhöht werden
- Eine umfangreiche Testabdeckung auf Basiskomponenten wird ermöglicht
- Das technische Risiko wird minimiert
Suchen Sie einen Partner, der Ihnen eine Plattform auf einer soliden Basis aufbaut?
Wir sind der richtige Partner für Sie! Mit unserem cloudtec Plattform Stack können wir Ihr Projekt auf einer stabilen Basis beginnen, welche nicht erst für Ihr Projekt erarbeitet werden muss. Somit konzentrieren wir uns von Anfang an voll und ganz auf Ihre individuellen Wünsche und Herausforderungen. Wir sind somit effizienter und Sie erhalten ein qualitativ hochstehendes Produkt für Ihr Budget.
Haben Sie Interesse an einer neuen Online-Plattform oder einem Kundenportal? Dann nutzen Sie unser Kontaktformular und erläutern Sie uns Ihr Projekt. Wir entwerfen auf Basis unseres Plattform Stacks eine flexible Lösung für Sie.