Der Blog

Überwachung im Microservices-Zeitalter

von Chris Riley 7. Februar 2017 | 5 Minuten Lesezeit

Photo by photohome_uk Bewältigung zunehmender Komplexität bei gleichzeitiger Steigerung der Agilität

Dank Docker und der DevOps Revolution haben sich Microservices als neue Methode zum Erstellen und Bereitstellen von Anwendungen herauskristallisiert – und es gibt viele gute Gründe, den Microservices-Trend zu begrüßen.

Wenn Sie Microservices einführen, müssen Sie sich auch darüber im Klaren sein, dass Microservice-Architekturen viele bewegliche Teile haben. Im Hinblick auf das Incident Management stellt dies einen wichtigen Unterschied zwischen Microservices und monolithischen Architekturen dar. Mehr bewegliche Teile bedeuten mehr Komplexität der Überwachung und verwalten, um Anwendungen und Infrastruktur gesund und funktionsfähig zu halten.

Sehen wir uns an, warum Microservices die Herausforderungen für die IT-Überwachung erhöhen und wie Unternehmen mit der zusätzlichen Komplexität umgehen können.

Definition von Microservices

Ein Microservice ist eine kleine Anwendungskomponente, die in Kombination mit anderen Microservices eine vollständige Anwendung bildet. Wenn Sie eine App bereitstellen mit Docker besteht es wahrscheinlich aus mehreren Containern. Jeder Container stellt einen eigenen Microservice dar.

Microservices sind in den letzten Jahren populär geworden, da die DevOps-Bewegung hat kontinuierliche Softwarebereitstellungsprozesse gefördert. Eine Anwendung, die als Microservices bereitgestellt wird, ist einfacher zu verwalten, da Administratoren Probleme auf bestimmte Microservices innerhalb der Anwendung zurückführen können. Auch die Aktualisierung ist einfacher, da bei einem Update einer bestimmten Anwendungskomponente nur der jeweilige Microservice neu gestartet werden muss und nicht die gesamte Anwendung. Aus diesen und weiteren Gründen erleichtern Microservices kontinuierliche Lieferung .

Die Einführung von Docker im Jahr 2013 trug zum wachsenden Interesse an Microservices bei. Docker-Container bieten praktische Bausteine für Microservices und ermöglichen Unternehmen, die Legacy-Anwendungen (die auf einer monolithischen Architektur basieren) auf ein Microservices-Modell portieren möchten, eine einfache Migration.

Komplexität: Der Kompromiss bei Microservices

Unternehmen, die Microservices einführen, müssen die zusätzliche Komplexität ihrer Infrastruktur berücksichtigen. Die Umwandlung einer monolithischen Anwendung in eine Microservices-Anwendung führt zu mehr beweglichen Teilen, die Administratoren überwachen und verwalten müssen.

Stellen Sie sich beispielsweise eine monolithische Webanwendung vor, deren Front-End und Datenbank als eine einzige Anwendung auf einem virtuellen Server laufen, der ausschließlich dieser Anwendung gewidmet ist. Die Überwachung dieser Anwendung ist relativ einfach. Fällt ein Teil davon aus, fällt die gesamte Anwendung aus. Es muss nur ein einziger Host überwacht und eine einzige Warnung berücksichtigt werden. Natürlich können Sie bei Bedarf einen differenzierteren Ansatz zur Überwachung einer solchen Anwendung wählen. Sie könnten beispielsweise Verbindungen über verschiedene Ports überwachen oder Server- und Datenbankprozesse getrennt überwachen. Selbst bei diesem Ansatz wäre die Anzahl der zu überwachenden beweglichen Teile relativ gering.

Stellen Sie sich nun dieselbe Anwendung als Container-Set vor. Anstelle eines einzelnen virtuellen Servers, auf dem die Anwendung als einfacher Prozess läuft, laufen Front-End und Datenbankebene als separate Prozesse. Docker erstellt Dutzende, bei einer Scale-Out-Bereitstellung sogar Hunderte von Containern zur Unterstützung jedes dieser Prozesse. Die Anzahl der Container ändert sich ständig entsprechend der Anwendungsnachfrage. Darüber hinaus könnten weitere Container im Mix enthalten sein, die beispielsweise Statistiken zu Ihrer Anwendung erfassen. Um die Verfügbarkeit und Leistung der Anwendung sicherzustellen, müssten Sie alle diese Komponenten überwachen – ganz zu schweigen vom Docker-Daemon selbst. Das ist deutlich komplexer.

Um es klarzustellen: Ich möchte keineswegs behaupten, dass Microservices eine schlechte Idee sind. Im obigen Beispiel ist die auf Microservices basierende Version der Webanwendung deutlich skalierbarer und agiler als die monolithische Version. Diese zusätzliche Agilität ist den zusätzlichen Überwachungsaufwand durchaus wert.

So überwachen Sie Microservices effektiv

Eine effektive Überwachungsstrategie für Microservices erfordert die Beachtung zweier Tatsachen.

  • Der erste und offensichtlichste Grund ist, dass Microservices mehr Komponenten zu überwachen bedeuten. Dies ist kein großes Problem; Sie müssen lediglich sicherstellen, dass Ihre Vorfallmanagement-Plattform ist robust genug, um eine große Anzahl von Warnungen verarbeiten , unterstützen Sie bei Triage sie, leiten Sie sie an die richtigen Personen weiter und so weiter. Da Microservices außerdem ein viel höheres Alarmaufkommen mit sich bringen, sollte Ihre Incident-Management-Plattform auch den Alarmlärm nach Möglichkeit reduzieren. Nicht umsetzbare Alarme sollten unterdrückt werden, während Verwandte Warnungen können gruppiert werden oder mit Problemen korreliert, die eine Antwort erfordern.
  • Der zweite, kompliziertere Aspekt ist, dass Microservices mit zunehmender Komplexität auch die Menge an Informationen erhöhen, die Administratoren zur Bewältigung von Vorfällen zur Verfügung stehen – und das ist gut so. Mehr zu überwachende Komponenten bedeuten zwar auch mehr Daten, die man verarbeiten muss, aber diese zusätzlichen Daten können genutzt werden, um Probleme zu lokalisieren. Eine Warnung zu einer monolithischen App zeigt lediglich an, dass mit dieser App etwas nicht stimmt. irgendwo, Es liegt an Ihnen, das Problem genau zu ermitteln. Bei Microservices hingegen ermöglicht eine Warnung zu einem einzelnen Docker-Container Administratoren, den genauen Microservice innerhalb der App zu ermitteln, der den Vorfall verursacht hat. Sie können den Vorfall dann in diesem Container beheben, ohne die anderen Container, auf die die App angewiesen ist, zu beeinträchtigen.

Microservices stellen für Incident-Management-Teams sowohl eine Herausforderung als auch eine Chance dar. Sie machen die Infrastruktur zwar komplexer, ermöglichen aber eine effektivere und gezieltere Reaktion auf Incidents. Der Schlüssel zur effektiven Überwachung von Microservices liegt darin, die Unterschiede zwischen monolithischer und Microservices-Überwachung zu verstehen und über Microservices-fähige Incident-Management-Lösungen und -Workflows zu verfügen.