Ich wollte schon lange einen Artikel ĂŒber mikroskopische Architektur schreiben, aber ich wurde die ganze Zeit von zwei Punkten gestoppt â je tiefer ich in das Thema eintauchte, desto mehr schien mir, dass das, was ich weiĂ, offensichtlich ist, und das, was ich nicht weiĂ, muss noch weiter erforscht werden. Auf der anderen Seite denke ich, dass es schon genĂŒgend Diskussionsstoff fĂŒr ein breites Publikum gibt. Daher sind alternative Meinungen willkommen.
Das Conway-Gesetz und die Verbindung zwischen GeschÀft, Organisation und Informationssystem
Ich erlaube mir erneut zu zitieren:
âJede Organisation, die ein System (im weitesten Sinne) entwirft, wird ein Design erhalten, dessen Struktur die Struktur der Teams in dieser Organisation widerspiegeltâ
â Melvyn Conway, 1967
Meiner Meinung nach bezieht sich dieses Gesetz eher auf die ZweckmĂ€Ăigkeit der GeschĂ€ftsorganisation als direkt auf das Informationssystem. Ich erklĂ€re es am Beispiel. Angenommen, wir haben eine relativ stabile GeschĂ€ftsmöglichkeit mit einem Lebenszyklus, der lang genug ist, um es sinnvoll zu machen, ein Unternehmen zu grĂŒnden (das ist kein Schreibfehler, der Begriff gefĂ€llt mir sehr, den ich abgekupfert habe). Es versteht sich von selbst, dass das unterstĂŒtzende System dieses GeschĂ€fts organisatorisch und prozessual zu diesem GeschĂ€ft passen wird.
GeschÀftsorientierung von Informationssystemen

Ich erklĂ€re es am Beispiel. Angenommen, es gibt eine GeschĂ€ftsmöglichkeit zur Organisation eines GeschĂ€fts fĂŒr den Pizzaverkauf. In der Version V1 (nennen wir sie vor-informatisch) stellte das Unternehmen eine Pizzeria, eine Kasse und einen Lieferdienst dar. Diese Version war in einem Umfeld mit niedriger VerĂ€nderlichkeit sehr langlebig. Dann kam die Version 2 â fortschrittlicher und fĂ€hig, ein Informationssystem als Grundlage fĂŒr das GeschĂ€ft mit monolithischer Architektur zu nutzen. Und hier entsteht meines Erachtens eine einfach furchtbare Ungerechtigkeit gegenĂŒber den Monolithen â angeblich entspricht die monolithische Architektur nicht dem DomĂ€nenmodell des GeschĂ€fts.. Wenn dem so wĂ€re, könnte das System ĂŒberhaupt nicht funktionieren - was im Widerspruch zu demselben Gesetz von Conway und dem gesunden Menschenverstand steht. Nein, die monolithische Architektur entspricht völlig dem GeschĂ€ftsmodell in dieser Phase der GeschĂ€ftsentwicklung - ich meine natĂŒrlich die Phase, in der das System bereits erstellt und in Betrieb genommen wurde. Es ist ein völlig bemerkenswerter Fakt, dass unabhĂ€ngig vom architektonischen Ansatz sowohl die Service-orientierte Architektur Version 3 als auch die Mikroservice-Architektur Version N gleich gut funktionieren werden. Wo liegt der Haken?
Alles flieĂt, alles verĂ€ndert sich oder sind Mikroservices ein Mittel im Kampf gegen die KomplexitĂ€t?
Bevor wir fortfahren, lassen Sie uns einige MissverstĂ€ndnisse ĂŒber Mikroservice-Architektur betrachten.
BefĂŒrworter des mikroservicebasierten Ansatzes sagen oft, dass die Zerlegung eines Monolithen in Mikroservices den Entwicklungsansatz vereinfacht, indem die Codebasis der einzelnen Dienste verkleinert wird. Meiner Meinung nach ist diese Aussage völliger Unsinn. Ernsthaft, scheint die offensichtliche Interaktion innerhalb eines Monolithen und homogener Code kompliziert zu sein? Wenn das wirklich der Fall wĂ€re, wĂŒrden alle Projekte von Anfang an als Mikroservices aufgebaut werden, wĂ€hrend die Praxis zeigt, dass die Migration vom Monolithen zu Mikroservices wesentlich verbreiteter ist. Die KomplexitĂ€t verschwindet nicht, sie wandert einfach von einzelnen Modulen zu Schnittstellen (ob es sich um Datenbusse, RPC, APIs oder andere Protokolle handelt) und zu orchestrierenden Systemen. Und das ist kompliziert!
Der Vorteil der Verwendung eines heterogenen Stacks ist ebenfalls fraglich. Ich werde nicht bestreiten, dass dies auch möglich ist, aber in der RealitÀt kommt es selten vor (Um der Sache vorzugreifen - es sollte der Fall sein - aber eher als Konsequenz denn als Vorteil).
Der Lebenszyklus eines Produkts und der Lebenszyklus eines Dienstes
Schauen Sie sich das Diagramm oben noch einmal an. Ich habe den verkĂŒrzten Lebenszyklus einer einzelnen GeschĂ€ftsversion nicht ohne Grund hervorgehoben - unter den modernen Bedingungen ist es gerade die Beschleunigung des Ăbergangs des GeschĂ€fts zwischen Versionen, die entscheidend fĂŒr seinen Erfolg ist. Der Erfolg eines Produkts wird durch die Geschwindigkeit bestimmt, mit der GeschĂ€fts-Hypothesen darin ĂŒberprĂŒft werden.. Und hier liegt meiner Meinung nach der SchlĂŒsselvorteil der Mikroservice-Architektur. Aber lassen Sie uns der Reihe nach vorgehen.
Lass uns zur nĂ€chsten Stufe der Evolution von Informationssystemen ĂŒbergehen â zur serviceorientierten Architektur SOA. Also, zu einem bestimmten Zeitpunkt haben wir in unserem Produkt langfristige Dienste â langfristig in dem Sinne, dass beim Ăbergang zwischen den Produktversionen die Chance besteht, dass der Lebenszyklus des Dienstes lĂ€nger ist als der Lebenszyklus der nĂ€chsten Produktversion. Es wĂ€re logisch, sie ĂŒberhaupt nicht zu verĂ€ndern â uns ist insbesondere die Geschwindigkeit des Ăbergangs zur nĂ€chsten Version wichtig. Aber leider sind wir gezwungen, stĂ€ndig Ănderungen an den Diensten vorzunehmen â und hier ist alles möglich, sowohl DevOps-Praktiken als auch Containerisierung und andere Dinge â alles, was einem in den Sinn kommt. Aber das sind immer noch keine Mikrodienste!
Mikrodienste als Mittel zur BewÀltigung von KomplexitÀt... Konfigurationsmanagement
Und hier können wir endlich zur entscheidenden Rolle von Mikrodiensten ĂŒbergehen â es ist ein Ansatz, der das Konfigurationsmanagement des Produkts vereinfacht. Genauer gesagt, die Funktion jedes Mikrodienstes beschreibt genau die GeschĂ€ftsfunction innerhalb des Produkts gemÀà dem Domainmodell â und das sind bereits Dinge, die nicht in der kurzlebigen Version leben, sondern in der langfristigen GeschĂ€ftsmöglichkeit. Der Ăbergang zur nĂ€chsten Produktversion geschieht buchstĂ€blich unbemerkt â man Ă€ndert/hinzugefĂŒgt einen Mikrodienst oder vielleicht nur das Schema ihrer Interaktion und befindet sich plötzlich schon in der Zukunft, wĂ€hrend man die weinenden Konkurrenten hinter sich lĂ€sst, die weiterhin zwischen den Versionen ihrer Monolithen hĂŒpfen. Stellen Sie sich nun vor, dass es ausreichend viele Mikrodienste mit vordefinierten Schnittstellen und GeschĂ€ftsmöglichkeiten gibt. Und Sie kommen und bauen die Struktur Ihres Produkts aus fertigen Mikrodiensten â einfach indem Sie beispielsweise ein Diagramm zeichnen. Herzlichen GlĂŒckwunsch â Sie haben eine Plattform geschaffen â und jetzt können Sie sich Ihr GeschĂ€ft zusammenklicken. TrĂ€ume, TrĂ€ume.
Das DBMS Tarantool ist ein attraktives, zukunftstrÀchtiges Produkt zur Erstellung von hochbelasteten Anwendungen.
- Die Systemarchitektur sollte durch den Lebenszyklus ihrer Komponenten definiert werden. Wenn eine Komponente innerhalb einer Produktversion lebt, macht es keinen Sinn, die KomplexitÀt des Systems zu erhöhen, indem man den mikrodienstlichen Ansatz anwendet.
- Die mikrodienstliche Architektur sollte auf dem Domainmodell basieren â aus dem Grund, dass die GeschĂ€ftsmöglichkeit das am lĂ€ngsten lebende Gebiet ist.
- Lieferpraktiken (DevOps-Praktiken) und Orchestrierung sind fĂŒr die Mikrodienstarchitektur von entscheidender Bedeutung, da eine höhere Ănderungsrate der Komponenten erhöhte Anforderungen an die Geschwindigkeit und QualitĂ€t der Lieferung stellt.
Quelle: habr.com
