Rust-Framework: Turmoil testet verteilte Systeme

Mit Turmoil haben die Macher der Rust-Laufzeitumgebung Tokio die erste Version eines Frameworks zum Entwickeln und Testen von verteilten Systemen vorgestellt.

In Pocket speichern vorlesen Druckansicht 6 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Frank-Michael Schlede

Mit der Bekanntgabe des Frameworks turmoil haben die Entwickler und Entwicklerinnen der Rust-Laufzeitumgebung Tokio die erste Version eines Rust-Frameworks zum Entwickeln und Testen von verteilten Systemen vorgestellt.

Tokio ist eine asynchrone Laufzeitumgebung für die Programmiersprache Rust, die Bausteine zum Schreiben von Netzwerkanwendungen bereitstellt. Programmiererinnen können damit sowohl Geräte wie große Server mit vielen Kernen als auch kleine eingebettete Geräte ansprechen.

Das Entwicklerteam von Tokio stellt in einem aktuellen Blog-Eintrag in diesem Zusammenhang aber ganz besonders heraus, dass das Testen von verteilten Systemen sehr schwierig sein kann. Sie betonen insbesondere, die an vielen Stellen auftretenden nichtdeterministischen Herausforderungen: Das betrifft beispielsweise Bereiche wie das Netzwerk, die Zeit oder auch die Threads. Für Entwickler und Entwicklerinnen bedeutet das unter anderem, dass reproduzierbare Ergebnisse nur schwer zu erzielen und die Entwicklungszyklen aufgrund von Implementierungen lang sind.

Diese Schwierigkeiten soll der Einsatz von turmoil dadurch lösen können, indem es Hosts, Zeit und das Netz simuliert. Auf diese Weise soll dann ein gesamtes verteiltes System in einem einzigen Prozess auf einem einzigen Thread – und damit deterministisch – ausgeführt werden können. Das Framework bietet Anwendern eine sehr genaue Kontrolle über das Netzwerk, sowie die Unterstützung für das Verwerfen, Halten und Verzögern von Nachrichten zwischen Hosts.

Dabei läuft jeder Host (einschließlich des Testcodes) auf seiner eigenen Runtime, die von der Simulation verwaltet wird. Innerhalb von run() arbeitet die Simulation jede Runtime mit einer konfigurierbaren Dauer ab, bis der Testcode abgeschlossen ist. Die Software wird allerdings vom Entwicklerteam noch als experimentell bezeichnet, weshalb sie auch betonen, dass die Anwendungsfälle und das Feedback der Entwicklerinnen für sie von unschätzbarem Wert sind, um die weitere Entwicklung zu steuern. Interessierte können über Github und Discord ihre Erfahrungen an das Entwicklerteam weitergeben.

(fms)