www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
ÜbersichtÜ
BE
RS
ICH
TI.
II.
III.
IV.
V.
Was ist Docker?Ein PraxisbeispielLast- und Performancetests mit DockerDocker auf dem Build- und TestserverFazit
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Ein kurzer ÜberblickD
OC
KE
RI.
II.
III.
IV.
V.
• Docker ist eine Virtualisierungsumgebung• Isolation von Anwendungen in Container• Sehr viel leichtgewichtiger als klassische VMs
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Ein kurzer ÜberblickD
OC
KE
RI.
II.
III.
IV.
V.
• Docker ist eine Virtualisierungsumgebung• Isolation von Anwendungen in Container• Sehr viel leichtgewichtiger als klassische VMs
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Docker-LebenszyklusD
OC
KE
RI.
II.
III.
IV.
V.
Container vs. Images
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
DockerfileD
OC
KE
RI.
II.
III.
IV.
V.
Script zur Erzeugung von Docker-Image(s)
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Configuration ManagerB
EIS
PIE
LI.
II.
III.
IV.
V:
Kern:• Serverkomponente
• An mehreren Standorten (ggf. weltweit) verteilt• Schnittstellen für Client-Systeme• Web- und Rich-Client-Frontend
Erweiterungen:• Kundenspezifische Addons• Unterschiedliche Betriebskonfigurationen
Umgebung:• Diverse Client-Systeme, bspw. Kassen
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Configuration ManagerB
EIS
PIE
LI.
II.
III.
IV.
V.
Servernetzwerk
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
HerausforderungenB
EIS
PIE
LI.
II.
III.
IV.
V.
• Kommunikation der Komponenten • Simulation des weltweiten Einsatzes• Simulation von Clients• Berücksichtigung von Laufzeitdifferenzen• Effiziente Verteilung und Setup der Einzel-
komponenten• Kundenspezifische Betriebskonfigurationen und
Erweiterungen• Abgrenzung zum Produkttest
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Motivation für Docker-EinsatzB
EIS
PIE
LI.
II.
III.
IV.
V.
1. HornetQ-Konfiguration optimieren• Problem:
• Viele Netzwerkausfälle aufgrund von• Schlechten Netzwerkverbindungen• Unterdimensionierter Umgebung
• Zustand vor der Optimierung:• Server stehen zum Teil unter Dauerlast• Nachrichten werden nicht verarbeitet• Im schlimmsten Fall: HornetQ auf dem Server hängt sich auf
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Motivation für Docker-EinsatzB
EIS
PIE
LI.
II.
III.
IV.
V.
1. HornetQ-Konfiguration optimieren• Problem:
• Viele Netzwerkausfälle aufgrund von• Schlechten Netzwerkverbindungen• Unterdimensionierter Umgebung
• Zustand vor der Optimierung:• Server stehen zum Teil unter Dauerlast• Nachrichten werden nicht verarbeitet• Im schlimmsten Fall: HornetQ auf dem Server hängt sich auf
Probleme treten erst auf • Unter bestimmten Bedingungen• Ab einer gewissen Menge Subknoten
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Motivation für Docker-EinsatzB
EIS
PIE
LI.
II.
III.
IV.
V.
2. Automatische Tests auf Buildserver optimieren• Problem:
• Builds können z.T. nicht parallel laufen, da sie gemeinsame Ressourcen nutzenDies betrifft insbesondere die Testausführung!
• Abgebrochene Builds hinterlassen manchmal Zustände, die nur schwer aufzuräumen sind und den nachfolgenden Build, insbesondere nachfolgende Tests, stören
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Ausflug: IntegrationstestL&
P-T
ES
TS
I.
II.
III.
IV.
V.
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Last und PerformanceL&
P-T
ES
TS
I.
II.
III.
IV.
V.
Integrationstestaufbau skaliert nicht!
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Last und PerformanceL&
P-T
ES
TS
I.
II.
III.
IV.
V.
Integrationstestaufbau skaliert nicht!
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Soll-ZielumgebungL&
P-T
ES
TS
I.
II.
III.
IV.
V.
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
1. Ansatz: Zielumgebung mit VMsL&
P-T
ES
TS
I.
II.
III.
IV.
V.
• ESX-Host exklusiv für Last- und Performancetests• Inklusive Emulator für Netzwerkprobleme (Latency,
Package Loss)
• Vorbereitung einer Template-VM• Clonen und Anpassen der Einstellungen, bspw. IPs
• Erledigen Scripte, die sich auch in einen Build einbauen lassen
• Server setzen sich per Autoinitialisierung selbst auf
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
1. Ansatz: Zielumgebung mit VMsL&
P-T
ES
TS
I.
II.
III.
IV.
V.
Vorteile:• Analogie zur Produktivumgebung
• Im Beispiel: Windows Server• Einfache Simulation von Netzwerkproblemen
Nachteile:• Schwergewichtig
• In der Regel nur wenige Instanzen auf einem Host (im Beispiel 60 VMs) zu realisieren
• Alternativ: Space mieten• Aufsetzen dauert verhältnismäßig lang
• Wird eher dauerhaft aufgesetzt und nicht nur temporär
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Zielumgebung mit DockerL&
P-T
ES
TS
I.
II.
III.
IV.
V.
• Docker-Host für Last- und Performancetests• Eigene (private) Docker-Registry• Aufeinander aufbauende Images, bspw.
• 1. Ebene: Betriebssystem + Java + Datenbank• 2. Ebene: Application-Server (JBoss oder Wildfly)• 3. Ebene: Deploy der Anwendung
• Durch Dockerfiles (Scripte) gut automatisierbar• Auch in den Build integrierbar
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Zielumgebung mit DockerL&
P-T
ES
TS
I.
II.
III.
IV.
V.
Vorteile:• Leichtgewichtig
• Images können aufeinander aufbauen, viele Einrichtungsarbeiten deshalb nur einmal notwendig
• Aufsetzen geht schnell• Container werden temporär gestartet und nach dem Test wieder
beendet• Jeder Test startet „clean“ – kein Zurücksetzen von
Testdaten notwendigNachteile:
• Ggf. weit weg von der Produktivumgebung• In unserem Fall (Container setzt auf Zielsystemen Debian /
CentOS auf) weit entfernt vom alternativen Zielsystem Windows Server
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
ZwischenfazitL&
P-T
ES
TS
I.
II.
III.
IV.
V.
• VMs haben weiterhin ihre Berechtigung• Abbildung der realen Zielumgebung scheitert bei
Docker ggf. an der fehlenden Unterstützung
• Docker ist zu bevorzugen• Einfacheres und schnelleres Aufsetzen / Abräumen
• Ein Netzwerk mit ca. 300 Knoten ist in ca. 30 Minuten betriebsbereit
• Sehr viel weniger Ressourcenbedarf
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
ZwischenfazitL&
P-T
ES
TS
I.
II.
III.
IV.
V.
• VMs haben weiterhin ihre Berechtigung• Abbildung der realen Zielumgebung scheitert bei
Docker ggf. an der fehlenden Unterstützung
• Docker ist zu bevorzugen• Einfacheres und schnelleres Aufsetzen / Abräumen
• Ein Netzwerk mit ca. 300 Knoten ist in ca. 30 Minuten betriebsbereit
• Sehr viel weniger Ressourcenbedarf
Auf demselben ESX-Hosts laufen wahlweise:• Ca. 60 VMs Aufsetzen pro VM > 10 Minuten• Ca. 300 Docker-Container Aufsetzen pro Container ~ 10 Sekunden
Anzahl der Knoten um den Faktor 5 höher! Aufsetzen um mindestens den Faktor 60 schneller!
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Integration in den BuildprozessB
UIL
D-S
ER
VE
RI.
II.
III.
IV.
V.
Viele Dockerplugins für Buildserver Jenkins• Docker als Jenkins-Slaves• Aufruf von Dockerkommandos im Build• Deploy in Docker-Container• Bauen von Docker-Images auf Basis von Dockerfiles• Docker-Integration in Pipeline• …
Flexible Nutzung für jeden Bedarf… • … Einsatz sollte zielgerichtet erfolgen
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Warum Docker?B
UIL
D-S
ER
VE
RI.
II.
III.
IV.
V.
• Parallel laufende Builds• Genutzte Ressourcen für den Test nicht endlich
• Datenbanken / -schemata• Application Server / Ports• …
• Bessere Skalierung der Infrastruktur• Erzeugung von Buildjobs on-the-fly möglich
• Z.B. für Feature-Branches• Erlaubt die Ausführung der Tests ohne manuelle Anpassung
des Jobs
• Mehrere Docker-Hosts lassen sich zu einem Schwarm (Cluster) zusammenschließen → transparent für den Client
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
AusgangssituationB
UIL
D-S
ER
VE
RI.
II.
III.
IV.
V.
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Umstieg auf DockerB
UIL
D-S
ER
VE
RI.
II.
III.
IV.
V.
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Konfiguration des Build-ServersB
UIL
D-S
ER
VE
RI.
II.
III.
IV.
V.
• Build-Server läuft aus Performance-Gründen nativ und nicht selbst in einer VM
• Für unseren Fall: Plugin "docker-plugin"• Build wird auf einen Slave verlagert• Slave wird vom Build erzeugt und abgeräumt• Slave für Tests aus• Slave kann ggf. weitere Container starten
• Bspw. für den Test verteilter Systeme• Testergebnisse und Buildartefakte
• Werden durch Sharing im Verzeichnis des Jobs auf dem Jenkins-Master abgelegt
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Umstieg auf DockerB
UIL
D-S
ER
VE
RI.
II.
III.
IV.
V.
• Vorteile:• Build auf dem CI-Server-Slave
• Dieser wird on-the-fly erzeugt und verworfen• Zustand kann eingefroren werden, bspw. als Docker-Image
• Tests können parallel ausgeführt werden, ohne sich gegenseitig zu beeinflussen
• Für den Nutzer transparent
• Nachteile:• Erhöhter Aufwand bei Einrichtung des Build-Servers
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
Docker – Hype oder Hilfe?FA
ZIT
I.
II.
III.
IV.
V.
Aus unserer Erfahrung:• Docker hilft bei diversen Alltagsproblemen
• Auch und gerade beim Testen• Anwendbarkeit aber beschränkt
• Durchgehende Docker-Unterstützung fehlt noch• So werden nicht alle Betriebssysteme unterstützt
• Ergebnisse im Container lassen sich nicht immer 1:1 auf Realität übertragen
• Aktuell noch viel Bewegung im Docker-Umfeld• Macht das Update auf neuere Docker-Versionen schwierig
www.gebit.deCopyright©2017 | GEBIT Solutions GmbH | Berlin • Düsseldorf • Stuttgart
FazitFA
ZIT
I.
II.
III.
IV.
V.
• Moderne Virtualisierungsumgebungenvereinfachen:
1. Das Aufsetzen von verteilten Systemen für den Test2. Den Buildprozess
• Docker-Container ermöglichen die Beschränkung auf das Notwendige
• Tests mit VMs haben weiter ihre Berechtigung, wenn das Hostsystem Docker nicht nativ unterstützt