DDEV-Local

Gemeinsame Entwicklungssysteme

DDEV Logo

November 10th, 2021 / Faktor E Multimedia GmbH

Virtual-
isierung

Was ist das?

Warum wollen wir das?

Wann wollen wir es?

Mein Block

  • Gemeinsamer Siedlungsbereich ("Host-Computer")
  • + Jedes Haus für sich (eigenes Klo, eigener Kühlschrank, etc.)
  • + Volle Individualität
  • - Redundanz
  • - Ressourcenverbrauch
  • - Hoher Neubau-Aufwand

Mein Haus
mit Vagrant+Puppet

Vagrant Puppet Virtualbox VM

Vagrant (Fernsteuerung)

Puppet (Bauplan)

VM (Komponenten)

  • Virtualisierungssoftware + Toolbox: VirtualBox + Vagrant + Puppet (auch: Parallels, KVM/Proxmox, ...)
  • Komplettes System mit CPU x86-Emulation (nicht nur Linux, auch Windows, Mac) (Kein ARM/M1)

Meine Container
Docker

  • Schiff ist der Host (zentrale Plattform)
  • + Container davon nutzen alle zentrale Ressourcen (Kernel)
  • + Jeder Container kann einem eigenen Zweck dienen (Infrastructure as Code, Microservices)
  • + Standardisiert, Konfigurierbar, "Verschiffbar" (Portabilität)

Meine Container
Docker

  • - Verwaltungsaufwand
  • - Ansammlung von Containern, aufwändiger Überblick
  • - Kommunikation zwischen Containern

Docker-Details

  • Netzwerkkonfiguration (Vorgegeben/Standard)
  • Volumes (Nutzdaten)
  • Images (Softwarepakete)
  • Konfiguration + Set von Images + Set von Volumes = Container

Docker-Details

  • Nutzt einen vorhandenen Kernel (Windows WSL, Linux, MacOS)
  • Images laufen im sog. "Userspace", wie Anwendungen. KEINE Emulation!
  • Docker wird via "docker-compose" á la vagrant verwaltet/konfiguriert

Docker-Details: DDEV-local

  • DDEV-local (im Folgenden immer nur "ddev"):
  • Fernsteuerung für docker-compose
  • docker+ddev können auf das lokale Dateisystem zugreifen (bindmounts, nfs, mutagen)
  • ...aber auch eigene Volumes (ohne "Rückspiegelung") möglich
  • ...ginge aber auch mit VBox!

ddev Bestandteile

  • ddev TYPO3-Projekte bestehen aus:
  • PHP+NGINX/Apache Image
  • MariaDB/MySQL-Image
  • ggf. weitere (Solr, ...)
  • ... auch eigene Images mit Docker-compose zuladbar wie z.B. joe

Vor/Nachteile

Docker Virtualbox
  • + Aktive Entwicklung
  • + Einfache, standardisierte Konfiguration
  • + Viele vorhandene Images
  • + Fördert Microservice-Denken
  • + Näher am Host-System
  • + Geteiltes Filesystem
  • + Keine (ggf. aufwändige) Provisionierung / Base-Boxes
  • + Teilbare Snapshots
  • + Deploybares Setup bei Hostern (Zukunftsmusik)
  • - Initiale Einrichtung für uns etwas Aufwand
  • - DDEV-local Weiter-Entwicklung nicht gesichert
  • - keine (einfache) gehärtete Lese/Schreibzugriffs-Verwaltung
  • - Speichermüll (alte Images/Volumes/Container)
  • + Komplett individuell
  • + Exakte Replik eines Hoster-Webservers
  • - Geringere Performance (Hypervisor)
  • + vollständige Kapselung ("ein System")
  • - Hohe Redundanz

Ausblick

  • Software As Infrastructure: Kubernetes, Platform.sh
  • Orchestrierung von Images
  • Moderne Industriestandards
  • Microservices, Verteilung von Aufgaben
  • Lastverteilung, Horizontale Performance/Skalierung
  • Deployment-Workflows (CI/CD, Github-Actions)

... und weiter geht's: