Eine Microservices-Architektur ist nützlich für komplexe Applikationen, die aus mehreren Subsystemen bestehen und häufig aktualisiert werden, wie z.B. eine Contact Center Software. In einer monolithischen Architektur ist die Software in sich geschlossen und alle Komponenten der Applikation miteinander verbunden. Bei einer Microservice-Architektur wird die Funktionalität in lose gekoppelte, autonome Microservices (Subsysteme) aufgeteilt und jedem Microservice wird eine bestimmte Zuständigkeit zugewiesen. Bei einer Contact Center Software könnten das die Anrufbearbeitung und steuerung, Aufgaben-Routing, Berechnung der Serviceverfügbarkeit oder Reporting sein. Diese verschiedenen Subsysteme teilen sich keinen Code, so dass für die verschiedenen Dienste die jeweils am besten geeigneten Technologie verwendet werden kann. Microservices kommunizieren über APIs, um eine funktionsfähige Applikation zu bilden.
Microservices können unabhängig von anderen Services entwickelt, getestet, bereitgestellt und skaliert werden – die Wartung der Applikation wird dadurch stark vereinfacht. Anstatt eine ganze Applikation zu aktualisieren, müssen nur bestimmte Komponente angefasst werden. In monolithischen Applikationen verheddern sich mit der Zeit die Code-Abhängigkeiten. Da Microservices keinen Code teilen, können einfacher neue Funktionen ausgerollt werden. Sofern die Architektur gut konzipiert ist, hat ein Update oder ein Fehler in einem Service keinen Einfluss auf den Rest des Systems und die Applikation kann unterbrechungsfrei weiterlaufen. Bei monolithischen Applikationen hingegen kann ein Fehler in einem Teil der Applikation einen ganzen Release aufhalten, und somit die Veröffentlichung neuer Funktionen verzögern. Microservices ermöglichen ein unterbrechungsfreies und schnelles Ausrollen von Updates und neuen Funktionen.
Eine Microservices-Architektur erhöht die Agilität. Obwohl das System als Ganzes in einer Microservice-Architektur komplexer ist, ist jeder einzelne Service sehr einfach aufgebaut. Das bedeutet, dass einzelne Services von einem kleinen Team entwickelt und gewartet werden können. Dies erfordert weniger Koordination und ermöglicht ein schnelleres Ausrollen von Funktionen. Das erhöht die Produktivität und senkt die Entwicklungskosten.
Einer der grössten Vorteile einer Microservice-Architektur ist die Skalierbarkeit. Bei steigender Nachfrage können Services unabhängig voneinander skaliert werden, ohne die gesamte Applikation zu skalieren. So können Ressourcen an die am meisten benötigten Service zugewiesen werden oder neue Service einfach hinzugefügt werden. Wenn zum Beispiel die Anzahl der Anrufe steigt, können automatisch neue Call-Handler gestartet werden, um die erhöhte Last zu bewältigen. Microservices ermöglichen somit eine optimale Ausnutzung der Rechenkapazität.