Tempo, Tempo, Tempo – die Digitalisierung beschleunigt die Welt zusehends. Firmen müssen ihre Anwendungen daher möglichst schnell und effizient entwickeln oder aktualisieren. Traditionelle monolithische Architekturen sind mit dieser agilen Entwicklung häufig überfordert. Gefragt ist daher eine flexible Anwendungs-Architektur mit Microservices. Davon profitieren nicht nur reine Softwareprojekte. Mist hat das Konzept der Microservices auch für die Netzwerksteuerung übernommen und mit der Microservice Architektur das Prinzip der monolithischen Netzwerkcontroller abgelöst. Was also sind Microservices?
In den meisten Unternehmen (Ausnahme: Startups) sind die IT-Systeme und geschäftskritischen Anwendungen oft schon lange im Einsatz und in die Jahre gekommen. Zumeist handelt es sich um eigenentwickelte Systeme, die im Laufe der Zeit immer wieder durch neue Funktionen und Kapazitäten „unkontrolliert“ erweitert wurden. Die Architektur wird dadurch unübersichtlicher, Anpassungen werden komplexer und teurer. Diese Legacy-Applikationen basieren oft auf einer historisch gewachsenen Code-Basis und monolithischen Architekturen.
Bei diesen monolithisch aufgebauten Anwendungen ist es etwa nicht möglich, eine einzelne Komponente wegen einer neuen Anforderung zu skalieren, sondern eine Firma muss für die gesamte Anwendung mehr Serverkapazität liefern. Code-Änderungen fordern umfangreiche Testzyklen, da sich diese an einer anderen Stelle der Anwendung auswirken können. Die Anwendungen sind daher nicht flexibel genug, um sich mit veränderten Anforderungen des Marktes und der Kunden weiterzuentwickeln.
Ganz anders sieht es bei den erfolgreichen Webshops etwa von Amazon oder Zalando aus. Sie integrieren mindestens täglich, teilweise sogar stündlich neue Funktionen oder Updates – und entwickeln ihr Geschäftsmodell ständig weiter. Das ist möglich, weil sie auf eine flexible Anwendungs-Architektur mit Microservices setzen.
Microservices: Flexibel, skalierbar und unabhängig
Microservices bestehen aus lose gekoppelten, voneinander unabhängigen Modulen mit einer abgeschlossenen Funktionalität. Ein Webshop etwa besteht dann aus verschiedenen eigenständigen Komponenten etwa für die Produktsuche, Produktbewertungen, Bestellung oder Katalog. Im Verbund ergeben diese Module über Schnittstellen (APIs) die Gesamtfunktionalität einer Anwendung oder implementieren jeweils einen Teil der Web-Oberfläche. Microservices eignen sich auch für die Modernisierung von Legacy-Anwendungen, indem man einzelne Funktionen vom Monolithen abtrennt und in Microservices verwandelt, um sie bei Bedarf unabhängig skalieren zu können. Damit werden Unternehmen agiler und flexibler.
Continuous Delivery löst die traditionelle Bereitstellung von Software in festen Release-Zyklen ab und verlangt von Entwicklern eine Änderung ihrer bisherigen Arbeitsweise. Sie sind mehr in kleineren Teams organisiert und müssen sich auch mit dem Betrieb auseinandersetzen, da kleinere Funktionserweiterungen der Microservices schnell produktiv gehen müssen. So erhalten sie hier über automatische Tests noch während des Programmierens schnelles Feedback über mögliche Fehler.
Herausforderung: Orchestrierung der Services
Doch wo Vorteile sind, sind auch Nachteile. Eine Änderung der IT-Organisation mit größerer Eigenverantwortung von Entwickler-Teams läuft nicht immer ohne Reibungsverluste ab. Auch auf technischer Ebene bringt eine Microservices-Architektur einige Herausforderungen mit sich. So müssen die einzelnen Dienste zusammenarbeiten, um die Funktionalität der Anwendung zu liefern. Durch die Kommunikation über Netzwerke kommen weitere potenzielle Fehlerquellen hinzu. Damit verlagert sich die Komplexität von den Services selbst auf die Orchestrierung und Koordination dieser Services – vor allem bei einer steigenden Anzahl von Microservices und neuen Funktionalitäten.
Bei einer Microservices-Architektur sind teilweise Hunderte oder gar Tausende von kleinen und heterogenen Systemen zu überwachen. Hier helfen spezielle Monitoring-Tools weiter. Sie legen über Status-Daten und Metriken offen, wie die einzelnen Dienste zusammenarbeiten. Über diese Informationen können die einzelnen Entwickler-Teams die Microservices optimieren und die Zugriffe auf die Ressourcen besser koordinieren, um Engpässe zu vermeiden.
Ein zentrales Element für die Integration von Microservices sind API-Schnittstellen. Mit einer API (Application Programming Interface) lassen sich Informationen zwischen einer Anwendung und einzelnen Programmteilen standardisiert austauschen und neue Kanäle oder zusätzliche Angebote einfacher anbinden.
Container als technische Basis von Microservices
Eine zentrale Rolle bei der Microservices-Architektur spielen Linux-Container wie Docker. Sie kapseln und isolieren Anwendungen / Microservices mit allen benötigten Komponenten wie Bibliotheken oder Skripts in einem abgeschlossenen Paket. Die Kapselung vermeidet Konflikte zwischen den Anwendungen, da diese anderenfalls auf zentrale Komponenten des zugrunde liegenden Host-Betriebssystems zugreifen müssen.
Durch die Verpackung in einen Container werden die Anwendungen auch portabler. Es ist möglich, sie ohne Anpassung und Installation auf Entwicklungs-, Test-, Produktions- oder Cloud-Umgebungen zu übertragen und dort auszuführen. Daher können auf einem System unterschiedlichste Anwendungen nebeneinander bestehen; Anwendungen und Infrastruktur sind dabei klar getrennt, gleichgültig, ob es sich um physische Hardware, virtuelle Umgebungen (Hypervisor), eine Private, Public oder Hybrid Cloud handelt.
Microservices-Architektur bei Mist
Auch unser Partner Mist setzt beim Aufbau von Wireless-Netzwerken auf ein modulares System mit Microservices, um den traditionellen Hardware Controller abzulösen. Auf letzteren läuft oft fehleranfällige und komplizierte monolithische Firmware. Auch neuere, cloudbasierte Wireless-Systeme setzen auf eine allumfassende Firmware zur Verwaltung, allerdings auf Software Controllern. Nachteile dieser Herangehensweise sind lange Entwicklungszyklen für Updates und Features und die Anfälligkeit für Software Bugs. Mist hingegen setzt bei der Verwaltung über die Cloud nicht auf eine herkömmliche einheitliche Firmware, sondern auf Mircoservices.
Die Firmware wurde in ihre Funktionen aufgeteilt, die als Microservices unabhängig voneinander agieren. Alle Microservices sind über einen Real-Time Bus verbunden, der für die Kommunikation der Module untereinander verantwortlich ist. Die Mist-Cloud überwacht alle Module und skaliert die unterschiedlichen Services je nach Bedarf. Jeder Service wird von einem eigenen Entwicklerteam betreut und ist vollkommen eigenständig. Weitere Informationen zur Microservices-Architektur von Mist finden Sie hier. Das modulare System setzt sich auch in den Cloud Services fort, die ebenfalls vollkommen eigenständig sind.
Durch das Konzept der Microservices ergibt sich nicht nur eine agile und skalierbare Netzwerkarchtektur. Es bereitet auch den Weg für eine Trennung von Hardware und Software, um ein wahres Intent-Based Network (IBN) zu ermöglichen.
Fragen? Fragen!
Ich bin Sebastian Wiedemann aus dem HCD Vertriebsteam. Ich berate Sie gerne oder helfe Ihnen bei Fragen weiter. Sie erreichen mich telefonisch unter +49 89 215 36 92-0 oder per Kontaktformular.
Jetzt beraten lassen