Geben Sie mir mein Monolith zurück

Der Höhepunkt des Hypes um Microservices scheint hinter uns zu liegen. Wir lesen nicht mehr mehrmals die Woche Beiträge mit dem Titel „Wie ich mein Monolith auf 150 Dienste umgestellt habe“. Stattdessen höre ich vermehrt vernünftige Gedanken wie: „Ich hasse Monolithen nicht, ich kümmere mich einfach um die Effizienz“. Wir haben sogar einige Migrationen von Microservices zurück zu Monolithen. Der Übergang von einer großen Anwendung zu mehreren kleineren Diensten bringt einige neue Herausforderungen mit sich. Lassen Sie uns diese kurz auflisten.

Installation: von grundlegender Chemie zur Quantenmechanik

Die Einrichtung einer grundlegenden Datenbank und Anwendung mit einem Hintergrundprozess war ein relativ klarer Ablauf. Ich veröffentliche die Readme auf Github – und oft nach einer Stunde, maximal nach ein paar Stunden, läuft alles und ich starte ein neues Projekt. Das Hinzufügen und Ausführen von Code, zumindest für die anfängliche Umgebung, geschieht am ersten Tag. Aber wenn wir uns für Mikrodienste entscheiden, schießt die Zeit für den ersten Start durch die Decke. Ja, jetzt haben wir Docker mit Orchestrierung und ein Cluster von K8-Maschinen, aber für einen neuen Programmierer ist das alles deutlich komplizierter. Für viele Junior-Entwickler ist dies eine Belastung, die wirklich unnötige Komplexität darstellt.

Das System ist nicht einfach zu verstehen.

Lassen Sie uns einen Moment über unseren Junior sprechen. Bei monolithischen Anwendungen war es einfach, einen Fehler zu verfolgen und sofort mit dem Debugging zu beginnen. Jetzt haben wir einen Dienst, der mit einem anderen Dienst kommuniziert, welcher etwas in eine Warteschlange in einer Nachrichtenleitung einfügt, die einen anderen Dienst verarbeitet – und hier tritt ein Fehler auf. Wir müssen all diese Teile zusammenbringen, um schließlich herauszufinden, dass Dienst A in Version 11 läuft, während Dienst E bereits auf Version 12 wartet. Das unterscheidet sich stark von meinem gewohnten konsolidierten Protokoll: Ich muss ein interaktives Terminal/Debuggertool verwenden, um den Prozess Schritt für Schritt durchzugehen. Debugging und Verständnis sind somit wesentlich komplizierter geworden.

Wenn wir nicht debuggen können, testen wir sie möglicherweise.

Kontinuierliche Integration und kontinuierliche Entwicklung sind mittlerweile zur Norm geworden. Die meisten neuen Anwendungen, die ich sehe, erstellen und führen bei jeder neuen Version automatisch Tests aus und verlangen, dass diese Tests bestanden und überprüft werden, bevor sie freigegeben werden. Diese Prozesse sind hervorragend und sollten nicht vernachlässigt werden, da sie für viele Unternehmen einen großen Wandel darstellen. Doch um den Dienst wirklich zu testen, muss ich eine vollständige Version meiner Anwendung bereitstellen. Erinnern Sie sich an den neuen Ingenieur mit einem K8-Cluster aus 150 Diensten? Nun, wir werden unser CI-System darin schulen, all diese Systeme bereitzustellen, um zu überprüfen, dass alles tatsächlich funktioniert. Wahrscheinlich ist das zu viel Aufwand, also testen wir einfach jede Komponente isoliert: Ich bin mir sicher, dass unsere Spezifikationen gut genug sind, die APIs sauber sind und Ausfälle isoliert sind, sodass sie andere nicht beeinträchtigen.

Jeder Kompromiss hat einen triftigen Grund. Richtig?

Es gibt viele Gründe, auf Mikroservices umzusteigen. Ich habe gesehen, dass dies für mehr Flexibilität, zur Skalierung von Teams, für Leistungssteigerungen und zur Gewährleistung einer besseren Betriebsstabilität geschieht. In der Realität haben wir jedoch Jahrzehnte in die Werkzeugkästen und Praktiken der monolithischen Entwicklung investiert, die weiterhin weiterentwickelt werden. Ich arbeite mit Fachleuten aus verschiedenen Technologien. Normalerweise sprechen wir über Skalierung, weil sie mit den Grenzen einer einzelnen Postgres-Datenbankinstanz konfrontiert sind. Der Großteil der Gespräche dreht sich um DB-Skalierung.

Aber ich interessiere mich immer dafür, wie ihre Architektur aussieht und in welcher Phase des Übergangs zu Mikroservices sie sich befinden. Es ist faszinierend zu beobachten, dass immer mehr Ingenieure sagen, dass sie mit ihrer monolithischen Anwendung zufrieden sind. Vielen werden Mikroservices Vorteile bringen, und die Vorteile werden die Holpersteine auf dem Weg zur Migration überwiegen. Aber persönlich, bitte, gebt mir meine monolithische Anwendung, einen Platz am Strand – und ich bin vollkommen glücklich.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster