TYPO3CMD18: Hosting TYPO3 in Container Cloud Architectures

TYPO3CMD18: Hosting TYPO3 in Container Cloud Architectures

Slides of my session at the TYPO3Camp Mitteldeutschland in Dresden 2018

2b68bc93708466a655a4c60458dc7955?s=128

Martin Helmich

January 26, 2018
Tweet

Transcript

  1. Hosting TYPO3 in Container Cloud Architectures Martin Helmich Mittwald CM

    Service GmbH & Co. KG TYPO3Camp Mitteldeutschland, Dresden 26. Januar 2018 CC-0, mahaviharya https://pixabay.com/en/meditation-monk-snow-mountain-3083274/
  2. Martin Helmich Software & Systems Architect @ Mittwald CM Service

    Dozent @ Private Hochschule für Wirtschaft & Technik http://stackoverflow.com/story/martinhelmich https://github.com/martin-helmich https://www.martin-helmich.de
  3. „Klassische“ Systemarchitektur für Webhosting

  4. „Klassische“ Systemarchitektur für Webhosting Container-basierte Systemarchitektur

  5. WHY DOCKER?

  6. WHY DOCKER? • EFFIZIENZ Geringerer Overhead als „klassische“ Virtuelle Maschinen

    • STANDARDISIERT Open Container Initiative • COMMUNITY Docker + Kubernetes gehören zu den aktivsten Projekten auf GitHub • AUTOMATISIERUNG Auf DevOps zugeschnittene Tools Hoher Automatisierungsgrad
  7. KUBERNETES

  8. KUBERNETES • KUBER-WIEBITTE? „Kubernetes is an open-source system for automating

    deployment, scaling and management of containerized applications“ • GOOGLE SCALE „billions of containers a week“ • AUTOMATISIERUNG Horizontale Skalierung Selbstheilung Storage-Orchestrierung Konfigurationsmanagement und noch mehr…
  9. SPACES Container Architecture Applikations-Pods (Deployment) Caching-Pods (StatefulSet) Database Pods (MySQL,

    Elasticsearch, …) (StatefulSet) Logging Pod (Deployment) Management Pod (Deployment)
  10. SCALING CONTAINERS

  11. SCALING TRADITIONELLE ARCHITEKTUREN • VERTIKALE SKALIERUNG „Buy a bigger box“

    • HORIZONTALE SKALIERUNG „Buy more boxes“ Teurer Load Balancer
  12. SCALING THE KUBERNETES WAY 1. Provider mit genügend Überkapazität finden

    2. „Horizontal Autoscaler“ in Kubernetes konfigurieren 3. Zurücklehnen Viele kleine Applikations-Container Kurzlebig, häufig erstellt & gelöscht
  13. $ kubectl scale deployment my-app --replicas=32 deployment "my-app" scaled $

    kubectl get deployments NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE my-app 32 32 32 15 30m $ kubectl get pods NAME READY STATUS RESTARTS AGE my-app-2035384211-7ci7o 1/1 Running 0 18s my-app-2035384211-kzszj 1/1 Running 0 18s my-app-2035384211-qqcnn 1/1 Running 0 18s …
  14. $ kubectl autoscale deployment my-app \ --min=4 --max=128 --cpu-percent=80 deployment

    "my-app" autoscaled
  15. NUTZEN KUNDE + PROVIDER • Effiziente Ressourcenauslastung (kein „Over-Provisioning“) •

    Schneller Scale-Up & Scale-Down • „zero-conf“
  16. HERAUS- FORDERUNGEN

  17. HERAUSFORDERUNGEN Viele PHP-Applikationen unterstützen horizontales Scaling nur bedingt. Fallstricke: •

    Daten (Caches oder Nutzdaten) im lokalen Filesystem • Sich selbst verändernder Code
  18. Shared Filesystem typo3temp/ typo3conf/ fileadmin/ uploads/ GLUSTER

  19. HERAUSFORDERUNGEN • Die Applikation selbst kann (eventuell mit Biegen und

    Brechen) gut horizontal skaliert werden • Darunter liegende Datenbank- systeme (bspw. MySQL) nicht so einfach
  20. Database Skalierbare Caching-Schicht

  21. None
  22. None