Schnellere Feature-Entwicklung mit einer Service-Architektur
Um eine Microservices-Architektur aufzubauen, muss man zunächst einmal Microservices haben. Aber was sind Microservices? Im Wesentlichen sind Microservices kleine, autonome Softwareanwendungen, die darauf ausgelegt, eine spezifische Aufgabe besonders gut zu meistern. Aus Sicht der Softwareentwicklung sind sie nichts Besonderes. Es ist die Denkweise, die Microservices definiert - und den daraus resultierenden Fokus, Umfang und die Eigenschaften bedingt.
Das Denken in Microservices bekämpft die Herausforderungen und Probleme, die viele Unternehmen bei der Entwicklung monolithischer Anwendungen haben. Selbst bei guten Entwicklungspraktiken kann es bei großen monolithischen Codebasen äußerst schwierig sein, die Weiterentwicklung aktiv voranzutreiben, neue Funktionen einzubauen und sich an Änderungen anzupassen. Wo müssen neue Funktionen implementiert werden? Gibt es bereits ähnliche Funktionen? Welche Teile der Anwendung sind gekoppelt und müssen geändert werden? Die Entwicklung wird zunehmend schwieriger und komplexer, so dass große monolithische Anwendungen stagnieren oder sogar in ihrem Fortschritt einfrieren.
Microservices sind kleine, unabhängige Dienste, deren Servicegrenzen sich an den Unternehmensgrenzen orientieren. Diese expliziten Grenzen verhindern, dass sie über ihren Rahmen hinauswachsen. Microservices sind eigenständige Dienste, die als unabhängige Einheiten betrachtet werden können. Sie können unabhängig voneinander entwickelt und eingesetzt werden. Daraus ergeben sich viele und vielfältige Vorteile, die ihre Grundlage in verteilten Systemen haben. Zu den wichtigsten Vorteilen gehören:
Jetzt haben wir die Vorteile von Microservices verstanden und möchten gerne loslegen. Aber wie strukturieren wir Softwareanwendungen in kleine, autonome Dienste? Was müssen wir dabei beachten? Zwei Schlüsselaspekte, die einen guten Microservice ausmachen, sind lose Kopplung und hoher Zusammenhalt - zwei Aspekte, die eng mit der Gesamtarchitektur zusammenhängen, die wir anstreben.
Das Aufsetzen unserer Kundenprojekte nach dem Cloud-Native-Ansatz hilft uns dabei, komplexe Systeme schnell und effizient zu entwickeln und kurze, effiziente Release-Zyklen umzusetzen. Die folgenden Projekte sind ein kleiner Auszug aus unseren vergangenen Cloud-Native-Projekten.