Deutschenglish

Creation of a Framework and a Corresponding Tool Enabling the Test-Driven Development of Locally Developed Microservices in Docker


Microservice-Architekturen haben sich als Gegenentwurf zu herkömmlichen monolithischen Anwendungen herausgebildet. Während Monolithen als einzelne lauffähige Applikationen eingesetzt werden, deren Module die Ressourcen des zugrunde liegenden Systems gemeinsam nutzen, bestehen Microservice-Architekturen aus einer Reihe kleinerer Einheiten, die als Microservices bezeichnet werden. Im Idealfall sind diese Services nach den von ihnen bereitgestellten Geschäftsfunktionen aufgeteilt, so dass sie unabhängig entwickelt und ausgeführt werden können. In der übergeordneten Architektur kommunizieren die Dienste über kompakte Nachrichten, die über wohldefinierte APIs gesendet werden. Die Hauptvorteile von Microservices liegen in der schnellen Entwicklung, den geringeren Kosten für Änderungen, dem evolutionären Wachstum des Systems und der Möglichkeit, Teile des Systems dynamisch zu skalieren, indem nur bestimmte Funktionen und nicht die gesamte Architektur repliziert werden müssen. Dieses neue Architekturmuster erfordert jedoch eine Anpassung der angewandten Maßnahmen zur Qualitätssicherung. Das Testen eines dezentralisierten Systems unterscheidet sich vom Testen einer monolithischen Anwendung und bringt besondere Herausforderungen mit sich. In dieser Masterarbeit wird die Strategie eines testgetriebenen Entwicklungsprozesses untersucht und in den Kontext von Microservice-Architekturen gestellt, die nach etablierten Praktiken entwickelt werden. Unter Verwendung einer adaptierten Version der Systems Development Research Methodology aus dem Bereich der Design Science, besteht die Arbeit aus einem theoretischen und einem praktischen Teil. Zunächst wird durch eine systematische Literaturrecherche Grundlagenwissen über Microservice-Entwicklungspraktiken und gängige Softwaretestarten gesammelt. Anschließend wird dieses Wissen in die Entwicklung eines umfangreichen, nutzbaren Artefakts umgesetzt, um eine Lösung vorzuschlagen, die eine testgetriebene Microservice-Entwicklung auf einem lokalen System ermöglicht, so dass das Ergebnis dieser Arbeit von einem breiten Publikum mit begrenzter technischer Erfahrung in diesem Bereich leicht genutzt und verstanden werden kann. Zusammenfassend werden fünf grundlegende Designprinzipien für Microservices identifiziert, darunter die Konzentration auf möglichst kleine Dienste, ein domänengetriebenes Design, das Streben nach überschaubaren und wenig komplexen Netzwerken von Diensten, die Vermeidung zyklischer Abhängigkeiten und das Streben nach einer hohen Verbindungsperformance. Die in das Artefakt integrierten Testarten sind Integration Tests, Component Tests und Contract Tests. Die beschriebenen Funktionalitäten konnten mit Hilfe des Artefakts automatisiert werden, was zeigt, dass ein testgetriebener Entwicklungsansatz für Microservice-Architekturen auf einem lokalen System realisierbar ist, wenngleich es noch Spielraum für Verbesserungen gibt.