Microservices-Architektur, die Änderbarkeit und die Hebung der Kommunikation zwischen Systemen auf die Protokollebene sind Schlüsselkonzepte für die Gestaltung flexibler und wartbarer Software-Systeme. Diese Konzepte tragen erheblich zur Agilität und zur langfristigen Wartung von Software bei. Hier ist eine Zusammenfassung, wie diese Aspekte zusammenwirken und die Änderbarkeit von Systemen beeinflussen, illustriert am Beispiel von OpenAPI für REST Services:
Microservices teilen eine große Anwendung in kleinere, unabhängig deploybare Dienste auf. Jeder Dienst ist für eine spezifische Geschäftsfunktion zuständig. Diese Modularität ermöglicht es, einzelne Teile der Anwendung unabhängig voneinander zu entwickeln, zu testen, zu deployen und zu skalieren, was die Änderbarkeit und Wartbarkeit verbessert.
Die Änderbarkeit ist ein Maß dafür, wie leicht Software-Systeme modifiziert werden können, um neue Anforderungen zu erfüllen, Fehler zu beheben oder die Performance zu verbessern. Durch den Einsatz von Microservices wird die Änderbarkeit dadurch verbessert, dass Änderungen an einem Dienst in der Regel keine oder nur minimale Auswirkungen auf andere Dienste haben. Dies reduziert die Komplexität von Updates und die Wahrscheinlichkeit, dass Änderungen an einem Teil der Anwendung unbeabsichtigte Auswirkungen auf andere Teile haben.
Die Kommunikation zwischen Microservices erfolgt über wohldefinierte, leichte Protokolle wie HTTP/REST, gRPC oder Messaging-Systeme. Diese Protokolle definieren einheitliche Schnittstellen, durch die Dienste miteinander kommunizieren, unabhängig von ihrer internen Implementierung. Das bedeutet, dass die interne Logik eines Microservices geändert werden kann, solange die Schnittstellenspezifikation eingehalten wird.
OpenAPI (früher bekannt als Swagger) ist eine Spezifikation für REST-APIs, die es ermöglicht, die Schnittstellen von Microservices zu definieren, zu dokumentieren und zu veröffentlichen. Durch die Definition einer API mit OpenAPI wird eine klare Trennlinie zwischen der Schnittstelle (dem “Was”) und der Implementierung (dem “Wie”) eines Dienstes gezogen. Dies bedeutet, dass die interne Implementierung eines Microservices - einschließlich des verwendeten Technologie-Stacks - geändert werden kann, ohne dass dies Auswirkungen auf die Konsumenten der API hat, solange die Schnittstellendefinition konstant bleibt.
Nehmen wir an, ein Microservice, der einen REST Service über OpenAPI bereitstellt, verwendet einen veralteten Technologie-Stack. Da die Kommunikation auf die Protokollebene gehoben wurde und die Schnittstellenspezifikation durch OpenAPI definiert ist, kann der Technologie-Stack des Microservices aktualisiert oder sogar vollständig ersetzt werden, ohne die Konsumenten der API zu beeinträchtigen. Die Konsumenten interagieren weiterhin mit der API gemäß der OpenAPI-Spezifikation, unabhängig von den internen Änderungen am Dienst.
Durch die Anwendung dieser Konzepte können Entwickler die Langlebigkeit und Flexibilität ihrer Software-Systeme erheblich verbessern, die Wartung vereinfachen und die Reaktionsfähigkeit auf sich ändernde Geschäftsbedürfnisse erhöhen.