Suchen

Komplexe Kommunikation von Mikrodiensten Tipps zum Testen von Microservice-Architekturen

| Redakteur: Stephan Augsten

In Microservice-Architekturen kommunizieren viele kleine Dienste mit dedizierten Aufgaben miteinander. Dieser Datenaustausch muss beim Testing besonders im Auge behalten werden. Das IT-Beratungs- und Softwareunternehmen Consol gibt einige Tipps.

Firma zum Thema

Die Kommunikation vieler kleiner Dienste, die zusammen eine große Funktionalität abbilden, bedeutet besondere Herausforderungen beim Testing.
Die Kommunikation vieler kleiner Dienste, die zusammen eine große Funktionalität abbilden, bedeutet besondere Herausforderungen beim Testing.
(Bild gemeinfrei: 3dman_eu - Pixabay.com)

In Microservice-Umgebungen werden größere Funktionalitäten durch die Komposition vieler kleiner Dienste realisiert, die Daten untereinander austauschen müssen. Das Handling, die Organisation und Validierung der Kommunikation bedarf einer durchdachten Architektur, unterstreicht Consol. Oft kommen verschiedene Kommunikationstechnologien wie HTTP REST, SOAP, JMS oder Apache Kafka zum Einsatz.

Je nach Bedarf werden diese Technologien gemischt. So ergeben sich zwar spezialisierte und optimierte Kommunikationswege, doch dies führt zu einer komplexen Vernetzung. So kann der Nachrichteneingang über HTTP REST, der Nachrichtenausgang aber über Kafka umgesetzt wird. Ein anderer Microservice müsste demnach die versendeten Nachrichten des ersten Dienstes über Kafka abholen, erläutert Consol.

Für das effiziente Testen in Microservices-Umgebungen müssen nach Einschätzung des IT-Dienstleisters zunächst mehrere Voraussetzungen erfüllt sein:

  • Die Schnittstellen zwischen den Services sollten klar definiert sein, denn nur so kann die Kommunikation zielgerichtet getestet werden.
  • Ein Microservice sollte zudem ohne Abhängigkeiten zu anderen Services starten können, um ein isoliertes Testen zu unterstützen, bei dem seine reibungslose Funktionsweise überprüft wird.
  • Nicht zuletzt sollten CI/CD-Pipelines zum Einsatz kommen, um das Testen der Services zu automatisieren; sind Tests nicht vernünftig automatisiert, verlängert sich die benötigte Zeit zum Testen sowie die Zeit bis zur Auslieferung im Allgemeinen – ganz abgesehen von der Fehleranfälligkeit manueller Tests.

Das Testing vieler kleiner, isolierter Softwarekomponenten unterscheidet sich stark von der klassischen Vorgehensweise bei monolithischer Software, erklärt Sven Hettwer, Senior Software Engineer mit Fokus auf Testautomatisierungs- und CI/CD-Lösungen bei Consol: „Daher muss erstens ein Umdenken bei den Entwicklern stattfinden und zweitens sind neue Technologien notwendig, die den veränderten Anforderungen gerecht werden.“

Um die Komplexität in den Griff zu bekommen, sind mehrere Maßnahmen erforderlich. Consol empfiehlt Folgendes:

  • Bereitstellung passender Infrastruktur zur automatisierten Ausführung von Tests unter Nutzung moderner CI/CD-Technologien.
  • Erstellung aussagekräftiger Testfälle: Eine Empfehlung lautet, sich an den Workflows der Software zu orientieren. Eine Ableitung von Testfällen aus Abnahmekriterien oder User Stories kann dabei sehr hilfreich sein.
  • Erreichung einer aussagekräftigen Testabdeckung mit Positiv- und Negativ-Szenarien. Dies bedeutet nicht, dass eine 100%-Testabdeckung bestehen muss, aber dass die Tests, die geschrieben werden, sinnvoll und vollständig gestaltet sind.
  • Testen einer kompletten Microservice-Landschaft aus Sicht des Endbenutzers. Consol verweist hier auf die eigene Lösung Sakuli, mit der sich eine Software von Ende zu Ende testen lässt.
  • Testen von Teilsystemen der Microservice-Landschaft, um das reibungslose Zusammenspiel in einem größeren, fachlich wertvollen Zusammenhang sicherzustellen. Auch in diesem Feld kann Consol mit der Open-Source-Lösung Citrus behilflich sein.

(ID:45606286)