Ich wollte schon lange einen Artikel ĂŒber mikroservicearchitektur schreiben, doch zwei Fragen hielten mich immer wieder zurĂŒck: Je tiefer ich in das Thema eintauchte, desto mehr schien mir das, was ich weiĂ, offensichtlich, wĂ€hrend das, was ich nicht weiĂ, noch zu lernen bleibt. Anderseits bin ich der Meinung, dass es bereits genĂŒgend Diskussionsstoff fĂŒr ein breites Publikum gibt. Alternativen Meinungen sind daher herzlich willkommen.
Conway's Gesetz und der Zusammenhang zwischen GeschÀft, Organisation und Informationssystem
Ich nehme mir erneut die Freiheit zu zitieren:
âJede Organisation, die ein System (im weitesten Sinne) entwirft, erhĂ€lt ein Design, 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. Lassen Sie mich ein Beispiel geben. Angenommen, wir haben eine ausreichend stabile GeschĂ€ftsmöglichkeit mit einem Lebenszyklus, der lang genug ist, um ein Unternehmen zu grĂŒnden (das ist kein Tippfehler; ich finde diesen Begriff, den ich entlehnt habe, sehr interessant). NatĂŒrlich wird das unterstĂŒtzende System dieses GeschĂ€fts organisatorisch und prozessual auf dieses GeschĂ€ft abgestimmt sein.
GeschÀftsorientierung von Informationssystemen

Lassen Sie mich ein Beispiel geben. Angenommen, es gibt die GeschĂ€ftsmöglichkeit, ein Unternehmen zum Verkauf von Pizzen zu grĂŒnden. In Version 1 (nennen wir sie vor-informativ) stellte das Unternehmen eine Pizzeria, eine Kasse und einen Lieferservice dar. Diese Version war langlebig in einer Umgebung mit geringer VerĂ€nderung. Dann kam Version 2 â fortschrittlicher und in der Lage, ein Informationssystem als Grundlage fĂŒr ein Unternehmen mit monolithischer Architektur zu nutzen. Und hier denke ich, entsteht einfach eine furchtbare Ungerechtigkeit gegenĂŒber den Monolithen â Die angeblich monolithische Architektur entspricht nicht dem GeschĂ€ftsmodell der Domain.WĂ€re dem so, könnte das System ĂŒberhaupt nicht funktionieren â was im Widerspruch zum Conwayâschen Gesetz und zu gesundem Menschenverstand steht. Nein, die monolithische Architektur entspricht vollkommen dem GeschĂ€ftsmodell in dieser Phase der Unternehmensentwicklung â ich spreche hierbei von der Phase, in der das System bereits erstellt und in Betrieb genommen wurde. Es ist eine bemerkenswerte Tatsache, dass unabhĂ€ngig vom architektonischen Ansatz sowohl die serviceorientierte Architektur Version 3 als auch die Microservices-Architektur Version N gleichermaĂen gut funktionieren werden. Wo liegt der Haken?
Alles flieĂt, alles verĂ€ndert sich â oder sind Microservices ein Mittel zur BekĂ€mpfung von KomplexitĂ€t?
Bevor wir fortfahren, lassen Sie uns einige MissverstĂ€ndnisse bezĂŒglich der Microservices-Architektur betrachten.
BefĂŒrworter des mikroservices-Ansatzes behaupten oft, dass die Aufspaltung eines Monolithen in Mikrodienste die Entwicklung erleichtert, indem sie die Codebasis der einzelnen Dienste verringert. Meiner Meinung nach ist diese Aussage völliger Unsinn. Im Ernst, ist die offensichtliche Interaktion innerhalb eines Monolithen und homogenen Codes wirklich so kompliziert? WĂ€re das der Fall, wĂŒrden alle Projekte von Anfang an als Mikrodienste konzipiert werden. Die Praxis zeigt jedoch, dass die Migration von einem Monolithen zu Mikrodiensten weitaus verbreiteter ist. Die KomplexitĂ€t verschwindet nicht, sie wechselt lediglich von einzelnen Modulen zu Schnittstellen (sei es Datenbusse, RPC, APIs und andere Protokolle) und orchestrierenden Systemen. Und das ist â kompliziert!
Der Vorteil der Nutzung eines heterogenen Stacks ist ebenfalls fraglich. Ich will nicht sagen, dass dies nicht möglich ist, aber in der RealitĂ€t kommt es selten vor (Um es vorwegzunehmen â es sollte vorkommen, jedoch eher als Folge denn als Vorteil).
Produktlebenszyklus und Servicelebenszyklus
Schauen Sie sich das Diagramm oben noch einmal an. Ich habe nicht zufĂ€llig den verkĂŒrzten Lebenszyklus einer einzelnen GeschĂ€ftsversion hervorgehoben â in der heutigen Zeit ist die Beschleunigung des Ăbergangs zwischen den Versionen fĂŒr den Erfolg entscheidend. Der Erfolg eines Produkts hĂ€ngt von der Geschwindigkeit ab, mit der die GeschĂ€fts-Hypothesen darin ĂŒberprĂŒft werden.. Hier liegt meiner Meinung nach der SchlĂŒsselvorteil der mikroservicebasierten Architektur. Doch lassen Sie uns der Reihe nach vorgehen.
Lassen Sie uns zur nĂ€chsten Evolutionsstufe der Informationssysteme ĂŒbergehen â zur serviceorientierten Architektur (SOA). In einem bestimmten Moment haben wir in unserem Produkt langfristige Dienste definiert â langfristig insofern, als 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 Ă€ndern â denn wir benötigen insbesondere die Geschwindigkeit des Ăbergangs zur nĂ€chsten Version. Doch bedauerlicherweise sind wir gezwungen, stĂ€ndige Ănderungen an den Diensten vorzunehmen â und hier kommen uns alle Möglichkeiten zugute, sei es DevOps-Praxis, Containerisierung und alles, was uns in den Sinn kommt. Aber das sind noch keine Mikroservices!
Mikrodienste als Mittel zur BewÀltigung von KomplexitÀt⊠Konfigurationsmanagement
Hier können wir endlich zur entscheidenden Rolle der Mikrodienste ĂŒbergehen â es handelt sich um einen Ansatz, der das Management der Produktkonfiguration vereinfacht. Genauer gesagt beschreibt die Funktion jedes Mikrodienstes genau die GeschĂ€fts- funktion innerhalb des Produkts gemÀà dem DomĂ€nenmodell â und das sind bereits Dinge, die nicht in einer kurzlebigen Version leben, sondern in einer langlebigen GeschĂ€ftsmöglichkeit. Der Ăbergang zur nĂ€chsten Produktversion geschieht quasi unmerklich â Sie Ă€ndern oder fĂŒgen einen Mikrodienst hinzu, oder möglicherweise nur das Schema seiner Interaktionen, und schon befinden Sie sich in der Zukunft, wĂ€hrend Ihre weinenden Konkurrenten weiterhin zwischen den Versionen ihrer Monolithen springen. Stellen Sie sich nun vor, dass es eine ausreichend groĂe Anzahl an Mikrodiensten mit bereits definierten Schnittstellen und GeschĂ€ftsmöglichkeiten gibt. Sie kommen und bauen die Struktur Ihres Produkts aus diesen bestehenden 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.
Fazit
- Die Systemarchitektur sollte durch den Lebenszyklus der enthaltenen Komponenten bestimmt werden. Wenn eine Komponente innerhalb einer Produktversion lebt, macht es keinen Sinn, die KomplexitÀt des Systems durch die Anwendung eines mikroservicebasierten Ansatzes zu erhöhen.
- Eine mikroservicebasierte Architektur sollte auf einem DomÀnenmodell basieren, da die GeschÀftschancen die langlebigsten Bereiche sind.
- Lieferpraktiken (DevOps-Praktiken) und Orchestrierung spielen eine entscheidende Rolle in der mikroservicebasierten Architektur, da die erhöhte Geschwindigkeit bei VerÀnderungen an Komponenten höhere Anforderungen an die Geschwindigkeit und QualitÀt der Bereitstellung stellt.
Quelle: habr.com
