Microservices & Serverless Infrastructure

Worum geht es?

Strategischer Unterbau für eine moderne und nutzerzentrierte Software-Entwichklung.

Microservices und Serverless sind in aller Munde. Sie versprechen Effizienz, Performance und Geschwindigkeit in der Softwareentwicklung. Continous Integration/Delivery wird (nun endlich) Wirklichkeit. Herauskommt Software, die wartbar, robust und skalierbar in der Cloud sein soll. Was steckt also hinter diesem Hype? Ist es die Innovation in der Softwareentwicklung, auf die so viele gewartet haben?

FaaS: Was ist severless? 

Unter dem Synonym „Serverless“ (oder auch FaaS: Function-as-a-Service) versteht man zunächst eine Mikroservices-Architektur für Software. Gemeint ist eine Architektur, die ein Software-System (einen sogenannten Monolithen) in eine Vielzahl kleiner Dienste unterteilt (Microservices). Dieses wiederum sind unabhängig voneinander („lose Koppelung“) und verfügen u.a. über eine eigene Business- und Datenschicht – und damit auch über eine individuelle Datenbank pro Service. Auch die Codebase pro Microservice kann unterschiedlich sein. So können nicht nur Datenbanken, sondern auch Programmiersprachen und Frameworks nach Belieben gemischt werden (je nachdem, welche Lösung für die betreffende Aufgabe am besten geeignet scheint und wo die Fähigkeiten der jeweiligen Programmierer liegen).

Das wesentliche Merkmal von Microservices ist jedoch die Tatsache, dass diese nur eine Aufgabe verrichten.

Serverless geht noch einen Schritt weiter. Ist die gesamte Software-Infrastruktur aufgeteilt in einzelne Services, die miteinander über Standardschnittstellen interagieren, so können diese Services auch über die Cloud verteilt und genutzt werden. Gerade Services für Standardaufgaben auf der einen Seite (Authentifizierung, Bilderupload etc.) und Spezialaufgaben auf der anderen Seite (Intelligenter Chatbot auf Basis von IBM Watson oder Spracherkennung mit Amazon Alexa) lassen sich heute einfach und günstig von den großen Cloudanbietern nutzen und in die eigene Anwendung einbetten. Eigener Code ist hier nicht erforderlich. Das spart Zeit, Ressourcen und Budget.

Nutzen

Microservices revolutionieren den gesamten Entwicklungsprozess von Software

Der Vorteil liegt auf der Hand: Microservices sind hochgradig effizient in der Entwicklung, Wartung und Aktualisierung. Jeder Microservice kann individuell und unabhängig von den übrigen Services und dem gesamten Software-System in Produktion gebracht werden. Anpassungen und Erweiterungen können zudem im laufenden Betrieb erfolgen. Ist eine Aktualisierung an einem Service erfolgt, kann dieser schnell kompiliert, getestet und mit den gleichen Schnittstellen ausgetauscht werden. Der betroffene Service ist dann bestenfalls für wenige Minuten nicht nutzbar – das Gesamtsystem aber weiterhin erreichbar. Große Unternehmen wie Uber, Netflix und Amazon sind beste Beispiele dafür, wie täglich bis über 100 Services aktualisiert, ergänzt und ausgetauscht werden – im laufenden Betrieb. Lange Ausfälle und große Updates über Nacht mit langwierigen Daten-Migrationszeiten sind damit passé.

Microteams für Microservices

Ein weiterer Vorteil einer Microservice-Architektur liegt in dem überschaubaren Codeumfang – und damit auch in den geringen Entwicklungszeiten und kleinen Teams. Jedes Team arbeitet dabei an seinen Microservices und ist weitgehend entkoppelt von anderen Teams. Dieses Vorgehen erlaubt eine einfache Skalierung agiler Prozesse. Nach der „2-Pizza-Regel“ von Amazon soll ein Team pro Microservice maximal so groß sein, dass es von 2 Pizzen satt werden kann. Eine andere Regel besagt, dass ein Microservice von einem Team binnen von 14 Tagen von „Null an“ produziert und ausgeliefert werden kann.Dass die einzelnen Teams verteilte und die Gesamtprojektsteuerung agil erfolgen kann, erklärt sich hierbei von selbst.

Verteilte System in der Cloud für mehr Performance

Die Aufteilung eines umfangreichen Software-Monolithen in Microservices hilft gegen den Verfall der Architektur, sodass die Systeme auch langfristig wartbar bleiben. Noch ein Vorteil ist, dass Microservices auf Basis von Standardschnittstellen (z.B. RestAPI oder GraphQL) einfach miteinander interagieren können. Diese Standards ermöglichen zum einen verteilte Systeme, aber auch die Nutzung externer Codebase. So bieten die großen Cloudanbieter wie Amazon AWS (Lamda-Services), IBM Bluemix (CloudFunctions), Microsoft (Azure Functions) oder google (Cloud Functions) in der Cloud fertige Services an, die in die eigene Anwendung eingebunden werden können. Darunter befinden sich Services für Spracherkennung, maschinelles Lernen, Chatbots, Authentifizierungen und Payment-Services. Gepaart mit Infrastruktur in der Cloud (wie z.B. Datenbanken in der Cloud) und einer nahezu automatisierten, dynamischen Server-Skalierung je nach Auslastung pro Microservice können ganze Infrastrukturen orchestriert werden, ohne dass eigener Code für Standardaufgaben geschrieben werden muss. Das ist es, was serverless ausmacht. Und das Payment funktioniert dabei ganz einfach und übersichtlich in Abhängigkeit der tatsächlichen Nutzungsfrequenz. So zahlt man – ausgestattet mit einem bei den meisten Anbietern großzügigen Freikontingent (primär für Entwicklung und Testing) nur für die API-Zugriffe pro Service. So können Services, die sehr häufig genutzt werden (man denke an einen Payment-Service eines Shopanbieters in der Vorweihnachtszeit), hoch skaliert werden, während Services, die eher selten genutzt werden, auf langsameren Infrastrukturen „geparkt“ werden (wie beispielsweise Exportfunktionen für Teile der Datenbank, die 1-2x im Monat genutzt werden). Was entfällt, ist die bei virtuellen Maschinen oder eigenen Servern notwendige Skalierung der gesamten Infrastruktur, auch wenn die Performanceanforderungen nur für einen kleinen Teil der Software hoch sind. Hier können insbesondere cloudbasierte Services wesentlich granulärer und damit effizienter justiert werden.

Fazit

Fazit: The Future is serverless

Microservices-Architekture sind die Antwort auf die sich permanent und immer schneller ändernden Anforderungen in der Softwareentwicklung. Gerade Standardaufgaben wie Authentifizierungslösungen, Mediaverwaltung oder ähnliche Module einer Software halten auf und kosten Ressourcen. Hier kommen Cloud-Dienste ins Spiel, die einfach, günstig und skalierbar fertige, sichere, zuverlässige Services anbieten. Diese lassen sich in die eigene Anwendungslandschaft integrieren und Service-individuell monitoren und skalieren.

Microservices können wesentlich schneller entwickelt werden, sind einfacher zu warten und aufgrund des überschaubaren Umfangs pro Service weniger fehleranfällig. Die bekannten Probleme „unwartbarer“ Legacy-Software entfällt. Zudem können so bestehende Monolithen durch Microservices ergänzt und Funktionen sukzessiv ausgetauscht werden.

Vor allem aber können so leistungsstarke Services aus der Cloud für die eigene Software genutzt werden. Angefangen bei weitentwickelten Spracherkennungssystemen wie Alexa von Amazon bishin zu maschinellen Lernalogorithmen lassen sich so Technologien nutzen, auf die man ansonsten keinen Zugriff hätte und deren Entwicklung sehr aufwendig, zeitintensiv und teuer wäre. Oder kurzum: So kann dann guten Gewissens einen ChatBot mit geballter Intelligenz von Lex (Amazon) oder Watson (IBM) nutzen – und das für überschaubares Budget.

Wir von 40° setzen auf Serverless Infrastructure und Microservic es für unsere Anwendungen. Gemeinsam mit unserem Technologiepartner Parapluie konzipieren und entwicklen wir Software im Kontext von Change-, Innovations- und Kommunikationsprozessen.



Wir unterstützen Sie dabei, …
  • neue Geschäftsfelder zu entwickeln und Zukunftsmärkte zu erobern
  • zukunftsfähige Strategien für Kommunikation, Marketing und Personalentwicklung zu entwickeln
  • Ideen und Lösungen zu finden und in innovative Produkte, Dienstleistungen und Verfahren zu übersetzen
  • eine nachhaltige Innovationskultur und -strategie im Unternehmen zu etablieren
  • Mitarbeiter und/oder Stakeholder aktiv und zielführend in die Innovationsarbeit einzubinden
  • Kooperationen und Innovationsnetzwerke aufzubauen und mit Leben zu füllen
  • ins Stocken geratene Innovationsprojekte und -vorhaben wiederzubeleben und/oder zu beschleunigen



Wir unterstützen Sie dabei, …
  • den thematischen und inhaltlichen Background Ihrer Projekte zu entwickeln und zu vertiefen
  • Trend- und Zukunftswissen zugänglich zu machen und zielgruppenadäquat aufzubereiten
  • innovative und kreative Workshop-Formate zu entwickeln und durchzuführen
  • Strategiepapiere und White-Paper zu Zukunftsthemen methodisch zu konzipieren und praktisch umzusetzen



Weitere Informationen zu: