Microservices stellen ein Architekturmuster in der Informationstechnik dar, welche eine komplexe Anwendungssoftware aus mehreren unabhängigen Prozessen zusammenstellen, die mit sprachunabhängigen Programmierschnittstellen untereinander kommunizieren. Außerdem sind die Dienste weitgehend entkoppelt und erledigen immer eine kleine Aufgabe. Dies ermöglicht einen modularen Aufbau der Anwendungssoftware. https://de.wikipedia.org/wiki/Microservices
Wenn Sie sich mit der Thematik „Microservices-Architektur“ in Kombination mit Smartstore beschäftigen, spielt auch die Frage eine Rolle, ob Sie und Ihr Business für eine Microservices-Architektur infrage kommen. Wir denken, dass diese Art der Orchestrierung erst dann Sinn macht, wenn Ihr Unternehmen eine gewisse Größe und Komplexität aufweist und Sie diese auch online umsetzen müssen.
Microservices zielen darauf ab, komplexe Anwendungen durch Dezentralisierung (Stichwort: Cloud) und Autonomiemaximierung individuell und leichter skalierbar, wartbar und erweiterbar zu machen. Was als Monolith nur schwer zu managen ist oder wäre, wird durch Microservices besser nutzbar und adaptierbar. Jeder (Micro-)Service erfüllt im Sinne der fachlichen Logik dabei genau eine Funktion. Die wichtigsten Gründe, sich für Microservices zu entscheiden, sind: große Komplexität, hoher Innovationsbedarf und auch die Notwendigkeit, eine Anwendung skalierbar und beherrschbar zu machen.
Ein Beispiel: Smartstore liefert Ihnen das Plugin „MegaSearch“, um Ihre große Sortimentspalette und Produktvielfalt beherrschbar zu machen. Und wenn Sie diese Art der Suche nicht überzeugt, können Sie sie beliebig erweitern oder natürlich auch gegen eine andere am Markt erhältliche oder selbstentwickelte Lösung austauschen.
Was macht die Microservices-Architektur aus und brauche ich diese?
Beim Einsatz von Microservices arbeiten im Gegensatz zum Monolithen viele Bausteine unabhängig voneinander. Diese Architektur bringt einige Vorteile mit sich:
- Optimierte Organisation: Die Funktion jeder Komponente ist klar abgegrenzt von den Aufgaben anderer Module. Dies verhindert Überschneidungen und verbessert auch die gesamte Organisation.
- Entkopplung: Autonome Einheiten können Sie einfacher neu konfigurieren, um auch unterschiedliche Anforderungen angemessen zu erfüllen. Darüber hinaus können Sie einzelne Funktionen, wenn sie dringend benötigt werden, auch besonders schnell in Kraft setzen.
- Gute Performance: Abhängig davon, wie gut die Microservices strukturiert und organisiert sind, wird eine gute Performance ebenfalls gefördert. Damit ist es z.B. möglich, bei Bedarf einzelne Komponenten isoliert zu skalieren.
- Weniger Fehler: Zwischen den einzelnen Microservices gibt es Grenzen. Und so sind auch Fehler auf einzelne Komponenten beschränkt.
Dennoch gibt es im Hinblick auf Microservices auch einige Nachteile zu beachten:
- Es besteht ein größerer operativer Aufwand: Da Microservices meistens unabhängig voneinander deployt werden, erhöht sich auch der Abstimmungsaufwand.
- Berücksichtigung von Querschnittsthemen: Natürlich gibt es in allen auf Microservices basierenden Anwendungen auch übergreifende Anforderungen. Um diesen gerecht zu werden, müssen entweder Querschnittskomponenten erstellt werden oder auch erhöhter Aufwand in Kauf genommen werden (beispielsweise bei Testphasen).
Ok. soweit verstanden, aber was hat es mit dieser monolithischen Architektur auf sich?
Monolith kommt aus dem Altgriechischen und bedeutet so viel wie (großer) einheitlicher Stein. Solche monolithischen Anwendungen bestehen aus einer einzigen Einheit, wo sämtliche Funktionalitäten integriert sind. Sie lassen sich nur schwer durch Dritt-Systeme erweitern, was zwar Vorteile, aber auch einige Nachteile mit sich bringt:
Die Vorteile im Rahmen einer Monolithischen Anwendung:
- Leichtere Handhabung von Querschnittsthemen: Die meisten Anwendungen müssen neben ihrer eigentlichen Funktion auch eine Menge übergeordneter Aufgaben und Bestimmungen erfüllen – z.B. im Hinblick auf Sicherheitsfunktionen oder Datenprotokolle. Dadurch, dass alles über eine einzige Anwendung läuft, ist es auch einfacher, die einzelnen Programmteile an die globalen Richtlinien anzupassen.
- Bessere Performance: Oftmals ist die Performance der Programme besser, da ein Shared-Memory-Access schneller abläuft als modular aufgebaute Interprozesskommunikation (IPC).
- Geringerer operativer Aufwand: Wenn nur eine einzige Anwendung existiert, muss auch nur diese getestet, kontrolliert und gewartet werden. Darüber hinaus ist das Deployment ebenfalls weniger komplex.
Diesen Pluspunkten stehen jedoch auch Nachteile gegenüber:
- Hohe Komplexität: Monolithisch aufgebaute Programme sind vielfach schwer zu verstehen und managen, da bei vielen Funktionen Abhängigkeiten und Nebeneffekte vorkommen.
- Enge Verflechtung: Die einzelnen Programmteile sind fest miteinander verbunden. Je weiter die Entwicklung der Anwendung vorankommt, desto komplizierter und aufwendiger wird es auch, einzelne Teile davon zu isolieren, um sie beispielsweise gesondert zu skalieren oder den Code zu warten.
Ist es dann so, dass Smartstore in Kombination mit der Microsoft .NET Microservices-Architektur zu einer Plattform und Infrastruktur wird?
Ja, genau so ist es. Die Optionen, die Sie in Kooperation mit Smartstore und Microsoft Azure Kubernetes Service (AKS) für Ihre Geschäftsprozesse erhalten, vergrößern Ihre Chance, endlich die angestrebten innovativeren Geschäftsmodelle zu realisieren. Und ganz gleich, ob Sie einen klassischen Online-Shop als B2B oder B2C betreiben, und ob Sie IoT-Anwendungen, Car Commerce oder aber Voice Commerce realisieren wollen: Mit Microsoft Azure Cognitive Services stehen Ihnen noch weitere Microservice-Dienste zur Verfügung, wie z.B. Spracherkennung und -verständnis, Gesichtserkennung, Emotions- und Videoerkennung möglich, um ein paar davon zu nennen. In der Kombination Smartstore und Microsoft Azure sind Ihre Möglichkeiten somit nahezu grenzenlos.