Bei unserem letzten Magento Stammtisch Aachen hatten wir das Glück, Robert Douglass, VP of Customer Success bei platform.sh, als Teilnehmer begrüßen zu können. platform.sh erstellte die Technologie hinter Magento Enterprise Cloud Edition, die während der Magento Imagine 2016 vorgestellt wurde. Dort habe ich auch Robert kennengelernt.
Beim Stammtisch erklärte Robert die Magento Enterprise Cloud Edition en détail.

Überblick der Technologie

Magento Enterprise Cloud Edition ist ein Paket mehrerer Technologien:

Magento Enterprise Cloud Edition Technologie Stack

Magento Enterprise Cloud Edition Technologie Stack (Bildquelle: www.magento.com)

Die zentralen Bestandteile sind Magento 2 Enterprise Edition, bereitgestellt von Magento Inc., und die Plattform von platform.sh, die auch verantwortlich für das Hosting bei Cloud-Services sind.

Die sogennannte „Plattform“ ist eine Web-Oberfläche (gebaut mit Python), die genutzt wird, um Instanzen, die Konfiguration etc. zu verwalten. Zum Beispiel kann man ein neues Projekt auf der Plattform erstellen, das wenige Minuten später im Web verfügbar ist. Der Quellcode der Projekte befindet sich in git Repositories.

Developer-Unterstützung

Die Plattform macht das Leben für Entwickler leichter. Sie brauchen zwar weiterhin eine lokale IDE und einen Webserver (z. B. Apache/NGINX und PHP), aber die Plattform kümmert sich um viel mehr:

  • Bereitstellen zusätzlicherer Services wie Redis, Solr, ElasticSearch und sogar MySQL – Entwickler müssen nicht mehr alles auf ihren Entwicklungsmaschinen installieren, sondern können alle Services in der Cloud über einen Tunnel erreichen. Diese Tunnel werden automatisch bei der Installation des Projekts erstellt. Wenn ein Entwickler diese Services lieber lokal installieren möchte, ist auch das möglich.
  • Es gibt eine Magento-Instanz für jeden git Branch, die automatisch in der Cloud erstellt wird. Die Instanzen können für Integrations-, Testing- oder Vorschau-Zwecke genutzt werden und sind innerhalb weniger Minuten nach dem Push zum git Branch verfügbar.
platform.sh Management Oberfläche

platform.sh Management Oberfläche

  • Datenbanken werden von oben nach unten verteilt: Die Instanzen werden hierarchisch verwaltet, sodass eine neue Instanz eine Kopie der übergeordneten Datenbank erhält, wobei die Einstellungen an den Anwendungszweck angepasst sind. Auch das passiert automatisch.
  • Das bedeutet, dass alle Datenänderungen im Code sein sollten. Es gibt kein Ausrollen der Stanging-Instanz zur Live-Instanz auf Datenbankenebene. Zum Beispiel sollten Entwickler, die neue CMS-Seiten anlegen oder die Konfigurationseinstellungen ändern, dies über Setup Skripte machen (was sowieso empfehlenswert ist).
  • Spezielle Einstellungen können pro Instanz über die Web-Oberfläche gesetzt werden (z. B. unterschiedliche Schlüssel für Zahlungsarten in Live- und Vorschauinstanzen). Es gibt auch eine Rechteverwaltung, über die der Zugang zu bestimmten Informationen, die nicht für alle Entwickler zugänglich sein sollen, eingeschränkt werden kann.
  • Bei Interesse kann man ein Beispiel-Repository der Cloud Edition auf GitHub anschauen.
  • Die grundlegende Konfiguration jedes Projekts basiert auf einer YAML-Datei – siehe .magento.app.yaml Datei auf GitHub. Services und ihre Versionen können dort ebenso definiert werden wie Verzeichnisrechte.

Das folgende Video demonstriert die Kommnadozeilenoberfläche, welche Entwicklern zur Verfügung steht:

Weitere (offizielle) Videos:

PermissionsBranchingVariablen

Hosting, Performance und Skalierbarkeit

Derzeit wird Magento Enterprise Cloud Edition auf Amazon Cloud Services gehostet. Entwickler brauchen kein Wissen über die zu Grunde liegenden Services, da all das von platform.sh verwaltet und unterstützt wird.

Die Architektur zeigt deutliche Unterschiede gegenüber einem traditionellen Aufbau:

Magento Enterprise Cloud Edition: Plattformarchitektur

Magento Enterprise Cloud Edition: Plattformarchitektur

Ein paar Notizen dazu:

  • Jeder kritische Service ist mindestens dreifach redundant vorhanden, was nötig ist, um das System im Betrieb skalieren zu können und gleichzeitig potenzielle Ausfälle abzufangen.
  • Horizontales Skalieren ist möglich, weitere Anwendungsserver können während des Betriebs hinzugefügt werden.
  • Die Datenbank wird von einem Galera Database Cluster zur Verfügung gestellt, welcher exakt 3 MariaDB-Instanzen nutzt. Diese drei Instanzen sind für die vertikale Skalierung notwendig. Jede davon kann mehr als 100 CPUs und Hauptspeicher im TeraByte-Bereich nutzen, was auch für sehr große Shops ausreichen sollte. Bezüglich der Datenintegrität im Fall eines Fehlers einer einzelnen Datenbank: der Galera Database Cluster sorgt dafür, dass Daten in alle drei Instanzen geschrieben werden, bevor die Erfolgsmeldung an die Anwendung ausgegeben wird.
  • Die CDN-Ebene nutzt Fastly und ein Modul der deutschen Magento-Agentur Phoenix Media. Das ersetzt Varnish größtenteils, was heutzutage in vielen Magento-Shops genutzt wird.

Ausblick

Da die Magento 2 Enterprise Cloud Edition erst vor weniger als einem halben Jahr angekündigt wurde, wird der Service gerade erst hochgefahren. Es gibt bereits mehrere Magento-Shops, die die Cloud Edition nutzen, viele weitere Starts werden in den nächsten Monaten erwartet. platform.sh arbeitet eng mit Magento Inc. zusammen, um die Integration zu verbessern – es wird einige Code-Änderungen in zukünftigen Magento-2-Versionen geben, die von platform.sh. gemacht wurden. Wir hoffen, dass es in Zukunft auch eine Version geben wird, die nicht so strikt auf Magento 2 Enterprise begrenzt sein wird.

Persönliche Eindrücke

platform.sh hat eine hilfreiche Ergänzung für Magento geschaffen. Beide Technologien scheinen gut miteinander zu kooperieren, und die anderen integrierten Technologien (z. B. New Relic und blackfire.io) tragen gut dazu bei, eine professionelle All-in-one-Lösung bereitzustellen. Als Entwickler werde ich von einigen Schmerzpunkten befreit, die es beim Erstellen von E-Commerce-Lösungen gibt, wodurch das Leben leichter und die Entwicklung schneller wird. Aus meiner Perspektive gibt es derzeit nur zwei Mankos:

  1. Die Cloud Edition ist begrenzt auf Magento 2 Enterprise Edition, was nicht die beste Lösung für alle Projekte ist
  2. Der Preis der Magento Enterprise Cloud Edition ist nicht öffentlich; ich bin mir allerdings schon jetzt sicher, dass kleinere Shops es sich nicht leisten können. Für größere Shops hingegen könnte es eine lohnende Investition sein.

So oder so würde ich gerne die Magento 2 Cloud Edition in einem Projekt ausprobieren. Der folgende Link veranschaulicht einige Vorteile sehr gut:
Develop on GitHub, Deploy on Platform.sh, Test on Blackfire.io.

Vielen Dank an Robert für einen unterhaltsamen und informativen Vortrag bei unserem Stammtisch!

Andreas von Studnitz

Autor: Andreas von Studnitz

Andreas von Studnitz ist Diplom-Informatiker, Magento-Entwickler und Geschäftsführer von integer_net. Seine Schwerpunkte sind Entwicklung, Beratung und die Durchführung von Schulungen. Er ist Magento 2 Certified Professional Developer Plus und hat darüber hinaus weitere Magento Zertifizierungen für Magento 1 und Magento 2. Sowohl im Jahr 2019 als auch 2020 wurde Andreas als Magento Master in der Kategorie „Mentor“ ausgezeichnet.

Mehr Informationen