Tempo machen: Ein dedizierter Docker-Server beschleunigt Integrationstests

Integrationstests sind aufwendig, für das Zusammenspiel aller Komponenten in einem Softwaresystem aber unverzichtbar. Hier hilft ein Docker-Server.

In Pocket speichern vorlesen Druckansicht 67 Kommentare lesen
Tempo machen: Ein dedizierter Docker-Server beschleunigt Integrationstests

(Bild: Stefan Schurr/Shutterstock.com)

Lesezeit: 7 Min.
Von
  • Jochen Christ
Inhaltsverzeichnis

Microservices-Architekturen, aber auch klassische Softwaresysteme sind auf die reibungslose Zusammenarbeit aller Komponenten angewiesen. Das schließt in der Regel auch Infrastrukturdienste wie Datenbanken, Messaging-Systeme oder HTTP-APIs mit ein. Entwicklerinnen und Entwickler sollten daher bei ihrer täglichen Arbeit nicht auf Integrationstests verzichten. Eine geeignete Testumgebung mit Docker-Containern lässt sich mit Testcontainers oder Docker Compose unkompliziert auch lokal aufsetzen und steuern.

Damit sich die Tests nicht negativ auf die Produktivität auswirken und Entwickler in ihrer Arbeit unterbrechen, sollten sie möglichst schnell durchlaufen. Auf typischer Notebook-Hardware können bei Integrationstests aber schnell viele Minuten vergehen, bis alles kompiliert ist, alle Container gestartet, mit Testdaten befüllt und die Tests abgeschlossen sind. Wird die CPU darüber hinaus durch parallel laufende Prozesse wie dem für kollaboratives Remote Mob Programming notwendigen Screensharing zusätzlich belastet, gelangen auch leistungsstarke Notebooks schnell an ihre Grenzen. Auf macOS-Systemen kommt verschärfend hinzu, dass Docker dort nur in einer virtuellen Umgebung mit limitierten Ressourcen läuft.

Es gibt jedoch einen einfachen Weg, die Tests zu beschleunigen: Die Docker Engine lässt sich separat auf einem leistungsfähigen Rechner installieren, der als Docker-Server dient. Testcontainers greift dann über die Docker-REST-API via HTTPS auf den Docker Daemon zu. Auf diese Weise lassen sich Container auf dem Server ausführen und sind dort über entsprechend gemappte Ports erreichbar. Der lokale Arbeitsplatzrechner ist entlastet und seine Kapazitäten stehen für die eigentlichen Tests bereit.

Testcontainers-Aufbau mit ausgelagerter Docker Engine

Das Einrichten und Konfigurieren eines Docker-Servers soll im Folgenden am Beispiel eines lokalen Systems vom Typ Dell PowerEdge T20 Mini Tower Server gezeigt werden. Alternativ wäre auch ein vergleichbarer Cloud-Server denkbar. Der Rechner verfügt über vier CPU-Kerne, acht GByte RAM und ist mit einer SSD ausgestattet. Als Betriebssystem kommt die aktuelle LTS-Version von Ubuntu, 20.04 LTS x64, zum Einsatz. Linux eignet sich für die Aufgabe grundsätzlich besonders gut, da es Docker nativ unterstützt.

Um Docker auf Ubuntu zu installieren, sind dennoch eine Reihe von Befehlen erforderlich:

sudo apt update && \
DEBIAN_FRONTEND="noninteractive" TZ="Europe/Berlin" sudo apt install -y tzdata && \
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" && \
sudo apt update && \
sudo apt install -y docker-ce && \
docker --version

Listing 1: Docker auf Ubuntu installieren