REDPIXEL - stock.adobe.com
Micro-Apps und Microservices: Was Entwickler wissen sollten
Micro-Apps und Microservices sind die zwei wichtigsten Ansätze, mit denen Entwicklungsteams Anwendungen vereinfachen. Was aber unterscheidet sie?
Das Zerlegen einer Anwendung in kleine und funktionale Komponenten ist ein effektiver Weg, um die Komplexität von Entwicklungs- und Update-Prozessen zu reduzieren. Jedes dieser Teile kann eigenständig sein und nur wenige Codezeilen enthalten, ohne dass die zugrunde liegende Geschäftslogik der Anwendung verloren geht.
Aktuell gibt es zwei besondere Ansätze, mit denen Entwicklungsteams diese Art der Dekomposition erreichen können. Einer davon ist die Entwicklung von Microservices. Dabei geht es darum, ansonsten sperrige Anwendungen in übersichtliche Sammlungen funktionaler Backend-Logik zu überführen. Die andere ist die Micro-App-Entwicklung. Diese ermöglicht es Softwareteams, die Benutzeroberfläche einer Anwendung in funktionsbasierte Komponenten zu zerlegen.
Auch wenn viele Entwicklerteams beide Techniken für sich nutzen: Zwischen den zwei Methoden gibt es einige wesentliche Unterschiede. Bevor Sie sich damit näher beschäftigen, sollten Sie diese in den Grundzügen kennen. Machen wir uns diese Unterschiede deutlich, um besser zu verstehen, wann, warum und wie diese beiden Ansätze für das Anwendungsdesign effektiv genutzt werden können.
Was sind Micro-Apps?
Eine Micro-App ist darauf ausgerichtet, eine einzige Anwendungsaufgabe für das User Interface zu erfüllen. Anstatt denselben Teil der Benutzeroberfläche für eine Anwendung neu zu schreiben, können Entwickler eine vorhandene Micro-App so konfigurieren, dass sie ihren Anforderungen entspricht. Auf diese Weise wird die Konsistenz der Benutzeroberfläche gewährleistet und eine schnelle Möglichkeit zur Erweiterung und Anpassung einzelner Benutzeroberflächen geboten.
Entwickler entwerfen gemeinsam nutzbare Micro-App-Komponenten zur Wiederverwendung über mehrere Programmierschnittstellen (API) hinweg. In einigen Fällen kann dies auch dazu beitragen, den Zeitaufwand für Compliance- und Sicherheitsgenehmigungen zu minimieren. Die Effizienz, die dadurch in den gesamten Entwicklungsprozess einfließt, gibt den Teams mehr Zeit, sich auf neue Funktionen und das Feedback der Benutzer zu konzentrieren.
Es gibt zwar alle möglichen Arten von Benutzeroberflächen, für die Micro-Apps eingesetzt werden können, aber viele Anwendungsfälle drehen sich um soziale Medien und Messaging-Anwendungen. Zum Beispiel setzen Google Hangouts, WeChat und Facebooks Messenger ziemlich sicher eine beträchtliche Anzahl von Micro-Apps ein.
Was sind Microservices?
Microservices basieren auf einem architektonischen Ansatz, bei dem komplexe Anwendungen in leichtgewichtige, lose gekoppelte Dienste unterteilt werden. Anstatt direkt miteinander zu interagieren, kommunizieren diese Dienste hauptsächlich über eine Mischung aus APIs, Event Triggern und anderen Integrationskomponenten. Dieser Designstil fördert eine hohe Unabhängigkeit – und ermöglicht es damit Entwicklungsteams, einzelne Dienste und Funktionssätze isoliert zu erstellen, zu versionieren, zu skalieren und bereitzustellen. Auf diese Weise kann auch ein hohes Maß an Fehlerisolierung und Ausfallsicherheit gewährleistet werden.
Microservices sind üblicherweise auf eine einzige Geschäftsverantwortung oder -funktion ausgerichtet. Die mit der Entwicklung von Microservices verbundenen Designprinzipien schreiben deshalb vor, dass die einzelnen Services schlank und leichtgewichtig sein müssen. Zu diesem Zweck betonen viele Experten auch, dass diese Dienste so wenig Zustandsinformationen wie möglich enthalten sollten. Wenn persistente Zustandsinformationen erforderlich sind, empfiehlt es sich, diese Daten über eine Abstraktionsschicht zu verwalten, wie zum Beispiel einen Sidecar Proxy.
Heutzutage drehen sich viele Anwendungsfälle für Microservices um das Refactoring älterer E-Commerce-Anwendungen, die in einem komplexen Geflecht aus Geschäftsprozessen und Funktionslogik verborgen sind. Viele Unternehmen nutzen Microservices jedoch ebenfalls, um interne Anwendungen in den Bereichen Finanzen und Personalwesen zu modernisieren. Auch anspruchsvolle Systeme für die Echtzeit-Datenverarbeitung werden damit aufgebaut. Darüber hinaus befassen sich immer mehr Entwicklungsabteilungen mit Microservices-Anwendungen in KI- und IoT-Szenarien.
Micro-Apps versus Microservices
Der Hauptunterschied zwischen Microservices und Micro-Apps liegt in ihrem relativen Umfang und ihrer Platzierung innerhalb des Stacks. Eine Sammlung von Micro-Apps befindet sich im Frontend einer größeren, übergreifenden auf Microservices basierenden Infrastruktur und wird dort betrieben. Die Microservices befassen sich hingegen hauptsächlich mit Dingen wie Backend-Kommunikation und Prozessen beim Datenabruf.
Der Arbeitsprozess mit Micro-Apps ist unkompliziert. Eine Web- oder Mobile-Anwendung kann aus mehreren Micro-Apps bestehen, die einfach auf demselben Server oder auf mehreren, miteinander verbundenen Servern bereitgestellt werden. Die Einführung von Microservices bedeutet dagegen oft eine umfassende Umstrukturierung der Softwarearchitektur und der Entwicklungsstrategien eines Unternehmens, insbesondere bei umfangreichen Legacy-Anwendungen.
Aus Speichersicht betrachtet, hinterlässt der Micro-App-Ansatz nur einen minimalen Fußabdruck in Form von Speicherbedarf. Micro-Apps erledigen normalerweise keine Speicherprozesse selbst. Sie verlassen sich stattdessen auf separate Speicherkomponenten, die zwischen Front- und Backend wechseln. Auch wenn dies keine empfohlene Praxis ist, sind Micro-Apps dennoch in der Lage, bei Bedarf ihre eigenen Daten zu speichern, wie zum Beispiel Statusinformationen und Transaktionshistorien.
Trotz ihrer Einfachheit funktionieren Micro-Apps jedoch nur dann gut, wenn die Entwicklungsteams Grenzen zwischen den einzelnen Modulen innerhalb der Benutzeroberfläche klar definieren. Diese Grenzen sind vor allem kontextueller und funktionaler Art. Die Abgrenzungen zwischen diesen High-Level-Modulen sollten Dinge wie Benutzertypen, einzigartigen Feature-Sets und, wenn möglich, der Struktur des Entwicklungsteams selbst sein. Dies erfordert Kommunikation und Zusammenarbeit zwischen den einzelnen Entwicklern und Entwicklungsteams sowie den Betriebs- oder Sicherheitsteams, die die zugehörigen Anwendungen unterstützen.
Gleichzeitig ist Komplexität immer noch ein wichtiges Unterscheidungsmerkmal zwischen Micro-Apps und Microservices. Die dezentrale Natur von Microservices erfordert einen häufigen Nachrichtenaustausch zwischen ihnen – oft durch aufwändige Kommunikationsverfahren. Dieses hohe Maß an Messaging kann leicht die Netzwerkleistung und -integrität beeinträchtigen, wenn es nicht kontrolliert wird. Das bedeutet, dass die Komponenten von Microservices genau und sorgfältig überwacht werden sollten. Angesichts ihrer ätherischen Natur kann das kompliziert werden und erfordert fast immer die Unterstützung durch automatisierte Management-Tools.