Your Now – Part III: Technische Betrachtung

By

Es ist einer dieser historischen Momente: 2018 kündigten die BMW Group und die Daimler AG an, "in einem Joint Venture zusammenzukommen, um die Mobilität neu zu erfinden". In Part I unserer Your Now Blog Post-Reihe haben wir bereits den Business Approach des Projekts reflektiert. In Part II und Part III gehen wir konkret auf die technischen Aspekte ein.

Infrastruktur

Nach dem ersten Discovery-Prozess stellte sich heraus, dass wir am ersten Tag der Veröffentlichung eine
große Anzahl von Website-Besuchern erwarteten. Daher musste die Infrastruktur sehr sorgfältig mit dem
neuesten verfügbaren Technologie-Stack ausgestattet werden, um der großen Anzahl der gleichzeitigen
Seitenaufrufe gerecht zu werden.

Am Ende stellte sich heraus, dass wir innerhalb einer Stunde nach dem Go-Live ~45.000 gleichzeitige Benutzer auf einmal hatten. Die Website funktionierte ohne Unterbrechungen.

Hardik Gajjar, DevOp, Inviqa

Wir haben die folgenden Best-of-Breed-Tools ausgewählt, um das gewünschte System einzurichten.

Dockers and Kubernetes

Docker hilft dabei, Anwendungen über Container zu erstellen, zu verpacken und auszuführen. Ein
Container ist ein Anwendungspaket mit allen erforderlichen Teilen (wie Bibliotheken und anderen
Systemabhängigkeiten), die für den Betrieb dieser Anwendung benötigt werden.
Docker unterstützte zudem beim Aufbau einer leichten Microservice-Architektur, die individuell skalierbar ist.
Wir haben unsere Docker-Container auf Kubernetes-Cluster gehostet, das eines der beliebtesten Hosting-
/Deployment-Tools von Google ist. Kubernetes ist ein Open-Source-Tool von Google für die automatisierte
Bereitstellung, Verwaltung von Docker-Containern und Skalierung.

Einige der wichtigsten Merkmale von Kubernetes:

  • Open Source und weit verbreitete Bereitstellungstool für Dockers
  • Automatisierte Implementierungen mit Rollback-Unterstützung
  • Fehlertoleranz (startet/erzeugt bei Bedarf Behälter neu)
  • Automatisierter Lastausgleich

Amazon EKS

Für den Betrieb des Kubernetes-Clusters haben wir uns für Amazon EKS (Elastic Container Service for
Kubernetes) entschieden. Amazon EKS ist ein Managed Service, der Kubernetes-Cluster auf der AWS-
Infrastruktur bereitstellt. Es hostet Kubernetes in mehreren Verfügbarkeitszonen, um einen hochverfügbaren
Cluster einzurichten.


Dies sind einige der wichtigsten Merkmale von EKS:

  • Mehrere Verfügbarkeitszonen
  • Nahtlose Integration mit anderen AWS-Diensten
  • Verwaltetes System mit hoher Verfügbarkeit

Jenkins X

Jenkins X ist eine CI/CD-Plattform für das Kubernetes-System. Es wird selbst auf einem Kubernetes-Cluster eingesetzt. Es handelt sich um ein neues Projekt des Jenkins-Teams, das die Kompatibilität mit Kubernetes gewährleisten soll.
Weitere Informationen dazu finden Sie hier.


Hier sind einige der wichtigsten Merkmale:

  • Automatisiertes CI/CD mit Kubernetes
  • Open-Source-Lösung
  • Unterstützt eingebaute GitOps
  • Automatisierte Vorschau-Umgebungen

Branching and Release Management

 

Infrastruktur

 

Unsere CI/CD-Setup und Branching-Strategie wurde besonders darauf ausgerichtet, die Flexibilität von Veröffentlichungen zu unterstützen. Jenkins X schafft für jede Feature-Pull-Anforderung eine neue flüchtige Umgebung, die von unserer QA für frühzeitige Tests jeder Funktion verwendet wird, bevor sie in den Integrationszweig eingebunden wird.

Daher verfügt unser Integrationszweig immer über getestete Funktionen, was es einfach macht, kleine und regelmäßige problemlose Veröffentlichungen durchzuführen. Diese Strategie ermöglichte es uns, das Zusammenführen von fehlerbehafteten Zweigen zu vermeiden, was uns daran hindern könnte, zeitgerechte Veröffentlichungen durchzuführen.

Caching Layer

Amazon CloudFront CDN und Amazon S3 unterstützen dabei, einen sehr leistungsfähigen Caching-Layer vor dem gesamten Drupal zu erstellen. Alle unsere Assets (Bilder/Videos etc.) werden auf Amazon S3 hochgeladen und von dort aus bedient. Cloudfront CDN hat am ersten Tag eine sehr hohe Anzahl von Benutzern betreut.

Die meisten unserer Drupal-Seiten werden vom CloudFront CDN gecached, was eine sehr geringe Belastung des Kubernetes-Clusters bedeutet. Außerdem konnten wir dadurch blue-green deployments unterstützen, z.B. können wir unsere Funktionen nach der Bereitstellung in der Produktion testen, bevor sie öffentlich sichtbar werden.

Herausforderungen

  • Mehrere Teams sind in der Infrastruktur Set-up enthalten. Es gab ein IT-Team von Kundenseite, das ebenfalls einen gewissen Einfluss hatte. Dennoch gelang es uns, das endgültige System mit großer Unterstützung beider Teams aufzubauen.
  • Jenkins X war immer noch ein neues Tool auf dem Markt und war mit Amazon EKS nicht ganz stabil. Wir hatten ein wenig Mühe mit der Bereitstellung und Nutzung von Jenkins X auf dem EKS-Cluster.
  • Unsere Branching-Strategie und das Release-Management waren nicht ganz so nativ wie GitOps. Deshalb mussten wir den Workflow unserer Build-Pipelines so optimieren, dass er mit unserer Release-Strategie in Einklang steht.
  • Jenkins X unterstützt standardmäßig keine Multi-Cluster-Bereitstellungen. In unserer Infrastruktur hatten wir mehrere Cluster entworfen, um die Produktionsumgebung getrennt zu halten. Wir mussten Jenkins X in die Lage versetzen, mehrere Cluster in einem benutzerdefinierten Workflow zu implementieren.

 

Fazit

Jenkins X ist ein großartiges Tool für die Bereitstellung von andockbaren Kubernetes-Applikationen, es wird noch aktiv entwickelt und wird hoffentlich in Zukunft eine bessere Integration mit Amazon EKS ermöglichen.

Der Ansatz, die gesamte Drupal-Site über das CDN zwischenzuspeichern, ist sehr nützlich, wenn Sie alle statischen Seiten auf Ihrem Frontend haben. Es funktioniert jedoch nicht, wenn Sie einige dynamische Inhalte haben.

Kubernetes und Dockers machen es sehr einfach, Ihre Applikation mit einem minimalen Release-Zyklus zu entwickeln, zu paketieren, zu testen und freizugeben.

Dies ist Part III aus der technischen Sicht unseres Your Now-Projekts.

Part I und Part II können sie hier nachlesen.

Möchten Sie bereits jetzt mehr über unsere Vorgehensweise und weitere Insights zu diesem Projekt? Kontaktieren Sie uns!