Pfiffige bewerbung Muster

Diese Frustrationen haben zum Architekturstil des Microservice geführt: das Erstellen von Anwendungen als Service-Suiten. Neben der Tatsache, dass Dienste unabhängig bereitgestellt und skalierbar sind, bietet jeder Dienst auch eine feste Modulgrenze, sodass verschiedene Dienste in verschiedenen Programmiersprachen geschrieben werden können. Sie können auch von verschiedenen Teams verwaltet werden. Circuit Breaker erscheint in Release It! neben anderen Mustern wie Bulkhead und Timeout. Diese Muster sind zusammen umgesetzt und beim Erstellen von kommunikationsrelevanten Anwendungen von entscheidender Bedeutung. Dieser Netflix-Blogeintrag macht einen großartigen Job, um ihre Anwendung von ihnen zu erklären. Um den Microservice-Stil zu erklären, ist es nützlich, ihn mit dem monolithischen Stil zu vergleichen: eine monolithische Anwendung, die als eine Einheit erstellt wurde. Unternehmensanwendungen sind häufig in drei Hauptteile integriert: eine clientseitige Benutzeroberfläche (bestehend aus HTML-Seiten und Javascript, die in einem Browser auf dem Computer des Benutzers ausgeführt wird), eine Datenbank (bestehend aus vielen Tabellen, die in ein gemeinsames und in der Regel relationales Datenbankverwaltungssystem eingefügt werden) und eine serverseitige Anwendung. Die serverseitige Anwendung verarbeitet HTTP-Anforderungen, führt Domänenlogik aus, ruft Daten aus der Datenbank ab und aktualisiert sie sowie wählt HTML-Ansichten aus und füllt sie auf, die an den Browser gesendet werden sollen. Diese serverseitige Anwendung ist ein Monolith – eine einzelne logische ausführbare Datei[2]. Alle Änderungen am System beinhalten das Erstellen und Bereitstellen einer neuen Version der serverseitigen Anwendung.

Neben der Dezentralisierung von Entscheidungen über konzeptionelle Modelle dezentralisieren Microservices auch Entscheidungen zur Datenspeicherung. Während monolithische Anwendungen eine einzige logische Datenbank für persistente Daten bevorzugen, bevorzugen Unternehmen häufig eine einzelne Datenbank für eine Reihe von Anwendungen – viele dieser Entscheidungen werden durch die kommerziellen Modelle des Anbieters rund um die Lizenzierung gesteuert. Microservices bevorzugen es, jedem Dienst die Verwaltung einer eigenen Datenbank zu überlassen, entweder verschiedene Instanzen derselben Datenbanktechnologie oder völlig unterschiedliche Datenbanksysteme – ein Ansatz namens Polyglot Persistence. Sie können Polyglot-Persistenz in einem Monolithen verwenden, aber es tritt häufiger mit Microservices auf. Der Rest dieses Dokuments definiert Muster und Vorgehensweisen, mit denen Sie widerstandsfähige und skalierbare Apps erstellen können. Diese Muster berühren alle Teile Ihres App-Lebenszyklus, einschließlich Ihres Infrastrukturentwurfs, Ihrer App-Architektur, der Speicherauswahl, der Bereitstellungsprozesse und der Organisationskultur. Beim Aufbau von Kommunikationsstrukturen zwischen verschiedenen Prozessen haben wir viele Produkte und Ansätze gesehen, die es betonen, signifikante Smarts in den Kommunikationsmechanismus selbst einzubauen. Ein gutes Beispiel dafür ist der Enterprise Service Bus (ESB), bei dem ESB-Produkte häufig anspruchsvolle Einrichtungen für Nachrichtenrouting, Choreographie, Transformation und Anwendung von Geschäftsregeln enthalten. Es gibt keinen Grund, warum dieser Ansatz nicht mit monolithischen Anwendungen verfolgt werden kann, aber die kleinere Granularität von Diensten kann es einfacher machen, die persönlichen Beziehungen zwischen Dienstentwicklern und ihren Benutzern zu erstellen. Eine monolithische Anwendung wird gebaut, getestet und durch diese Umgebungen ziemlich glücklich geschoben werden.

Es stellt sich heraus, dass, sobald Sie in die Automatisierung des Weges zur Produktion für einen Monolithen investiert haben, dann mehr Anwendungen nicht mehr so beängstigend zu sein scheint.