Donnerstag, 15. November 2018
Twitter Facebook Mister Wong Delicious stumbleupon digg Yahoo

Neueste Technologie für Administratoren

Systembetreuer im Windows-Umfeld brauchen Know-how über die neuesten Entwicklungen. Einsatzbeispiele und Tipps aus der Praxis führen zu mehr Effizienz im täglichen Betrieb. Wir bieten Skript-basierte Lösungen von Windows IT Pro exklusiv im deutschsprachigen Raum für unsere Abonnenten.

Die Vorteile von Microservices für Unternehmen

Bei Unternehmensanwendungen steht immer mehr im Vordergrund, den Kunden die bestmögliche Anwenderfreundlichkeit zu bieten. Mittlerweile spielen leichtgewichtige, skalierbare und kosteneffektive Technologien wie „Functions as a Service“ (FaaS), Mikroservices und Container eine immer größere Rolle.

Microservices sind eine Methode zur Entwicklung von Softwareanwendungen, die sich aus unabhängig voneinander einsetzbaren, modularen Diensten zusammensetzen. Jeder Mikroservice durchläuft einen eigenen Prozess und kommuniziert über einen klar definierten leichtgewichtigen Mechanismus, wie z. B. einen Container, um ein Geschäftsziel zu erreichen.

Microservices sind auch dann hilfreich, wenn man „Stateless on demand“-Lösungen benötigt. Primäre Anwendungsfälle für Microservices sind CPU- und speicherintensive Anwendungsvorgänge. Dies ist besonders der Fall, wenn man den Mikroservice so skalieren will, dass er „Spike and die“ oder eine hohe Auslastungsspitze  in der CPU handhabt, um eine Abfrage oder Aktion zu verwalten und der Service abschließend beendet wird. Weitere Beispiele für speicherintensive Teile der Anwendung sind Werkzeuge zur Textanalyse, Natural Language Processing (NLP), Suchfunktionen und Streaming-Funktionen.

Während viele Anwendungen diese speicherintensiven Anwendungsanforderungen beinhalten, sollte man nicht vergessen, dass diese „leichtgewichtigen“ technischen Dienste nicht für alle Unternehmen „Wunderwaffen“ sind. Wenn die monolithische Anwendung zu komplex wird, um sie einheitlich zu verwalten, sollte man anfangen zu überlegen, wie Mikroservices einen dabei helfen können, Komplexitäten in den folgenden Kategorien zu verwalten:

  • Personen: Wenn man sehr große und/oder verteilte Teams hat, die an einem bestimmten Code arbeiten, können zu viele Köche den Brei verderben.
  • Mandantenfähigkeit: Aus Gründen der Effizienz gibt es typischerweise mehrere Mandanten, die die Anwendung in Anspruch nehmen. Die Anwendung wird dann zu einem Pool von gemeinsam genutzten Ressourcen, was die Wahrscheinlichkeit erhöht, dass man Leistungseinbußen oder andere „Noisy Neighbor“-Effekte erlebt.
  • Interaktionsmodelle mit mehreren Benutzern: Wenn die Anwendung mehrere Verzweigungen hat, abhängig davon, was der Benutzer macht, können Mikroservices eine großartige Lösung sein. Wenn man z. B. Netflix® öffnet, erhält man verschiedene Inhaltsempfehlungen, die auf dem vorherigen Sehverhalten basieren.
  • Kontinuierliche Weiterentwicklung von Apps: Microservices können auch zum Einsatz kommen, wenn man Anwendungsfunktionalitäten aufbrechen möchte, sodass jeder Teil unabhängig voneinander entwickelt werden kann. Das ist insbesondere hilfreich bei einer bereichsübergreifenden Anwendung in einem Unternehmen. Eine lose gekoppelte Architektur kann eine flexiblere und skalierbarere Lösung für Benutzer entwickeln.
  • Skalierbarkeit: Die Microservice-Architektur ist in der Lage einen bereits programmierten Service zu nutzen und ihn weiterhin bei verschiedenen Anwendungen einzusetzen. Da Mikroservices am besten dafür geeignet sind, einen bestimmten Anwendungsteil auszuführen und zu entkoppeln, kann man den Code im Entwicklungszyklus weiter nutzen, ohne sich Gedanken über Upgrades oder Ausfallzeiten machen zu müssen.

Was bedeutet das für IT-Experten?

Diese Überlegungen mögen vielschichtig erscheinen, letztlich sind Microservices aber lediglich nur ein anderer Mechanismus zur Bereitstellung. Man kann jedoch zur Skalierung und Verbesserung der Markteinführungszeit genutzt werden. Statt monatelanger oder gar jahrelanger Anwendungslebenszyklen können Microservices diese Zeit auf mehrere tägliche Releases verkürzen, obwohl die Microservices nur für Mikro- bis Millisekunden aktiv sind.

Zusätzlich zur schnelleren Markteinführungszeit muss man auch Ressourcen bereitstellen, damit der Mikroservice auf Computern und Speichern ausgeführt werden kann. Der Einsatz von „leichtgewichtigen“ Containern. Da Mikroservices so kurzlebig sind, muss man sie in Containern ausführen, da virtuelle Maschinen (VMs) für diese Bedürfnisse überversorgt sind. Die symbiotische Natur von Microservices und Containern sieht folgendermaßen aus: schnelle Bereitstellung von Infrastrukturdiensten, Ausführen des Microservice und dann die Rücknahme des bereitgestellten Containers.

Diese Interaktionen verwaltet man am besten, indem man seine eigenen Automatisierungsfähigkeiten stärkt und die nötigen Arbeitsabläufe organisiert. Darüber hinaus benötiget man einen Überblick über die Ressourcen, um sicherzustellen, dass die Arbeitsabläufe reibungslos funktionieren. Auch bei geringen Ressourcen benötigen man Dienste für die Netzwerk- und Serverinfrastruktur, sodass Sichtbarkeit von entscheidender Bedeutung ist. Besonders, wenn man mit Verfügbarkeit, Redundanz, Ausfallsicherheit und Interkonnektivität arbeitet, wodurch die Leistung und der Zustand der lose gekoppelten Dienste gemessen werden kann.

Bewährte Praktiken für das Arbeiten mit Microservices

Wenn eine Anwendung für eine serviceorientierte Architektur in Frage kommt, können folgende Praktiken dabei helfen, Mikroservices effektiv einzusetzen und zu verwalten:

  • Einsatz von Containern: Solange sich der Microservice im Container befindet (z. B. Docker®), wäre das Toolset Docker und Docker Engine. Das Toolset ermöglicht es einem, sich auf die kontinuierliche Bereitstellung der Anwendung zu konzentrieren, und dabei durch kontinuierlicher Integration die Abhängigkeiten von Hardware und Firmware ignorieren zu können.
  • Beibehalten der Reife des Codes: Vermeiden von „Frankenstein-Apps“: Bei der Erstellung einer Anwendung können extrem viele Mikroservices zum Einsatz kommen, aber der Code benötigt über alle Mikroservices hinweg eine ähnliche Reife. Wenn man also einen Code zu einem Microservice hinzufügen möchte, der bereits implementiert wurde und gut funktioniert, ist es die beste Vorgehensweise, einen neuen Microservice für den neuen Code zu erstellen und den bestehenden Microservice an Ort und Stelle zu belassen. Dieser als unveränderliches Infrastrukturprinzip bekannte Prozess ermöglicht es, sogenannte „Frankenstein-Apps“ zu vermeiden. Dieses Prinzip funktioniert gut, weil es einem erlaubt, die neue Funktionalität in einer anderen Umgebung kontinuierlich zu testen. Wenn es fehlschlägt, kann man es einfach noch einmal testen, ohne die Leistung des bestehenden Microservice zu beeinträchtigen. Wenn es endlich fehlerfrei ist, kann man es den Benutzern zur Verfügung stellen und die Konsistenz und Verfügbarkeit aufrechterhalten.
  • Wartung getrennter Builds: Ähnlich wie bei konsistenten Reifegraden des Codes kann man mit getrennten Builds mehrere Mikroservices unter Kontrolle halten, die von Komponentendateien aus einem Repository abhängen. Dies ermöglicht es einem auch, Codebasen leichter außer Betrieb zu nehmen.
  • Erstellung eines separaten Datenspeichers: Behandlung des Servers als „stateless“: Es gibt zwei Praktiken, die von der Branche diskutiert werden und sich im Laufe der Diskussionen ständig weiterentwickelt haben. Neue Startups befürworten die Einrichtung eines separaten Datenspeichers für jeden Mikroservice. Es wird mit anderen Worten empfohlen, dass sich ein bestimmter Mikroservice in einem bestimmten Backend-Speicher befindet. Auf diese Weise wird er, obwohl er einen „Single Point of Failure“ hat, bei einem Hardewarefehler nicht beeinträchtigt. In der Praxis hat sich auch bewährt, jeden Server als „stateless“ zu behandeln. Da Microservices und Container „leichtgewichtig“ und lose gekoppelt sind, kann ein Ausfall die Anwendung nicht lahmlegen. Stattdessen würde der Benutzer die Interaktion einfach erneut auslösen. Andere neue Startups befürworten, dass die Industrie von Stateless-Containern zu Stateful-Containern übergeht. Im Prinzip wären das dann VMs. Das Problem dabei ist, dass ein Container dann mehrere Microservices ausführen muss, was bei der Fehlersuche zu Verwirrung führen kann.

Microservices ermöglichen es, neue Funktionalitäten und Verbesserungen in Anwendungen einzubringen. Darüber können IT-Fachleute damit besser auf die sich schnell verändernde Umgebung reagieren. Der Einblick in diese Komponenten ist entscheidend für die Performance und den Zustand der Anwendungen. Denn am Ende bedeutet eine gesunde Anwendung, dass Unternehmensziele besser erreicht werden können.

Kong Yang, Head Geek bei SolarWinds 

Anmelden
Anmelden