Die cloudtec Cloud Architektur mit Docker und Portainer. Die Entstehung einer privaten Cloud basierend auf etablierten Open-Source Technologien.
Im Juli haben wir unseren Software-Stack vorgestellt. Dieser teilt sich in drei Layers: Infrastruktur, Plattform und Software. Im heutigen Beitrag möchten wir genauer auf den Infrastruktur-Layer und unsere Cloud Architektur, also die technische Basis auf der all unsere Applikationen laufen, eingehen.
Unsere Infrastruktur baut auf den Konzepten der Cloud, also der Virtualisierung, auf. Bei der Virtualisierung werden Ressourcen zusammengezogen und in einem Netzwerk gemeinsam genutzt. Dabei setzen wir auf den LEMP-Stack (Linux, nginx, MariaDB und PHP) zusammen mit ergänzenden Softwares und Services aus anderen Plattformen (z.B. Java). Um volle Flexibilität und Kontrolle über unsere Lösungen zu haben, setzen wir auf eine Private Cloud und Docker zur Containerisierung unserer Applikationen. Wie unsere Infrastruktur aufgebaut ist und aus welchen Bestandteilen sie zusammengesetzt ist, erklären wir in den nachfolgenden Absätzen.
Web Application Firewall, Hosting, Virtual Data Center und virtuelle Maschinen
Um unsere Prozesse möglichst schlank und einfach zu behalten, haben wir das physische Server-Hosting ausgelagert an einen Partner in der Schweiz. Auf dessen Servern läuft unser Virtual Data Center (VDC). Durch den Einsatz von mehreren Virtuellen Maschinen (VM) sind wir flexibel in der Anpassung der benötigten Leistung (RAM, Prozessor, Hard Disks, etc.).
Die Basis unseres VDC bildet OpenNebula. OpenNebula ist eine Open Source Cloud Computing Platform. Innerhalb von OpenNebula laufen unterschiedliche VMs. Unsere VMs basieren vorwiegend auf dem Betriebssystem Linux, sind durch ein virtuelles LAN miteinander verbunden und bilden gemeinsam einen Docker Swarm.
Die Sicherheit unserer Applikationen und damit auch unserer Infrastruktur stellen wir in erster Linie mit einer Web Application Firewall sicher. Sie kontrolliert alle Anfragen an das System auf ihre Richtigkeit und gleicht sie dabei mit den definierten Richtlinien ab.
Wurde eine Anfrage als sicher eingestuft, so kommt das Routing zum Zuge und die Anfrage wird entweder direkt zur gewünschten Applikation, oder zum Beispiel an eine oder mehrere Instanzen von traefik weitergeleitet. Traefik ist ein Open-Source-Edge-Router, der eine Anfrage mit dem (oder den) dafür zuständigen Container(n) verbindet, und der auch fortgeschrittene Konfigurationen, die für Anforderungen wie z.B. Replikation oder Hochverfügbarkeit benötigt werden, ermöglicht.
Virtualisierung mit Hilfe von Docker
Für die Virtualisierung unserer Projekte setzen wir Docker ein. Docker ist eine Plattform für die Entwicklung, Bereitstellung und Ausführung von Anwendungen. Sie basiert auf Linux-Techniken, kann auf unterschiedliche Betriebssysteme installiert werden und passt daher sehr gut in unsere Entwicklungsumgebung. Docker ermöglicht es, die Applikationen von der Infrastruktur zu trennen, sodass Software schnell bereitgestellt oder transportiert werden kann und gewährleistet eine identische Verarbeitung auf allen Plattformen und Umgebungen. Mit Docker wird das Betriebssystem “containerisiert” und abstrahiert.
Solch ein Container besteht aus einem oder einer Gruppe von Softwareprozessen, zum Beispiel dem Webserver, der Datenbank sowie der Applikations-Programmiersprache. Er wird mithilfe einer “Image” Datei bereitgestellt, welche man sich ähnlich vorstellen kann wie eine CD-ROM. Im Fall von cloudtec sind dies vorwiegend nginx als Webserver, MariaDB als Datenbank und PHP als Programmiersprache. Dieser Container stellt alle nötigen ausführbaren Dateien bereit, mit deren Hilfe eine Applikation betrieben wird.
Damit die unterschiedlichen Kundenprojekte sicher voneinander getrennt sind, hat in unserer Infrastruktur jedes Projekt zumindest einen eigenen Container. So sind die Kundendaten isoliert und segmentiert und können nicht mit anderen Daten vermischt werden. Zudem haben so alle oben genannten Softwareteile ausschliesslich Zugriff auf ihre eigene Applikation. Mithilfe der Containerisierung und virtueller Netzwerke stellen wir neben den Projekten beispielsweise auch Hilfs-Services wie etwa einen Virenscanner und PDF-Indexierung bereit. Diese kommunizieren lokal mit den jeweiligen Projekt-Containern. Die Sichtbarkeit und Gruppierung der Applikationen und Dienste untereinander wird ebenfalls durch die besagten virtuellen Netzwerke geregelt.
Für die Orchestrierung der Zuteilung der Container zu den Hosts setzen wir Docker Swarm ein. Mit Docker Swarm wird bei einem Ausfall eines Hosts ein Container automatisch einem neuen Host zugeteilt und neu gestartet. So kann die hohe Verfügbarkeit von Applikationen sichergestellt werden.
Zum Management der Container und des Docker Swarms setzen wir Portainer ein. Portainer ist ein Container Management Tool und ermöglicht es, die betriebenen Container zentral zu verwalten, konfigurieren, orchestrieren und abzusichern. Zudem bietet es ein simples User-Interface, welches die Arbeit der Anwender zusätzlich vereinfacht.
Vorteile einer privaten Cloud und der cloudtec Cloud Architektur
Natürlich gibt es unterschiedliche Anbieter und Lösungen von Cloud Architekturen mit entsprechenden Vor- und Nachteilen. Grosse Anbieter wie Amazon Web Services AWS oder Microsoft Azure bieten fix fertige Lösungen an. Im Gegensatz dazu haben wir die volle Kontrolle über unsere Architektur und können schnell und einfach Anpassungen vornehmen, falls nötig. Weiter sind wir nicht den Release-Zyklen und Policy-Änderungen ausgeliefert, die die Grosskonzerne einem aufzwingen. Wir können dadurch selbst bestimmen, wann was aktualisiert wird.
Mit unserer eigenen privaten Cloud und dem IaaS-Konzept sind wir unabhängig von der lokalen IT und erzielen maximale Flexibilität. Durch die Containerisierung können wir laufend neue Services für alle unsere Projekte zur Verfügung stellen. Docker Swarm hilft uns, die Verfügbarkeit unserer Applikationen zu gewährleisten und vereinfacht den Betrieb einer redundanten Infrastruktur.
Generell (ausserhalb der cloudtec Bubble) kann gesagt werden, dass eine private Cloud folgende Vorteile bietet:
- Daten sind an jedem Punkt im Unternehmensnetzwerk verfügbar
- volle Kontrolle über die Zugangsrechte
- hoher Sicherheitsstandard inklusive Verschlüsselung
- Trennung von Ressourcen und Speicherort
- hohe Bandbreite durch exklusiven Zugriff
- Ressourcen sind flexibel und skalierbar
Suchen Sie einen Partner, für das Hosting Ihrer Online-Plattform?
Wir sind der richtige Partner für Sie! Mit unserer eigenen cloudtec Cloud Architektur können wir Ihnen eine Architektur bieten, welche auf realen Erfahrungswerten basiert, stetig weiterentwickelt wird und an Ihre individuellen Bedürfnisse angepasst werden kann. Neben unserem eigenen Datencenter bieten wir auch remote gemanagte Lösungen bei Ihnen in Ihrem Datencenter an. Somit konzentrieren wir uns von Anfang an voll und ganz auf Ihre Wünsche und Herausforderungen. Wir sind somit effizienter und Sie erhalten ein qualitativ hochstehendes Produkt für Ihr Budget.
Haben Sie Interesse an einer Cloud Architektur? Dann nutzen Sie unser Kontaktformular und erläutern Sie uns Ihr Projekt. Wir entwerfen auf Basis unserer Cloud Architektur eine flexible Lösung für Sie.