Wechsel von monolithischen Web-Apps zu Microservices

Jeder, der als Chef arbeitet Technologie Officer (CTO) oder Product Owner einer Webanwendung werden sich nur allzu bewusst sein, welche Herausforderung diese Rollen darstellen können. Sie können mit einer ganzen Reihe technischer Probleme sowie geschäftlichen Anforderungen konfrontiert sein.

Es kann schwierig sein, die gewünschten Änderungen umzusetzen, wenn Sie mit einem wachsenden Rückstand, anspruchsvollen Kunden und überehrgeizigen Roadmaps von Leuten zu tun haben, die sich mit Softwareentwicklung nicht auskennen. 

Aus diesem Grund ist es für CTOs äußerst wünschenswert, den Wert bestehender Anwendungen zu erschließen. Eine der effektivsten Möglichkeiten hierfür ist der Wechsel von der monolithischen Architektur zu Microservices. Es ist keine einfache Aufgabe, aber die Vorteile können enorm sein.

Herausforderungen rund um monolithische Webanwendungen

Eine monolithische Webanwendung wird als einzelne, eigenständige Einheit erstellt, was für ein kleines Entwicklerteam eine großartige Möglichkeit sein kann, eine Anwendung auf den Markt zu bringen. Es umfasst alle Features, Funktionen und Module der Anwendung in einer Codebasis und die gesamte Anwendung wird als eine einzige Einheit entwickelt, getestet und bereitgestellt. Monolithische Webanwendungen zeichnen sich durch enge Kopplung und mangelnde Modularität aus und folgen häufig einem Modell-, Ansichts- und Controller-Muster mit Ebenen für die Handhabung der Benutzeroberfläche, der Geschäftslogik und des Datenzugriffs.

Leider sind Monolithen mit einer Reihe von Herausforderungen verbunden, insbesondere wenn die Anwendung wächst und skaliert:

Teure und ineffiziente Serverskalierung – Wenn Sie Ihren Monolithen skalieren müssen, um mehr Benutzer oder mehr Anfragen zu unterstützen, ist die Antwort normalerweise eine vertikale Skalierung – also die Bereitstellung eines leistungsstärkeren Servers. Dies ist eine teure Art der Skalierung und hat eine Obergrenze. Erschwerend kommt hinzu, dass Sie Ihre Hardware so skalieren müssen, dass sie den Anforderungen des anspruchsvollsten Elements Ihrer Anwendung gerecht wird. Eine horizontale Skalierung ist mit Monolithen möglicherweise nicht möglich, da sie oft zustandsbehaftet sind und Daten im Speicher halten.

Fehler können das gesamte System zum Absturz bringen – Aufgrund der engen Kopplung der verschiedenen Module in einer monolithischen Anwendung kann ein Absturz in einem Teil der Anwendung den gesamten Server zum Absturz bringen.

Bereitstellungen können zu Ausfallzeiten führen – Da jede Änderung an einem Modul oder einer Funktion die Neukonstruktion und Neubereitstellung der gesamten Anwendung erfordert, können Bereitstellungen zu Ausfallzeiten führen und das Testen aller Bereiche der Anwendung erfordern.

Entwicklungsressourcen können schwierig zu verwalten sein – Vielleicht ist eine der größten Herausforderungen bei Monolithen der menschliche Faktor. Änderungen an einer Anwendung erfordern oft Änderungen an allen drei Schichten des MVC-Musters, was bedeutet, dass neue Entwickler alles verstehen müssen, um Änderungen vornehmen zu können. Und es ist fast unmöglich, Entwickler zu finden, die die verschiedenen erforderlichen Fähigkeiten beherrschen.

Das Ergebnis ist, dass Sie entweder die eng gekoppelte Arbeit zwischen spezialisierten Entwicklern koordinieren müssen oder von Ihren Entwicklern erwarten, dass sie in jeder Disziplin hervorragende Leistungen erbringen. Da es von entscheidender Bedeutung ist, dass Ihre Geschäftslogik und Datenzugriffsebenen absolut solide sind, kann dies oft dazu führen, dass ein Team von Ingenieuren gut in Logik und Datenstrukturen ist, sich aber nicht gerne mit den Besonderheiten der Benutzeroberfläche auseinandersetzt. Letztlich ist es oft die Benutzeroberfläche, die darunter leidet – denn hier sehen Ihre Endbenutzer den Wert Ihres Produkts.

Die Rolle von Microservices

Diese Mängel sind der Grund für den Aufstieg von Microservices, einer Softwarearchitektur, die eine Anwendung als Sammlung kleiner, unabhängiger und lose gekoppelter Dienste strukturiert. Jeder Dienst ist für eine bestimmte Geschäftsfunktion verantwortlich und kommuniziert mit anderen Diensten über einfache Protokolle wie HTTP. Microservices sind skalierbar, belastbar und fehlertolerant und können über eine zustandslose REST-API mehrere Frontend-UI-Anwendungen bedienen.

Ein solcher Ansatz bietet viele Vorteile:

Einfachere und kostengünstigere Serverskalierung – Einer der größten Vorteile von Microservices ist ihre Skalierbarkeit. Sie können die horizontale Skalierung gezielt auf die spezifischen Bereiche der Anwendung anwenden, die sie benötigen. Wenn beispielsweise bei einem Chat-Dienst eine hohe Datenverkehrsauslastung auftritt, können Sie einen anderen Server hochfahren, um mehr Anfragen zu verarbeiten und mehr Redundanz hinzuzufügen. Wenn der Datenverkehr nachlässt, können Sie die Hardware skalieren, sodass Sie nur für die Ressourcen bezahlen, die Sie nutzen.

Erhöhte Widerstandsfähigkeit – Microservices sind auf Widerstandsfähigkeit ausgelegt; Da jedes Modul unabhängig ist, wirkt sich der Ausfall eines Moduls nicht auf die gesamte Anwendung aus. Wenn beispielsweise Ihr Chat-Dienst ausfällt, können Ihre Benutzer den Rest Ihrer Anwendung wahrscheinlich weiterhin verwenden. 

Agilere und flexiblere Entwicklung – Microservices ermöglichen eine größere Flexibilität bei Entwicklung und Bereitstellung. Entwickler können unabhängig voneinander an einzelnen Diensten oder UI-Anwendungen arbeiten und so unabhängig arbeiten und ihre Stärken ausspielen.

Technologievielfalt – Monolithische Webanwendungen werden typischerweise mit einem einzigen Technologie-Stack erstellt. Dies kann die Flexibilität und Innovation des Entwicklungsteams einschränken. Im Gegensatz dazu können Microservices einen polyglotten Ansatz verfolgen, der es Entwicklern ermöglicht, das beste Tool für die jeweilige Aufgabe auszuwählen. 

Einfache Wartung – Die Wartung monolithischer Webanwendungen kann schwierig sein, wenn die Codebasis wächst. Im Gegensatz dazu sind Microservices kleiner und besser verwaltbar, was Wartung und Updates einfacher macht und zu weniger technischen Schulden führt.

Den Schalter machen

Der Wechsel zu einer Microservices-Architektur kann transformativ sein, aber die Umgestaltung einer gesamten Anwendung kann wie eine entmutigende Aufgabe erscheinen. Eine gängige Lösung ist das sogenannte Strangler-Muster. Erstellen einer Fassaden-API, die Anfragen an das alte System weiterleitet und jeden Dienst schrittweise ersetzt.

Jeder CTO sollte darüber nachdenken, wie Microservices miteinander kommunizieren. Ein wesentliches Merkmal von Microservices ist, dass sie lose gekoppelt sein sollten. Wenn Sie nicht aufpassen, können Sie Ihre Microservices am Ende so aufbauen, dass sie stark voneinander abhängig sind, was im Grunde zu einem verteilten Monolithen führt. 

Auch die richtigen Leute sind wichtig. Zu den häufigsten Herausforderungen im Zusammenhang mit der Umgestaltung einer Anwendung in Microservices gehören die Weiterqualifizierung bestehender Teammitglieder oder die Suche nach neuen Talenten für die Umsetzung der Änderungen. Daher ist es wichtig, die richtigen Leute einzustellen oder mit Spezialisten zusammenzuarbeiten, um einen reibungslosen Übergang zu gewährleisten.

Der Wandel von monolithischen Webanwendungen hin zu einer Microservice-Architektur wird durch den Bedarf an skalierbareren, flexibleren und belastbareren Anwendungen vorangetrieben, die den Anforderungen moderner Benutzer gerecht werden können. Dieser Wandel wird sich fortsetzen, da Unternehmen versuchen, den größtmöglichen Nutzen aus ihren Webanwendungen zu ziehen.

Jon Hewines

Jon Hewines ist technischer Direktor bei Product and Service Design Consultancy, Full Clarity, wo er ein Team talentierter UX-Designer, Software-Ingenieure und Produktmanager bei der Entwicklung robuster und intuitiver Webanwendungen leitet. In den letzten 15 Jahren hat Jon digitale Produkte für Kunden entwickelt, die von kleinen Startups bis hin zu globalen Konzernen wie BP und RB reichen.

Großbritanniens Aufwertungsplan

Bernstein Coster • 26. April 2022

Laut einer heute von ClickUp, der All-in-One-Produktivitätsplattform, veröffentlichten Studie könnte Remote-Arbeit über 13 Millionen Briten* ermöglichen, die Gelegenheit zu nutzen, außerhalb der großen Städte zu leben und zu arbeiten, und so dazu beitragen, wirtschaftliche Möglichkeiten in ganz Großbritannien zu verbreiten.

Die Helden der Technik

Steven Johnson • 26. April 2022

Wir neigen dazu, große Wirtschaftsführer zu verehren, aber es gibt Tausende von Innovatoren, deren Ideen – von winzigen Funktionen bis hin zu komplizierten Algorithmen – unser Leben einfacher, gesünder, sicherer und bequemer gemacht haben. Lernen Sie Hidden Heroes kennen, eine neue Publikation, die entwickelt wurde, um ihre Geschichten zu erzählen und ihnen den Tribut zu zollen, den sie verdienen.