1. Use Case „Intranet zum Mitnehmen"
2. Problems faced
3. Lösungsansatz
4. Walkthrough: Erzeugen eines neuen DEV-Systems
5. Lessons Learned, Verbesserungspotential
6. Fragen & Antworten
DIESE PRÄSENTATION
AGENDA FÜR
KEY-FACTS ZU TEAMPOINT
PROJEKTUMGEBUNG
• "TeamPoint" = Unternehmens-Intranet/Info-Portal
• essentielles System für über 3.000 Mitarbeiter
• Inhalte/Funktionen in ständiger Bearbeitung, User-Generated Content
• eingerichtet als Browser-Startseite - Ausfälle werden sofort bemerkt
• Verfügbarkeit und Performance des LIVE-Systems darf nicht durch DEV-
Prozesse beeinträchtigt werden
SYSTEME, POLICIES, DATEN
PROJEKTUMGEBUNG
• Basis: SLES 11, LAMP, TYPO3 4.5, Apache Solr
• Umfangreiche Integrationen:
SAP, Datenbanken, eRecruiting, Seminarbuchungen, XML-Daten, APIs
• Staging für Code und Konfiguration (DEV, STAGE, LIVE)
• Multi-Server-Setup (MySQL, Web, Solr, SAN-Storage, LDAP, ...)
• ca. 20 GB Nutzdaten, mehrere GB Datenbankinhalte
• Master-Content wird in LIVE gepflegt
AUS UNTERNEHMENSSICHT
ANFORDERUNGEN
• parallel und unabhängig mehrere Features entwickeln
• lange Test-, Feedback-, Freigabezyklen
• Unternehmens-IT darf nicht durch DEV-Prozesse belastet werden
• reproduzierbarer, dokumentierter Entwicklungsprozess
AUS ENTWICKLERSICHT #1
ANFORDERUNGEN
• entwickeln, wo immer man ist (Home-Office, unterwegs)
• neue Dinge gefahrlos ausprobieren (TYPO3-/Solr-Upgrades, ...)
• ständiges Anlegen neuer DEV-Systeme, "Wegwerf-VMs"
• kein Warten auf IT/Dienstleister bei Bedarf nach neuen DEV-Systemen
• Bedarf für konsistente Point-in-Time-Snapshots
• Code, Config, Content und Struktur (DB+Filesystem) müssen passen
AUS ENTWICKLERSICHT #2
ANFORDERUNGEN
• Arbeitsumgebung: Windows-Laptop, bevorzugte IDE (PhpStorm)
• limitierter Plattenplatz, nicht unbedingt High-End aus Performancesicht
• schneller Workflow, direkte Auswirkung bei Änderungen
• Geschwindigkeits-/Platzoptimierung (sperrige Datenmengen)
• unkomplizierte Zusammenarbeit mit Agentur/Dritten
• Integration mit VCS (Subversion, demnächst Gitlab)
WENN'S IMMER EINFACH WÄRE...
HERAUSFORDERUNGEN
• Einschränkungen durch Enterprise-IT, lange Lebenszyklen und Policies
• Lizenzbeschränkungen, Kosteneinsparung (SLES 11 vs. Ubuntu Server)
• DEV-System muss auch ohne VPN-Verbindung laufen/erzeugt werden können
• TYPO3 4.5 ist nicht deployment-freundlich
• I/O-Performance ist der Flaschenhals
• Problemfall "LDAP-Authentifizierung"
• Problemfall "E-Mailversand"
FLASCHENHALS "SHARED DIRS"
PERFORMANCE
• Shared Directories VBox/VMWare sind langsam
• lokale VM sollte möglichst nur aus dem echten VM-Filesystem servieren
• daher werden die meisten Nutzdaten per rsync in VM kopiert
• Ausnahme: fileadmin/SHARED, uploads (mehr als 20 GB)
• große Nutzdatenverzeichnisse per Shared Directory und Symlink in DocRoot
SPERRIGES DEPLOYMENT
TYPO3 4.5
• TYPO3 kennt keine DB-Migrationen => EXT:t3deploy, DB-Schema-Updates
• Scheduler, LDAP-Auth, Domain-Records müssen deaktiviert/angepasst werden
• Language Package Updates aus dem TER müssen neu gezogen werden
• generell: passende Overrides/Includes für localconf.php
LOKALE SYSTEMUMGEBUNG #1
VORBEREITUNGEN
• Cygwin als UNIX-Umgebung für Windows - siehe http://cygwin.com
• Ziel: Lösung soll unter Windows, Mac OS X, Linux einsetzbar sein
• Benötigte Pakete: openssh, subversion, rsync, wget, mysql (Client)
• SSH-PubKey-Auth einrichten für alle LIVE-Hosts (Web, DB, Solr)
LOKALE SYSTEMUMGEBUNG #2
VORBEREITUNGEN
• Vagrant als Deployment-Framework für lokale virtuelle Maschinen
• siehe http://vagrantup.com
• Virtualisierung, Versuch #1: Virtualbox
• Virtualisierung, Versuch #2: VMWare Workstation + Vagrant-Provider
LOKALE SYSTEMUMGEBUNG #3
VORBEREITUNGEN
• Workspace-Verzeichnis anlegen, im Zugriff für IDE
• auf möglichst große Platte, besser SSD (I/O-Performance)
• "sperrige" Daten als Kopiervorlage lokal ablegen/updaten
• für TYPO3 (SITEDATA):
• fileadmin/SHARED (1TB NFS Volume), uploads, typo3conf
• für Solr (SOLRDATA):
• kompletter Index/Cores, Schemata, Config
VIRTUELLE DEV-MASCHINE
VORBEREITUNGEN
• Ubuntu Server statt SLES 11 (nicht verfügbar als freie Vagrant-Basebox)
• Ubuntu ist besser non-interaktiv skriptbar
• aktuellere Softwareversionen (PHP, MySQL, Kernel, Libs)
• keine Lizenzkosten für lokale DEV-Umgebung
NUTZDATEN UPDATEN
WALKTHROUGH
• Cygwin-Shell öffnen
• ./update-assets.sh
• Aktualisiert SITEDATA und SOLRDATA
• erstellt frischen MySQL-Dump der LIVE-Site und legt ihn lokal ab
• Ziel: 20+ GB nur übertragen, wenn unbedingt nötig
• geht nur bei Verbindung zum LIVE-System (Office-LAN oder per VPN)
LOKALE VM ERZEUGEN
WALKTHROUGH
• Cygwin-Shell in Projektverzeichnis öffnen
• vagrant up --provider vmware_workstation
• Debug: VAGRANT_LOG=INFO vagrant up --provider vmware_workstation
• erstellt neue VM, installiert und konfiguriert nach Bauplan/Skript
• lokale Abweichungen (Auth/LDAP, Mail/SMTP, Netzwerk, SSL-Zertifikat, ...)
BESSER GEHT IMMER
LESSONS LEARNED
• EXT:coreapi kann mittlerweile mehr (DB-Schema-Updates, Clear Cache, ...)
• EXT:t3deploy wäre nicht mehr nötig
• alternativ: TYPO3 Surf
• git ist besser geeignet als SVN
(Cherry Picking, Merge-Lanes, Feature Branches, etc.)
• Warum kein PuPHPet, Puppet, chef, ansible?
BESSER GEHT IMMER
LESSONS LEARNED
• VMWare-Investition lohnt.
• SLES 11 ist so richtig Enterprise.
• Deployment mit TYPO3 6.2 ist einfacher.