Es scheint, dass der Höhepunkt des Hypes um Mikrodienste hinter uns liegt. Wir lesen nicht mehr mehrmals pro Woche BeitrĂ€ge wie "Wie ich mein Monolith auf 150 Dienste umgestellt habe". Jetzt höre ich hĂ€ufiger vernĂŒnftige Gedanken: "Ich hasse Monolithen nicht, ich kĂŒmmere mich einfach um die Effizienz". Wir haben sogar mehrere Migrationen beobachtet . Beim Ăbergang von einer groĂen Anwendung zu mehreren kleineren Diensten mĂŒssen Sie einige neue Probleme lösen. Lassen Sie uns diese so kurz wie möglich auflisten.
Installation: Von grundlegender Chemie zur Quantenmechanik
Die Einrichtung der grundlegenden Datenbank und der Anwendung mit einem Hintergrundprozess war ein ziemlich klarer Prozess. Ich veröffentliche eine Readme auf Github â und oft nach einer Stunde, maximal nach ein paar Stunden, funktioniert alles, und ich beginne ein neues Projekt. Das HinzufĂŒgen und Starten von Code, zumindest fĂŒr die Anfangsumgebung, geschieht am ersten Tag. Aber wenn wir uns auf Mikrodienste einlassen, schieĂt die Zeit fĂŒr den ersten Start in die Höhe. Ja, jetzt haben wir Docker mit Orchestrierung und einen K8-Cluster, aber fĂŒr einen neuen Programmierer ist all das um ein Vielfaches komplizierter. FĂŒr viele Junior-Entwickler ist das eine Belastung, die wirklich eine unnötige KomplexitĂ€t darstellt.
Das System ist nicht einfach zu verstehen
Lassen Sie uns einen Moment bei unserem Junior bleiben. Bei monolithischen Anwendungen war es einfach, einen Fehler nachzuvollziehen und sofort mit dem Debuggen zu beginnen. Jetzt haben wir einen Dienst, der mit einem anderen Dienst spricht, der etwas in die Warteschlange auf einem Nachrichtenbus stellt, der einen anderen Dienst verarbeitet â und hier taucht ein Fehler auf. Wir mĂŒssen all diese Teile zusammenfĂŒgen, um letztendlich herauszufinden, dass Dienst A in Version 11 lĂ€uft, wĂ€hrend Dienst E bereits auf Version 12 wartet. Das unterscheidet sich stark von meinem standardmĂ€Ăigen konsolidierten Protokoll: Ich muss einen interaktiven Terminal/Debbuger verwenden, um den Prozess Schritt fĂŒr Schritt durchzugehen. Debugging und VerstĂ€ndnis sind im Grunde komplizierter geworden.
Wenn ich es nicht debuggen kann, testen wir es möglicherweise.
Kontinuierliche Integration und kontinuierliche Entwicklung sind mittlerweile weit verbreitet. Die meisten neuen Anwendungen, die ich sehe, erstellen und fĂŒhren mit jeder neuen Version automatisch Tests aus und verlangen, dass diese Tests bestehen und ĂŒberprĂŒft werden, bevor sie registriert werden. Das sind groĂartige Prozesse, auf die man nicht verzichten kann; sie haben einen groĂen Wandel fĂŒr viele Unternehmen bewirkt. Aber jetzt, um den Service wirklich zu ĂŒberprĂŒfen, muss ich eine vollstĂ€ndige, funktionsfĂ€hige Version meiner Anwendung hochfahren. Erinnern Sie sich an den neuen Ingenieur mit dem K8-Cluster aus 150 Diensten? Nun, jetzt werden wir unser CI-System lernen, wie man all diese Systeme zur ĂberprĂŒfung hochfĂ€hrt, damit alles wirklich funktioniert. Wahrscheinlich ist das zu viel Aufwand, also testen wir einfach jede einzelne Komponente isoliert: Ich bin mir sicher, unsere Spezifikationen sind gut genug, die APIs sind sauber, und ein Ausfall eines Dienstes ist isoliert und wirkt sich nicht auf andere aus.
Jeder Kompromiss hat einen guten Grund. Stimmt's?
Es gibt viele GrĂŒnde, auf Microservices umzusteigen. Ich habe gesehen, dass dies fĂŒr mehr FlexibilitĂ€t, fĂŒr die Skalierung von Teams, fĂŒr die Leistung und fĂŒr eine bessere Resilienz gemacht wird. Aber in Wahrheit haben wir Jahrzehnte in die Werkzeuge und Praktiken der Monolith-Entwicklung investiert, die weiterhin gezĂŒchtet werden. Ich arbeite mit Fachleuten in verschiedenen Technologien. Normalerweise sprechen wir ĂŒber Skalierung, weil sie mit den Grenzen eines einzelnen Postgres-Datenbankknotens konfrontiert sind. Ein groĂer Teil der GesprĂ€che beschĂ€ftigt sich mit .
Aber ich bin immer neugierig auf ihre Architektur. An welchem Punkt des Ăbergangs zu Microservices befinden sie sich? Es ist interessant zu beobachten, wie immer mehr Ingenieure sagen, dass sie mit ihrer monolithischen Anwendung zufrieden sind. Viele werden von Microservices profitieren, und die Vorteile werden die Stolpersteine auf dem Weg zur Migration ĂŒberwiegen. Aber persönlich, bitte geben Sie mir meine monolithische Anwendung, einen Platz am Strand â und ich bin vollkommen glĂŒcklich.
Quelle: habr.com
