Testen und Docker - Gesellschaft für Informatik · 2018-04-26 · Testen und Docker Beispiele aus...

36
Testen und Docker Beispiele aus der Praxis Dehla Sokenou

Transcript of Testen und Docker - Gesellschaft für Informatik · 2018-04-26 · Testen und Docker Beispiele aus...

Testen und Docker

Beispiele aus der Praxis

Dehla Sokenou

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

Docker?

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)

Praxisbeispiel

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

Last- und Performancetests mit Docker

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!

Docker auf dem Build-Server

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

Fazit

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

Zeit für Fragen