Was sind die Vorteile von Microservices und zahlen sie sich für Ihr Unternehmen aus?
Veröffentlicht: 2022-01-12Das Konzept der Microservices, ein Ansatz zum Entwerfen einer Softwareanwendung als eine Reihe kleiner Dienste, gibt es mindestens seit 2015. Microservices bieten Vorteile wie die unabhängige Bereitstellung und Skalierbarkeit von Komponenten und sind heute der letzte Schrei. Dies liegt daran, dass sich diese Microservices-Vorteile in unglaublich schnelleren Softwareentwicklungsgeschwindigkeiten niederschlagen. Da die Verbraucher ihre Vorlieben und Verhaltensweisen schnell ändern, können die Anwender von Microservices Schritt halten. Das Leben ist jetzt großartig, sagen sie. Ganze 56 % der Unternehmen, die an einer kürzlich durchgeführten IMB-Umfrage teilgenommen haben, planen, in den nächsten 24 Monaten einen Microservices-Ansatz einzuführen.
Fast 80 % der derzeitigen Benutzer geben an, dass ihr Unternehmen wahrscheinlich die Investitionen in Microservices verstärken wird. Die Vorteile von Microservices haben Netflix, Amazon, eBay, Twitter und viele andere Technologiegiganten dazu veranlasst, von einer monolithischen auf eine Microservices-Architektur umzusteigen. Aber sollte Ihr Unternehmen Microservices nutzen? Es hängt vom Kontext ab und davon, ob die Vorteile von Microservices die Nachteile für Ihre Anwendung überwiegen. Dieser Blog bietet einen Überblick über einen Microservices- vs. monolithischen Ansatz und fünf Hauptvorteile der Verwendung einer Microservices-Architektur. Es teilt auch einige der Microservices-Erfahrungen von ITrex und bietet Tipps, wann Unternehmen Microservices (nicht) verwenden sollten. Eintauchen.
Definition von Microservices und Vergleich mit monolithischer Architektur
Was ist eine Microservices-Architektur ? Ein Microservices-Stil ist ein Ansatz zur Entwicklung von Cloud-nativen Softwareanwendungen als eine Suite kleiner Komponenten oder Dienste, die um einen einzigen Geschäftsablauf herum entwickelt wurden und zusammenarbeiten. Im Wesentlichen sind Microservices Teil einer grundlegenden Umstellung auf DevOps, eine Kultur, in der Entwicklungs- und IT-Betriebsteams eng zusammenarbeiten und Automatisierungstools verwenden, um schneller Ergebnisse zu liefern.
Mikrodienste:
- werden eigenverantwortlich entwickelt,
- verwenden ihre eigene Datenbank und können in verschiedenen Sprachen geschrieben sein,
- über APIs mit leichtgewichtigen Protokollen wie HTTP, Message Brokers oder Event-Streaming kommunizieren und
- Ausführen einer bestimmten Geschäftsfunktion.
Beispielsweise kann eine auf Microservices basierende E-Commerce-Anwendung über unabhängige Dienste verfügen, die für Produktbilder, Benutzerprofilverwaltung, Suche, Bestandsprüfung, Zahlungsabwicklung und Versand verantwortlich sind. Das Frontend (die kundenseitige Seite der Website) ist vom Backend (der geschäftsseitigen Seite) entkoppelt, sodass sie separat angepasst und verwaltet werden können. Wenn Sie ein Beispiel von Amazon nehmen, könnte eine Microservices-Architektur überwältigend, wenn nicht gar beängstigend aussehen.
Ohne den Einsatz einer Microservices-Architektur hätte sich Amazon jedoch kaum zu einem der wertvollsten Unternehmen der Welt entwickelt (bewertet mit einer Marktkapitalisierung von 1,694 Billionen US-Dollar im Dezember 2021). Die Entscheidung, die Vorteile von Microservices zu nutzen, wurde bereits in den frühen 2000er Jahren getroffen, als Amazon erkannte, dass es aufgrund langsamer Entwicklung und Codierungsproblemen nicht mit der Geschwindigkeit des Kundenstammwachstums skalieren konnte.
Netflix erkannte Ende der 2000er Jahre die Vorteile einer Cloud-basierten Microservices-Architektur, nachdem es aufgrund einer massiven Datenbankbeschädigung einige Tage lang keine DVDs an Kunden versenden konnte. Nachdem sie ihre Anwendung in über 700 Microservices aufgeteilt haben, sind die Netflix-Ingenieure heute in der Lage, Code tausende Male pro Tag bereitzustellen, wodurch das Unternehmen täglich rund 250 Millionen Stunden an Inhalten an mehr als 200 Millionen Mitglieder weltweit streamen kann. Welche Architektur haben diese Tech-Stars und viele andere Unternehmen zuvor in den Tagen vor der Cloud verwendet? Sie verwendeten Monolithen.
Was ist eine monolithische Architektur?
Eine monolithische Anwendung wird als einzelne Einheit erstellt, die alle Komponenten kombiniert, einschließlich einer clientseitigen Benutzeroberfläche, serverseitigen Operationen und einer Datenbank. Typischerweise eine monolithische Architektur:
- hat eine einzige Codebasis für alle Funktionen,
- ist eng gekoppelt, und
- verwendet zentralisierte Daten.
Eine E-Commerce-Anwendung, die mit einem monolithischen Ansatz entwickelt wurde, würde aus eng gekoppelten Front-End- und Back-End-Diensten bestehen, die als eine Einheit bereitgestellt werden, was bedeutet, dass alle Anpassungen Änderungen in der Codebasis und der Front-End-Plattform erfordern würden (siehe Diagramm unten für Vergleich).
Monolithische Anwendungen sind noch lange nicht tot. Eigentlich können sie immer noch eine gute Wahl sein, weil sie oft einfacher und billiger zu bauen sind (zumindest in ihren frühen Tagen). Sie haben jedoch Nachteile. Eine Änderung an einem Teil, sei es zu Upgrade- oder Skalierungszwecken, erfordert häufig den Neuaufbau und die erneute Bereitstellung des gesamten Systems.
Ebenso kann das gesamte System durch ein sich schlecht benehmendes Teil zum Absturz gebracht werden, was bedeutet, dass Monolithen zerbrechlich sind. Monolithen sind auch schwierig zu warten, wenn sie wachsen, und die Integration mit Tools von Drittanbietern ist auch keine Freude. Diese Nachteile sind im heutigen disruptiven Marktumfeld, in dem Unternehmen schnell auf Veränderungen reagieren sollten, um zu überleben und zu gedeihen, schwer zu ignorieren. Daher die Aufregung um die Vorteile von Microservices, die von DevOps-Teams erstellt werden.
5 Hauptvorteile von Microservices
1. Unabhängiger Einsatz
Dies ist vielleicht der wichtigste Vorteil von Microservices, zumindest laut Sam Newman, einem der frühen Pioniere von Microservices. Änderungen an einer Anwendung vorzunehmen, um die Leistung zu verbessern oder eine neue Funktion als Reaktion auf neue Benutzeranforderungen hinzuzufügen, ist mit eigenständigen Microservices ein Kinderspiel. Jeder Dienst kann geändert und aktualisiert werden, ohne das gesamte System zu berühren. Sie können auch unabhängig voneinander skaliert werden, wenn ein Feature durch zu viele Anfragen zu stark belastet wird. Sie können beispielsweise nur Ihren Zahlungsverarbeitungsdienst skalieren, wenn Sie mehr Zahlungen erhalten, ohne den Ressourcenverbrauch durch andere Dienste zu erhöhen. Auf diese Weise benötigt der Prozess weniger Infrastruktur und führt zu Kosteneinsparungen.
2. Geringer Explosionsradius des Versagens
Die lose Kopplung einer Microservices-Architektur bietet auch einen weiteren Vorteil von Microservices – bessere Ausfallsicherheit. Klare Grenzen zwischen den Diensten, gepaart mit ihrer Mikrogröße, begrenzen die Auswirkungen neuer Releases und gewährleisten die Fehlerisolierung. Ein Ausfall in einem Dienst führt nicht dazu, dass nicht zusammenhängende Funktionen heruntergefahren werden, während der Rest des Systems intakt bleibt und den Benutzern weiterhin Dienste bereitstellt.
3. Datenisolierung
Dies ist ein dritter Vorteil, den Microservices bieten, wenn sie richtig ausgeführt werden. Datenhoheit pro Komponente ist ein wesentliches Merkmal von Microservices. Eine Microservices-Architektur ermöglicht die klare Abgrenzung von Diensten, die mit Daten in Berührung kommen, was entscheidend ist, insbesondere wenn das Unternehmen die Vorschriften für Gesundheitsdaten oder die DSGVO einhalten muss.
4. Einsatz der richtigen Technologie
Da monolithische Anwendungen eine einzige Codebasis haben, ist es schwierig, einen technischen Ansatz für jede Funktionalität anzupassen, und es wird oft nach einem Kompromiss gesucht. Microservices hingegen sind standardmäßig auf Geschäftsfunktionen ausgelegt, sodass Teams die beste verfügbare Technologie für eine bestimmte Funktionalität auswählen können, um das Beste daraus zu machen. Denn Microservices können für unterschiedliche Komponenten unterschiedliche Technologien oder Programmiersprachen verwenden. Microservices vereinfachen auch die Übernahme der neuesten Technologie oder die Integration mit Tools von Drittanbietern nach Bedarf. Das Fehlen einer Anbieterbindung ist ein weiterer Vorteil von Microservices, der sich natürlich aus seiner lose gekoppelten Architektur ergibt.
5. Effizienz
Der Microservices-Ansatz ermöglicht es Unternehmen, kleine, funktionsübergreifende Teams rund um einen Service oder eine Suite von Services aufzubauen, die agil arbeiten können. Dieses Modell minimiert Übergaben, wenn ein Team warten muss, bis ein anderes Team seine Aufgabe abgeschlossen hat, sei es bei der Bereitstellung oder beim Testen, bevor es mit der Arbeit beginnen kann. Ohne Abhängigkeit von einem anderen Team beschleunigt sich die Entwicklungsgeschwindigkeit. Anwender berichten laut der IMB-Umfrage unter 1.200 IT-Führungskräften und Entwicklern von zahlreichen Vorteilen der Nutzung von Microservices. Zu den wichtigsten Microservices-Vorteilen zählen: 30 % – Höhere Kundenzufriedenheit 29 % – Bessere Sicherheit von Unternehmens-/Kundendaten 29 % – Kürzere Produkteinführungszeit 28 % – Verbesserte Anwendungsleistung 27 % – Größere Flexibilität bei der Skalierung von Ressourcen oder Rückgang um 26 % – Verbesserte Mitarbeiterproduktivität Gibt es Herausforderungen bei Microservices? Nun, wie ein beliebtes Zitat sagt, sind Microservices kein kostenloses Mittagessen. Weiter lesen.

Das Schlechte an Microservices
1. Komplexität
Die inhärente Komplexität von Microservices steigt mit der Anzahl der Services. Diese Komplexität ist vielfältig und auf Folgendes zurückzuführen:
- Eine Top-Down-Steuerung auf technologischer und operativer Ebene ist unmöglich
- Testen ist schwierig, und es wird nie zu viel Testautomatisierung geben
- Die Implementierung von Interkommunikation ist schwierig, daher werden talentierte Entwickler benötigt
- Die protokollierte Datenmenge ist zu groß, was zu Inkonsistenzen führen kann
- Bei neuen Versionen können Kompatibilitätsprobleme auftreten
- Es gibt Schwierigkeiten bei der Bereitstellung der richtigen Menge an Ressourcen
2. Kosten
Microservices bieten Unternehmen mehr Möglichkeiten, Geld zu verdienen, aber nicht zu sparen. Abgesehen von den Kosten für die Einstellung von Entwicklern, die in der Lage sind, eine komplexe Microservices-Umgebung aufzubauen, fallen Cloud- und API-Rechnungen an. Die gute Nachricht ist, dass die laufenden Kosten erheblich optimiert werden können, da Microservices On-Demand-Ressourcen auf Pay-as-you-go-Basis nutzen.
3. Sicherheitsrisiken
Die Hälfte der Befragten in der IBM-Umfrage nannte Sicherheit als eine der größten Herausforderungen, denen sie auf ihrem Weg zur Einführung von Microservices gegenüberstanden. Die Sicherheit muss von Anfang an integriert werden, da jeder Microservice seine eigenen Einstiegspunkte hat, um über verschiedene Infrastrukturebenen mit anderen zu kommunizieren, was dazu führt, dass Anwendungen Angriffen stärker ausgesetzt sind. Außerdem erhöht die Skalierung der Infrastruktur das Risiko, die Kontrolle und Sichtbarkeit von Anwendungskomponenten zu verlieren.
Wann man Microservices (nicht) verwenden sollte
Und zum Schluss unsere letzte Frage: Wann lohnt sich die Microservices-Architektur? Während die Begeisterung für Microservices als natürliche Ergänzung für Cloud-native Anwendungen gerechtfertigt ist, sollten sie nicht Ihr Standardstil sein. Die Literatur drückt es einfach aus: Beginnen Sie mit einem Monolithen und teilen Sie ihn auf, wenn Sie auf Probleme mit der Skalierbarkeit oder dem Ressourcenverbrauch stoßen oder irgendetwas anderes, das den Weg der Microservices rechtfertigt.
Hier sind unsere wichtigsten Tipps, wann Sie Microservices NICHT verwenden sollten:
1. Wenn Sie ein Startup sind, sind Microservices eine schlechte Idee. Es ist klüger, mit einer monolithischen Anwendung zu beginnen und sie in kleinere Komponenten aufzuteilen, wenn es für ein Zwei-Pizza-Team zu schwierig wird. Sie möchten billige Experimente durchführen, anstatt viel Zeit, Mühe und Geld in den Aufbau einer komplexen Architektur für ein Produkt zu investieren, dessen Kundenwert noch validiert werden muss. Monolithe sind eine perfekte Möglichkeit, MVPs zu testen (und zu verwerfen), um schnell zu erfahren, was Ihren Kunden einen Mehrwert bringt. Wie Martin Fowler, ein weiterer angesehener Microservices-Guru, sagt: i) Fast alle erfolgreichen Microservice-Geschichten begannen mit einem Monolithen, der zu groß wurde und zerlegt wurde. ii) In fast allen Fällen, in denen ich von einem System gehört habe, das von Grund auf als Microservice-System erstellt wurde, ist es in ernsthafte Schwierigkeiten geraten. Hinweis: Wenn die Produktdomäne unklar ist, sollten Sie auch keine Microservices verwenden, wenn Sie anfangen. Es könnte einfach zu früh sein, sich in komplexe Architekturentscheidungen zu stürzen, und es besteht die Möglichkeit, dass Ihr Ansatz zur Einrichtung von Kommunikation und Grenzen weit daneben liegt, wenn Ihr Projekt ausgereift ist.
2. Microservices sind keine gute Wahl für eine Lösung, die nicht komplex ist und von einem relativ kleinen Team gewartet werden kann. Die Einführung einer komplexen Microservices-Architektur für das Veranstaltungsplanungstool Ihres Unternehmens mag Ihre Entwickler in der Tat amüsieren, aber ist es den ganzen Aufwand wert? Microservices sind in erster Linie darauf ausgelegt, ein Problem zu lösen: Komplexität. Wie Martin Fowler feststellt: „Denken Sie nicht einmal an Microservices, es sei denn, Sie haben ein System, das zu komplex ist, um es als Monolith zu verwalten.“
3. Entscheiden Sie sich nicht für Microservices, wenn Ihre Anwendung zu klein ist, um sie zu rechtfertigen. Müssen Ihre Warenwirtschafts- oder Einkaufssysteme auf Microservices umgestellt werden, wenn sie genau das tun, was sie sollen? Auch hier besteht die Idee der Verwendung von Microservices darin, eine komplexe Anwendung in eine Reihe kleinerer Dienste aufzuteilen. Das Zerlegen eines bereits kleinen und unkomplizierten Codes würde nur die Komplexität erhöhen – jetzt müssen Sie alle Bereitstellungs-, Interoperabilitäts- und Debugging-Probleme mit einer Vielzahl von Artefakten bewältigen, anstatt die gesamte Einheit auf gute altmodische Weise bereitzustellen.
OK, aber wann sollten Microservices eingesetzt werden, um ihre Vorteile zu nutzen?
Microservices sind sinnvoll, wenn eine der obigen Aussagen falsch ist. Mit anderen Worten:
- Wenn sich Ihr Produkt zu etwas Komplexem entwickelt , das gezähmt werden muss, oder wenn Sie mit Änderungen Schritt halten und wichtige Funktionen hinzufügen möchten, die sonst aufgrund von Engpässen in der monolithischen Architektur nicht implementiert werden können.
- Wenn Sie ein großes und komplexes Produkt mit einem definierten Umfang von Grund auf neu erstellen. Wann immer ein Unternehmen Dutzende von Entwicklern organisieren möchte, um eine umfangreiche Lösung mit einem klaren Satz von Funktionen zu erstellen, sollte es erwägen, kleine, funktionsübergreifende Teams einzurichten, die jeweils für eine einzelne Komponente verantwortlich sind. Auf diese Weise kann jedes Team unabhängig arbeiten, mit dedizierten Personen, die sich um das API-Management, Datenpipelines, Schemata und andere Funktionen kümmern.
Ein faires, reales Beispiel aus dem ITRex-Portfolio wäre ein internes Cybersicherheitstool, das der Kunde in eine Security-as-a-Service-Plattform umwandeln wollte. Microservices passten perfekt zu diesem Projekt, da eine monolithische Architektur einfach nicht die Skalierbarkeit bieten kann, die eine SaaS-Lösung benötigt, um die wachsende Zahl von Kunden zu bedienen, oder die Flexibilität, sich weiterzuentwickeln und Hackern immer einen Schritt voraus zu sein.
Ein weiteres beispielhaftes Projekt war eine KI-gestützte Big-Data-Plattform für einen globalen Einzelhändler. Unser Kunde wollte eine Cloud-agnostische Lösung, die von Grund auf neu entwickelt wurde. Es war von Anfang an klar, dass die Plattform Tonnen von Daten verarbeiten würde und skalierbar ausgelegt sein sollte, um neue Datenquellen zu berücksichtigen, die in Zukunft hinzugefügt werden. Wir mussten auch die Notwendigkeit berücksichtigen, die Kommunikation mit mehreren externen Diensten aufzubauen. Daher war es auch eine natürliche Strategie, die Vorteile von Microservices in diesem Projekt zu realisieren. Die Microservices-Architektur ermöglichte uns die reibungslose Einführung dieses komplexen Systems mit Kubernetes für die Orchestrierung von Microservices und APIs.
Und es gab einen KI-betriebenen Fitnessspiegel, der mit 3D-Kameras ausgestattet war, und ein ML-Modell, das mit IoT-Sensoren ausgestattet war, die an der Ausrüstung des Benutzers angebracht waren. Seine Hauptkomponenten, darunter ein Admin-Panel, eine Android-App und ein Regelverwaltungssystem, wurden von verschiedenen Teams in verschiedenen Phasen des Projekts erstellt, wobei jedes einen anderen Code und eine andere Architektur verwendete. Als die Komplexität, sie alle zu handhaben, überwältigend wurde, wurde uns klar, dass wir ein Backend für die zentrale Verwaltung aufbauen mussten. Und wir haben sie in Microservices umgewandelt, ihren Code neu gestaltet und neue Datenbanken erstellt. Es gab noch weitere Vorteile der Verwendung eines Microservices-Ansatzes, wie die Vermeidung von doppeltem Code oder doppelten Funktionen.
Unserer Erfahrung nach ist es daher vorzuziehen, Microservices zu verwenden, wenn Sie wachsende Datenmengen verwalten, komplexe Interoperationen handhaben oder sicherstellen müssen, dass Ihr System flexibel genug ist, um sich mit dem Unternehmen weiterzuentwickeln.
Endnote
Die Microservices-Revolution entfaltet sich, da Unternehmen die Vorteile von Microservices nutzen, um sich einen Marktvorteil zu verschaffen. Die Vorteile von Microservices ermöglichen es Unternehmen, inmitten von Störungen, die zur neuen Normalität geworden sind, flink und agil zu sein. In der Lage zu sein, bessere Software schneller bereitzustellen, macht sie bereit für alles, was nach dem „Was kommt als Nächstes“ kommt. Bevor Sie nachziehen, ist es nur wichtig, dass Sie wissen, welche Microservices-Vorteile Ihrem Unternehmen zur Verfügung stehen können und ob der Aufwand gerechtfertigt ist. Abgesehen davon können Microservices Wunder bewirken.
Sind Sie immer noch verwirrt, ob Ihr Unternehmen auf die Vorteile von Microservices hereinfallen sollte? Kontaktieren Sie die ITrex-Berater. Wir helfen Ihnen dabei, es herauszufinden.
Ursprünglich am 10. Januar 2022 unter https://itrexgroup.com veröffentlicht.
