Wie sich Qualität und Fehleranfälligkeit von Features durch automatisierte Testings verbessern lassen und warum der OpenAPI-Standard eine gute Wahl für Distributed Micro Services ist.

In einer verteilten Micro-Service-Systemarchitektur ist es essenziell, zu definieren, wie die Services miteinander kommunizieren sollen, und dafür angemessene Standards zu definieren. Denn immer dann, wenn etwa neue Features entwickelt werden, müssen auch bestehende Features geprüft und angepasst werden. Deshalb ist es besonders wichtig, die Kommunikation zwischen den Services zu kontrollieren, damit das System keinen Schaden nimmt, wenn Änderungen implementiert werden. 

Im allmyhomes-System wird die Hauptkommunikation zwischen den Services untereinander und zwischen den jeweiligen Services und Clients mittels RESTful-Api-Calls abgewickelt. REST ist einer der wichtigsten Architekturstile, der verschiedene Standards definiert und so Dienste von vornherein einheitlich nutzbar macht. Um die Schnittstellen der Services zu definieren, nutzt allmyhomes Contract-Dateien im OpenAPI-Standard (Contract). Um zu validieren, dass die Services sich exakt so verhalten, wie es im Contract definiert wurde, testet allmyhomes die Interfaces automatisch anhand der definierten Contracts in der CI/CD-Pipeline. Der nächste Schritt wird darin bestehen, standardisiert aus den Contracts fertigen Code zur Service-Kommunikation zu generieren, so dass sich die Entwickler auf die Entwicklung der Business-Prozesse fokussieren können.

Da in der allmyhomes-Architektur mehrere Teams die Verantwortung für die jeweiligen Micro-Services tragen und somit die Contracts von vielen verschiedenen Leuten/ Entwicklern geschrieben werden, wurde ein interner Standard definiert, der automatisiert mit einem Contract-Validator sichergestellt wird. Dazu nutzt allmyhomes Tools wie dredd.io und mock-server.com, kombiniert mit selbst entwickelten Tools, um alle Services gesondert und isoliert voneinander testen zu können. So können alle möglichen Wege der Kommunikation abgedeckt und validiert, eine hohe Qualität gewährleistet, Bugs vermieden und neue Features zügig implementiert werden.