Der Blog

Monitoring im Zeitalter der Microservices

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 Art der Erstellung und Bereitstellung von Anwendungen herauskristallisiert – und es gibt viele gute Gründe, den Microservices-Trend aufzugreifen.

Wenn Sie Microservices einführen möchten, müssen Sie auch verstehen, dass Microservice-Architekturen viele bewegliche Teile haben. Wenn es um das Vorfallmanagement geht, 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.

Lassen Sie uns einen Blick darauf werfen, warum Microservices die Herausforderungen für die IT-Überwachung erhöhen und untersuchen, 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. Sie ist auch einfacher zu aktualisieren, da bei einem Update einer bestimmten Komponente der Anwendung Administratoren nur diesen Microservice neu starten müssen und nicht die gesamte App. Aus diesen und weiteren Gründen helfen Microservices dabei, kontinuierliche Lieferung .

Die Einführung von Docker im Jahr 2013 hat das Interesse an Microservices weiter angekurbelt. Docker-Container bieten praktische Bausteine für Microservices und ermöglichen einen einfachen Migrationspfad für Unternehmen, die Legacy-Anwendungen (die auf einer monolithischen Architektur basieren) auf ein Microservices-Modell portieren möchten.

Komplexität: Der Kompromiss bei Microservices

Unternehmen, die Microservices einführen, müssen die zusätzliche Komplexität berücksichtigen, die diese ihrer Infrastruktur hinzufügen. Wenn eine monolithische Anwendung in eine Microservices-Anwendung umgewandelt wird, entstehen mehr bewegliche Teile, die Administratoren überwachen und verwalten müssen.

Stellen Sie sich beispielsweise eine monolithische Webanwendung vor, deren Frontend und Datenbank als eine einzige Anwendung auf einem virtuellen Server ausgeführt werden, der ausschließlich dieser Anwendung gewidmet ist. Die Überwachung dieser Anwendung ist relativ einfach. Wenn ein Teil davon ausfällt, fällt die gesamte Anwendung aus. Es gibt nur einen einzigen Host zu überwachen und eine einzige Warnung, mit der man sich befassen muss. Natürlich könnten Sie bei der Überwachung einer solchen Anwendung einen differenzierteren Ansatz wählen, falls gewünscht. Sie könnten beispielsweise Verbindungen über verschiedene Ports überwachen oder die Server- und Datenbankprozesse getrennt überwachen. Aber selbst bei diesem Ansatz wäre die Anzahl der beweglichen Teile, die Sie überwachen müssen, relativ gering.

Stellen Sie sich nun dieselbe App als eine Reihe von Containern vor. Anstelle eines einzelnen virtuellen Servers, auf dem die Anwendung als einfacher Prozess ausgeführt wird, werden die Front-End- und Datenbankebenen als unterschiedliche Prozesse ausgeführt. Docker erzeugt Dutzende oder, bei einer Scale-Out-Bereitstellung, vielleicht sogar Hunderte von Containern, um jeden dieser Prozesse zu unterstützen. Die Anzahl der Container würde sich ständig ändern, je nach Anwendungsbedarf. Darüber hinaus könnten Sie andere Container in der Mischung haben, die Aufgaben wie das Sammeln von Statistiken über Ihre Anwendung gewidmet sind. 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 viel komplexer.

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

So überwachen Sie Microservices effektiv

Für eine effektive Strategie zur Überwachung von Microservices müssen zwei Fakten beachtet werden.

  • Der erste und offensichtlichste Grund ist, dass Microservices mehr Komponenten zu überwachen bedeuten. Dies ist kein besonders schwieriges Problem. Sie müssen lediglich sicherstellen, dass Ihre Vorfallmanagement-Plattform ist robust genug, um eine große Anzahl von Alarmen 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 Alarmvolumen mit sich bringen, sollte Ihre Vorfallmanagementplattform auch den Alarmlärm nach Möglichkeit reduzieren. Nicht umsetzbare Alarme sollten unterdrückt werden, während Verwandte Alarme können gruppiert werden oder in Probleme korreliert, die eine Antwort erfordern.
  • Die zweite, kompliziertere Tatsache, die man im Hinterkopf behalten sollte, ist, dass Microservices durch die zunehmende Komplexität auch die Menge an Informationen erhöhen, die den Administratoren zur Verfügung stehen, um Vorfälle zu bewältigen – und das ist eine gute Sache. Zwar bedeutet mehr zu überwachende Komponenten auch mehr Daten, mit denen man sich auseinandersetzen muss, aber diese zusätzlichen Daten können genutzt werden, um Probleme zu lokalisieren. Eine Warnung im Zusammenhang mit einer monolithischen App sagt Ihnen einfach, dass mit dieser App etwas nicht stimmt. irgendwo, und es liegt an Ihnen, genau herauszufinden, wo das Problem liegt. Bei Microservices hingegen ermöglicht eine Warnung zu einem einzelnen Docker-Container den Administratoren, den genauen Microservice innerhalb der App zu ermitteln, der den Vorfall verursacht hat. Sie können dann den Vorfall für diesen Container beheben, ohne die anderen Container zu stören, auf die die App angewiesen ist.

Microservices stellen für Incident-Management-Teams sowohl eine Herausforderung als auch eine Chance dar. Sie machen die Infrastruktur komplizierter, können aber eine effektivere und gezieltere Reaktion auf Incidents ermöglichen. 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.