{"id":83248,"date":"2020-05-29T19:42:48","date_gmt":"2020-05-29T17:42:48","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam"},"modified":"2020-05-29T19:42:48","modified_gmt":"2020-05-29T17:42:48","slug":"dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam","title":{"rendered":"Dichotomie der Daten: \u00dcberdenken des Verh\u00e4ltnisses zu Daten und Dienstleistungen","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Hallo zusammen! Wir haben tolle Neuigkeiten, im Juni startet OTUS wieder einen Kurs <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/rVZl\/\">\u201eSoftwarearchitekt\u201c<\/a><\/noindex>, weshalb wir traditionell n\u00fctzliche Materialien mit Ihnen teilen.<\/b><\/i><\/p>\n<p><img decoding=\"async\" alt=\"Dichotomie der Daten: \u00dcberdenken des Verh\u00e4ltnisses zu Daten und Dienstleistungen\" src=\"\/wp-content\/uploads\/2020\/05\/6092ffb23e765239b4a8f27d4a0cb846.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n Wenn Sie mit dieser gesamten Geschichte der Mikrodienste ohne jeglichen Kontext konfrontiert wurden, kann man verstehen, dass Sie sie etwas seltsam finden. Die Zerlegung einer Anwendung in Fragmente, die durch ein Netzwerk verbunden sind, bedeutet unweigerlich die Einf\u00fchrung komplexer Ausfallsicherheitsmodi in das entstandene verteilte System. <\/p>\n<p>Obwohl dieser Ansatz die Zerlegung in zahlreiche unabh\u00e4ngige Dienste umfasst, ist das endg\u00fcltige Ziel viel gr\u00f6\u00dfer, als nur die Funktion dieser Dienste auf verschiedenen Maschinen. Es geht vielmehr um die Interaktion mit der umliegenden Welt, die ihrer Natur nach ebenfalls verteilt ist. Nicht im technischen Sinne, sondern vielmehr im Sinne eines \u00d6kosystems, das aus vielen Menschen, Teams und Programmen besteht, wobei jedes dieser Teile auf die eine oder andere Weise seine Arbeit erledigen muss.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Unternehmen stellen beispielsweise eine Reihe verteilter Systeme dar, die zusammen zur Erreichung eines bestimmten Ziels beitragen. Wir haben diese Tatsache jahrzehntelang ignoriert, indem wir versucht haben, zu integrieren, Dateien \u00fcber FTP auszutauschen oder Unternehmensintegrationswerkzeuge zu verwenden, w\u00e4hrend wir uns auf unsere pers\u00f6nlichen isolierten Ziele konzentriert haben. Aber mit dem Aufkommen von Diensten hat sich alles ver\u00e4ndert. Dienste haben uns geholfen, \u00fcber den Tellerrand hinauszuschauen und die Welt der wechselseitigen Abh\u00e4ngigkeiten von Programmen zu sehen, die zusammenarbeiten. Um jedoch erfolgreich zu arbeiten, ist es notwendig, zwei grundlegend unterschiedliche Welten zu erkennen und zu gestalten: die Au\u00dfenwelt, in der wir in einem \u00d6kosystem vieler anderer Dienste leben, und unsere pers\u00f6nliche, innere Welt, in der wir allein herrschen.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomie der Daten: \u00dcberdenken des Verh\u00e4ltnisses zu Daten und Dienstleistungen\" src=\"\/wp-content\/uploads\/2020\/05\/93f535f6f3319d7b2829d35c0fe1c48f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Eine solche verteilte Welt unterscheidet sich von der, in der wir aufgewachsen sind und an die wir gew\u00f6hnt sind. Die Prinzipien des traditionellen monolithischen Architekturmodells halten keiner Kritik stand. Deshalb ist ein richtiges Verst\u00e4ndnis solcher Systeme mehr als nur die Erstellung eines coolen Diagramms auf einem wei\u00dfen Flipchart oder eines beeindruckenden Proof of Concept. Es geht darum, dass ein solches System \u00fcber lange Zeit erfolgreich funktioniert. Gl\u00fccklicherweise gibt es Dienste schon seit geraumer Zeit, obwohl sie unterschiedlich aussehen. <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Service-oriented_architecture\">Lektionen der SOA<\/a><\/noindex> sind immer noch relevant, selbst wenn sie mit Docker, Kubernetes gew\u00fcrzt und leicht von hipsterischen B\u00e4rten zerzaust sind. <\/p>\n<p>Heute schauen wir uns an, wie sich die Regeln ge\u00e4ndert haben, warum wir unsere Herangehensweise an die Dienste und die Daten, die sie austauschen, \u00fcberdenken m\u00fcssen und warum wir daf\u00fcr vollkommen andere Werkzeuge ben\u00f6tigen.<\/p>\n<h3>Kapselung wird nicht immer Ihr Freund sein.<\/h3>\n<p>\n Mikroservices k\u00f6nnen unabh\u00e4ngig voneinander arbeiten. Gerade diese Eigenschaft verleiht ihnen den gr\u00f6\u00dften Wert. Diese Eigenschaft erm\u00f6glicht es den Diensten auch, zu skalieren und zu wachsen. Nicht nur im Sinne der Skalierung auf Quadrillionen von Nutzern oder Petabyte an Daten (obwohl sie auch hierbei helfen k\u00f6nnen), sondern im Hinblick auf das Wachstum von Teams und Organisationen.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomie der Daten: \u00dcberdenken des Verh\u00e4ltnisses zu Daten und Dienstleistungen\" src=\"\/wp-content\/uploads\/2020\/05\/ec36218b6152c2b713f72689b4ea6916.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie Unabh\u00e4ngigkeit ist jedoch ein zweischneidiges Schwert. Ein Dienst kann f\u00fcr sich genommen leicht und m\u00fchelos laufen. Wenn jedoch innerhalb eines Dienstes eine Funktion implementiert wird, die einen anderen Dienst erfordert, m\u00fcssen wir letztendlich nahezu gleichzeitig \u00c4nderungen in beiden Diensten vornehmen. In einem Monolithen ist das einfach, man nimmt einfach die \u00c4nderung vor und sendet sie in die Ver\u00f6ffentlichung, aber bei der Synchronisierung unabh\u00e4ngiger Dienste gibt es mehr Probleme. Die Koordination zwischen den Teams und den Ver\u00f6ffentlichungszyklen zerst\u00f6rt die Flexibilit\u00e4t.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomie der Daten: \u00dcberdenken des Verh\u00e4ltnisses zu Daten und Dienstleistungen\" src=\"\/wp-content\/uploads\/2020\/05\/5fc993636f29e9eb9831d05cbc0bd7f8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIm Rahmen des Standardansatzes versucht man, \u00e4rgerliche Durchgriffs\u00e4nderungen zu vermeiden, indem die Funktionalit\u00e4t klar zwischen den Diensten aufgeteilt wird. Ein Dienst als Eingangspunkt zum System kann hier ein gutes Beispiel sein. Er hat eine klar definierte Rolle, die ihn von anderen Diensten unterscheidet. Diese klare Trennung bedeutet, dass der Eingangspunkt in einer Welt, die sich schnell \u00e4ndernden Anforderungen an die ihn umgebenden Dienste stellt, wahrscheinlich nicht ver\u00e4ndert wird. Er exists in einem streng begrenzten Kontext.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomie der Daten: \u00dcberdenken des Verh\u00e4ltnisses zu Daten und Dienstleistungen\" src=\"\/wp-content\/uploads\/2020\/05\/095fd7a6e02ead4924abf180e3b1d26b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Das Problem besteht darin, dass in der realen Welt Gesch\u00e4ftsdienste nicht st\u00e4ndig eine gleichm\u00e4\u00dfige Trennung der Rollen aufrechterhalten k\u00f6nnen. Zum Beispiel arbeiten dieselben Gesch\u00e4ftsdienste in gr\u00f6\u00dferem Ma\u00dfe mit Daten, die von anderen \u00e4hnlichen Diensten stammen. Wenn Sie im Online-Handel t\u00e4tig sind, wird die Verarbeitung des Bestellflusses, des Produktkatalogs oder von Benutzerinformationen zu einer Anforderung f\u00fcr viele Ihrer Dienste. Jeder dieser Dienste ben\u00f6tigt Zugang zu diesen Daten, um zu funktionieren. <\/p>\n<p><img decoding=\"async\" alt=\"Dichotomie der Daten: \u00dcberdenken des Verh\u00e4ltnisses zu Daten und Dienstleistungen\" src=\"\/wp-content\/uploads\/2020\/05\/2a3d23850c88d574c990dfdc6015072c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Die meisten Gesch\u00e4ftsdienste nutzen denselben Datenfluss, weshalb ihre Arbeit untrennbar miteinander verwoben ist.<\/i><\/p>\n<p>So sind wir zu einem wichtigen Punkt gekommen, \u00fcber den es sich zu sprechen lohnt. W\u00e4hrend Dienste gut f\u00fcr Infrastrukturkomponenten funktionieren, die weitgehend isoliert arbeiten, sind die meisten Gesch\u00e4ftsdienste wesentlich enger miteinander verbunden.<\/p>\n<h3>Daten-Dichotomie<\/h3>\n<p>\n Service-orientierte Ans\u00e4tze existieren m\u00f6glicherweise bereits, allerdings gibt es noch wenig Informationen dar\u00fcber, wie man gro\u00dfe Datenmengen zwischen Diensten austauschen kann.<\/p>\n<p>Das Hauptproblem besteht darin, dass Daten und Dienste untrennbar miteinander verbunden sind. Einerseits fordert die Kapselung uns auf, Daten zu verbergen, sodass Dienste voneinander getrennt werden k\u00f6nnen, was ihr Wachstum und ihre zuk\u00fcnftigen \u00c4nderungen erleichtert. Andererseits m\u00fcssen wir die M\u00f6glichkeit haben, gemeinsame Daten genauso frei zu teilen und zu verwalten wie jede andere Art von Daten. Es geht darum, die F\u00e4higkeit zu haben, sofort und genauso frei wie in jedem anderen Informationssystem zu arbeiten.<\/p>\n<p>Allerdings haben Informationssysteme wenig mit Kapselung zu tun. Tats\u00e4chlich ist es eher umgekehrt. Datenbanken tun alles, was sie k\u00f6nnen, um den Zugriff auf die darin gespeicherten Daten zu erm\u00f6glichen. Sie kommen mit einer leistungsstarken deklarativen Schnittstelle, die es erm\u00f6glicht, die Daten nach Bedarf zu ver\u00e4ndern. Eine solche Funktionalit\u00e4t ist in der Phase der Voruntersuchungen wichtig, aber nicht f\u00fcr das Management der wachsenden Komplexit\u00e4t eines sich st\u00e4ndig weiterentwickelnden Dienstes.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomie der Daten: \u00dcberdenken des Verh\u00e4ltnisses zu Daten und Dienstleistungen\" src=\"\/wp-content\/uploads\/2020\/05\/830465d4aa3bd2e6c02772a982f170bd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Hier entsteht ein Dilemma. Ein Widerspruch. Eine Dichotomie. Denn Informationssysteme dreht sich um die Bereitstellung von Daten, w\u00e4hrend Dienste sich mit deren Verbergen befassen.<\/p>\n<p>Diese beiden Kr\u00e4fte sind fundamental. Sie bilden die Grundlage f\u00fcr den Gro\u00dfteil unserer Arbeit und k\u00e4mpfen st\u00e4ndig um die Vorherrschaft in den Systemen, die wir erschaffen.<\/p>\n<p>Mit dem Wachstum und den Entwicklungen von Servicessystemen sehen wir verschiedene Erscheinungsformen der Auswirkungen der Datendichotomie. Entweder w\u00e4chst die Dienstschnittstelle und bietet immer umfangreichere Funktionen und beginnt, wie eine sehr seltsame, hausgemachte Datenbank auszusehen, oder wir erleben Frustration, und wir implementieren irgendeine M\u00f6glichkeit, gro\u00dfe Datens\u00e4tze massenhaft aus einem Dienst in einen anderen zu extrahieren oder zu \u00fcbertragen.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomie der Daten: \u00dcberdenken des Verh\u00e4ltnisses zu Daten und Dienstleistungen\" src=\"\/wp-content\/uploads\/2020\/05\/da718c87570a4eb20b18f9c880ae8a1b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Die Schaffung von etwas, das wie eine seltsame hausgemachte Datenbank aussieht, f\u00fchrt wiederum zu einer ganzen Reihe von Problemen. Wir werden nicht auf die Einzelheiten eingehen, warum <i>shared database<\/i>bedeutende kostspielige Ingenieurs- und Betriebs <noindex><a rel=\"nofollow\" href=\"http:\/\/microservices.io\/patterns\/data\/shared-database.html\">schwierigkeiten<\/a><\/noindex> f\u00fcr ein Unternehmen darstellt, das versucht, sie zu nutzen.<\/p>\n<p>Schlimmer ist, dass die Datenmengen die Probleme mit den Grenzen der Dienste verst\u00e4rken. Je mehr gemeinsame Daten innerhalb eines Dienstes liegen, desto komplizierter wird die Schnittstelle und desto schwieriger wird es, Datens\u00e4tze aus verschiedenen Diensten zu kombinieren.<\/p>\n<p>Ein alternativer Ansatz zur Extraktion und \u00dcbertragung ganzer Datens\u00e4tze hat ebenfalls seine Probleme. Der h\u00e4ufigste Ansatz zu diesem Thema besteht darin, einen Datensatz komplett zu extrahieren und dann lokal in jedem Verbraucherdienst zu speichern.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomie der Daten: \u00dcberdenken des Verh\u00e4ltnisses zu Daten und Dienstleistungen\" src=\"\/wp-content\/uploads\/2020\/05\/63934c6876cb89e87155d4c097657617.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Das Problem ist, dass verschiedene Dienste die Daten, die sie konsumieren, unterschiedlich interpretieren. Diese Daten sind immer zur Hand. Sie werden lokal ge\u00e4ndert und verarbeitet. Sehr schnell haben sie nichts mehr mit den Daten aus der Quelle gemeinsam.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomie der Daten: \u00dcberdenken des Verh\u00e4ltnisses zu Daten und Dienstleistungen\" src=\"\/wp-content\/uploads\/2020\/05\/616e390ad3df3317ac34ac8d861ce804.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>Je mutierbarer die Kopien sind, desto mehr werden die Daten mit der Zeit abweichen.<\/i><\/p>\n<p>Was noch schlimmer ist, solche Daten sind retrospektiv schwer zu korrigieren (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Master_data_management\">MDM<\/a><\/noindex> da k\u00f6nnte wirklich Hilfe kommen). Tats\u00e4chlich entstehen einige der schwer zu l\u00f6senden technologischen Probleme, mit denen Unternehmen konfrontiert sind, durch heterogene Daten, die sich von Anwendung zu Anwendung vervielf\u00e4ltigen.<\/p>\n<p>Um eine L\u00f6sung f\u00fcr das Problem gemeinsamer Daten zu finden, muss man anders denken. Sie sollten in den Architekturen, die wir bauen, zu erstklassigen Objekten werden. <noindex><a rel=\"nofollow\" href=\"http:\/\/cidrdb.org\/cidr2005\/papers\/P12.pdf\">Pat Helland<\/a><\/noindex> bezeichnet solche Daten als \"extern\", und das ist eine sehr wichtige Eigenschaft. Wir ben\u00f6tigen eine Kapselung, um die interne Struktur des Dienstes nicht offenzulegen, aber wir m\u00fcssen den Diensten den Zugang zu gemeinsam genutzten Daten erleichtern, damit sie ihre Arbeit ordnungsgem\u00e4\u00df erledigen k\u00f6nnen.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomie der Daten: \u00dcberdenken des Verh\u00e4ltnisses zu Daten und Dienstleistungen\" src=\"\/wp-content\/uploads\/2020\/05\/9703ffdbb528320edc62ee7a680a3258.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Das Problem ist, dass heute kein Ansatz mehr relevant ist, da weder die Schnittstellen des Dienstes, noch der Nachrichtenaustausch, noch die Shared Database eine gute L\u00f6sung f\u00fcr den Umgang mit externen Daten bieten. Die Schnittstellen des Dienstes eignen sich schlecht f\u00fcr den Austausch von Daten in beliebigem Umfang. Der Nachrichtenaustausch bewegt Daten, speichert aber deren Geschichte nicht, weshalb die Daten im Laufe der Zeit besch\u00e4digt werden. Shared Databases sind zu stark auf einen Punkt fokussiert, was die Entwicklung des Fortschritts hemmt. Wir stecken zwangsl\u00e4ufig in einem Teufelskreis von Dateninkonsistenz fest:<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomie der Daten: \u00dcberdenken des Verh\u00e4ltnisses zu Daten und Dienstleistungen\" src=\"\/wp-content\/uploads\/2020\/05\/f17ac7063a813cb76bad71ae8622912c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>Der Teufelskreis der Dateninkonsistenz<\/i><\/p>\n<h3>Str\u00f6me: ein dezentraler Ansatz f\u00fcr Daten und Dienste<\/h3>\n<p>\n Idealerweise sollten wir unseren Ansatz \u00e4ndern, wie Dienste mit gemeinsamen Daten arbeiten. Momentan sieht sich jeder Ansatz der oben erw\u00e4hnten Dichotomie gegen\u00fcber, da es kein magisches Pulver gibt, mit dem man es gro\u00dfz\u00fcgig best\u00e4uben und zum Verschwinden bringen k\u00f6nnte. Wir k\u00f6nnen jedoch das Problem neu \u00fcberdenken und zu einem Kompromiss kommen.<\/p>\n<p>Dieser Kompromiss setzt ein gewisses Ma\u00df an Zentralisierung voraus. Wir k\u00f6nnen den Mechanismus verteilter Protokolle nutzen, da er zuverl\u00e4ssige, skalierbare Str\u00f6me bietet. Jetzt m\u00fcssen die Dienste in der Lage sein, sich diesen gemeinsamen Str\u00f6men anzuschlie\u00dfen und damit zu arbeiten, jedoch m\u00f6chten wir komplizierte zentralisierte God Services vermeiden, die solche Verarbeitungen durchf\u00fchren. Deshalb ist die beste Option, die Stream-Verarbeitung in jeden Verbraucher-Dienst zu integrieren. So k\u00f6nnen die Dienste Datens\u00e4tze aus verschiedenen Quellen zusammenf\u00fchren und damit arbeiten, wie sie es ben\u00f6tigen.<\/p>\n<p>Ein Weg, um einen solchen Ansatz zu erreichen, ist die Nutzung einer Streaming-Plattform. Es gibt viele Optionen, aber heute werden wir uns speziell mit Kafka befassen, da die Nutzung ihrer Stateful Stream Processing es erm\u00f6glicht, das dargestellte Problem effektiv zu l\u00f6sen.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomie der Daten: \u00dcberdenken des Verh\u00e4ltnisses zu Daten und Dienstleistungen\" src=\"\/wp-content\/uploads\/2020\/05\/353c7f12af87901e721abb7ea92d8196.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n Die Nutzung des Mechanismus des verteilten Loggens erlaubt es uns, den bereits eingeschlagenen Weg zu gehen und den Nachrichtenaustausch zu nutzen, um damit zu arbeiten. <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Event-driven_architecture\">ereignisgesteuerten Architektur<\/a><\/noindex>. Es wird angenommen, dass dieser Ansatz eine bessere Skalierbarkeit und Trennung bietet als das \u201eRequest-Response\u201c-Mechanismus, da er den Datenfluss an den Empf\u00e4nger und nicht an den Sender \u00fcbergibt. Allerdings muss man f\u00fcr alles im Leben bezahlen, und hier ben\u00f6tigen Sie einen Broker. F\u00fcr gro\u00dfe Systeme ist dieser Kompromiss jedoch von Bedeutung (was man nicht von Ihren durchschnittlichen Webanwendungen sagen kann).<\/p>\n<p>Wenn der Broker f\u00fcr das verteilte Logging verantwortlich ist und nicht das traditionelle Nachrichtensystem, k\u00f6nnen zus\u00e4tzliche Funktionen genutzt werden. Der Transport kann nahezu ebenso linear skalierbar sein wie ein verteiltes Dateisystem. Die Daten k\u00f6nnen lange genug in Logs gespeichert werden, sodass wir nicht nur Nachrichten, sondern auch ein Informationsspeicher erhalten. Ein skalierbarer Speicher, ohne die Bef\u00fcrchtung, einen ver\u00e4nderlichen gemeinsamen Zustand zu bekommen.<\/p>\n<p>Dann kann der Mechanismus der zustandsbehafteten Streamverarbeitung (Stateful Stream Processing) verwendet werden, um deklarative Datenbankwerkzeuge in den konsumierenden Diensten hinzuzuf\u00fcgen. Das ist ein sehr wichtiger Gedanke. Solange die Daten in gemeinsamen Streams aufbewahrt werden, auf die alle Dienste zugreifen k\u00f6nnen, bleiben die Kombination und die Verarbeitung, die der Dienst vornimmt, privat. Sie sind innerhalb eines streng abgegrenzten Kontexts isoliert.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomie der Daten: \u00dcberdenken des Verh\u00e4ltnisses zu Daten und Dienstleistungen\" src=\"\/wp-content\/uploads\/2020\/05\/01c8beabb9a02e4c06dffb84f9161324.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>Befreien Sie sich von der Dichotomie der Daten, indem Sie den unver\u00e4nderlichen Zustandspool trennen. F\u00fcgen Sie diese Funktion dann jedem Dienst mithilfe von Stateful Stream Processing hinzu.<\/i><\/p>\n<p>Somit hat Ihr Dienst vollen Zugriff, wenn er mit Bestellungen, Produktkatalogen und Lagerbest\u00e4nden arbeiten muss: Nur Sie entscheiden, welche Daten zusammengef\u00fcgt werden, wo sie verarbeitet werden und wie sie sich im Laufe der Zeit \u00e4ndern sollen. Obwohl die Daten gemeinsam sind, erfolgt die Arbeit mit ihnen vollst\u00e4ndig dezentralisiert. Sie geschieht innerhalb jedes Dienstes in einer Welt, in der alles nach Ihren Regeln geht.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomie der Daten: \u00dcberdenken des Verh\u00e4ltnisses zu Daten und Dienstleistungen\" src=\"\/wp-content\/uploads\/2020\/05\/4b2635ad8ddd18f455eea654e472f85e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Teilen Sie Daten so, dass ihre Integrit\u00e4t gewahrt bleibt. Kapseln Sie die Funktion und nicht die Quelle in jedem Dienst, der sie ben\u00f6tigt.<\/i><\/p>\n<p>Es kommt vor, dass Daten massenhaft verschoben werden m\u00fcssen. Manchmal ben\u00f6tigt der Service einen lokalen historischen Datensatz in der gew\u00e4hlten Datenbank-Engine. Der Fokus liegt darauf, dass garantiert werden kann, dass bei Bedarf eine Kopie aus der Quelle mithilfe des verteilten Logging-Mechanismus wiederhergestellt werden kann. Die Connectoren in Kafka meistern diese Aufgabe hervorragend.<\/p>\n<p>Der heute betrachtete Ansatz hat mehrere Vorteile:<\/p>\n<ul>\n<li>Die Daten werden in Form von gemeinsamen Streams verwendet, die lange in Logs gespeichert werden k\u00f6nnen, und der Mechanismus f\u00fcr den Umgang mit gemeinsam genutzten Daten ist in jedem einzelnen Kontext integriert, was es den Diensten erm\u00f6glicht, einfach und schnell zu arbeiten. So kann die Dichotomie von Daten ausgeglichen werden.<\/li>\n<li>Die Daten, die aus verschiedenen Diensten stammen, k\u00f6nnen problemlos zu Sets zusammengef\u00fcgt werden. Dadurch wird die Interaktion mit gemeinsam genutzten Daten vereinfacht und die Notwendigkeit f\u00fcr die Unterst\u00fctzung lokaler Datens\u00e4tze in der Datenbank entf\u00e4llt.<\/li>\n<li>Stateful Stream Processing speichert lediglich die Daten im Cache, w\u00e4hrend die gemeinsamen Logs die Quelle der Wahrheit bleiben, sodass das Problem der Datenbesch\u00e4digung im Laufe der Zeit weniger dr\u00e4ngend ist.<\/li>\n<li>Im Grunde genommen werden die Dienste von Daten gesteuert, das hei\u00dft, trotz des st\u00e4ndigen Anstiegs des Datenvolumens k\u00f6nnen die Dienste weiterhin schnell auf gesch\u00e4ftliche Ereignisse reagieren.<\/li>\n<li>Die Skalierbarkeitsprobleme liegen beim Broker und nicht bei den Diensten. Dadurch wird die Komplexit\u00e4t bei der Erstellung von Diensten erheblich reduziert, da keine \u00dcberlegungen zur Skalierbarkeit angestellt werden m\u00fcssen.<\/li>\n<li>Die Hinzuf\u00fcgung neuer Dienste erfordert keine \u00c4nderungen an den bestehenden, was den Anschluss neuer Dienste erleichtert.<\/li>\n<\/ul>\n<p>\nWie Sie sehen, ist es mehr als nur REST. Wir haben ein Set von Tools, das es erm\u00f6glicht, dezentral mit gemeinsam genutzten Daten zu arbeiten.<\/p>\n<p>In dem heutigen Artikel wurden l\u00e4ngst nicht alle Aspekte behandelt. Wir m\u00fcssen noch kl\u00e4ren, wie wir zwischen dem Paradigma \u201eAnfrage-Antwort\u201c und dem ereignisgesteuerten Paradigma balancieren. Aber das werden wir beim n\u00e4chsten Mal besprechen. Es gibt Themen, die es besser kennenzulernen gilt, wie zum Beispiel die Vorteile von Stateful Stream Processing. Dar\u00fcber werden wir im dritten Artikel sprechen. Au\u00dferdem gibt es andere m\u00e4chtige Konstruktionen, die wir nutzen k\u00f6nnen, wenn wir sie heranziehen, zum Beispiel, <noindex><a rel=\"nofollow\" href=\"https:\/\/cwiki.apache.org\/confluence\/display\/KAFKA\/KIP-98+-+Exactly+Once+Delivery+and+Transactional+Messaging\">Exactly Once Processing<\/a><\/noindex>Mit ihrer Hilfe \u00e4ndern sich die Spielregeln f\u00fcr verteilte Gesch\u00e4ftssysteme, da diese Struktur transaktionale Garantien f\u00fcr <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/X\/Open_XA\">XA<\/a><\/noindex> in skalierbarer Form bietet. Darum wird es im vierten Artikel gehen. Und schlie\u00dflich m\u00fcssen wir die Details der Umsetzung dieser Prinzipien durchgehen.<\/p>\n<p><img decoding=\"async\" alt=\"Dichotomie der Daten: \u00dcberdenken des Verh\u00e4ltnisses zu Daten und Dienstleistungen\" src=\"\/wp-content\/uploads\/2020\/05\/f66eadcc538cf3da74ccb120e1de2ae7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAber merken Sie sich vorerst Folgendes: Die Dichotomie der Daten ist die Kraft, mit der wir bei der Erstellung von Gesch\u00e4ftsdiensten konfrontiert sind. Und wir m\u00fcssen dies im Hinterkopf behalten. Der Fokus liegt darauf, alles auf den Kopf zu stellen und gemeinsame Daten als erstklassige Objekte zu betrachten. Stateful Stream Processing bietet daf\u00fcr einen einzigartigen Kompromiss. Es vermeidet zentralisierte \u201eGott-Komponenten\u201c, die den Fortschritt hemmen. Dar\u00fcber hinaus gew\u00e4hrleistet es die Effizienz, Skalierbarkeit und Ausfallsicherheit von Datenstreaming-Pipelines und integriert sie in jeden Dienst. Dadurch k\u00f6nnen wir uns auf den gemeinsamen Bewusstseinsstrom konzentrieren, an den jeder Dienst anschlie\u00dfen und mit seinen Daten arbeiten kann. So werden die Dienste skalierbarer, austauschbarer und autonomer. Sie werden also nicht nur gut auf Whiteboards und bei Hypothesen\u00fcberpr\u00fcfungen aussehen, sondern auch Jahrzehnte lang funktionieren und sich weiterentwickeln. <\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/rVZl\/\">Weitere Informationen zum Kurs.<br \/>\n<\/a><\/noindex><\/p>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/504310\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0423 \u043d\u0430\u0441 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438, \u0432 \u0438\u044e\u043d\u0435 OTUS \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043a\u0443\u0440\u0441 \u00ab\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u041f\u041e\u00bb, \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0447\u0435\u043c \u043c\u044b \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u043c. \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441\u043e \u0432\u0441\u0435\u0439 \u044d\u0442\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0435\u0439 \u0441 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438 \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u0442\u043e \u0432\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0435\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0439. \u0420\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u0441\u0435\u0442\u044c\u044e, \u043d\u0435\u043f\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":83249,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-83248","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0414\u0438\u0445\u043e\u0442\u043e\u043c\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445: \u043f\u0435\u0440\u0435\u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u0438\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-05-29T17:42:48+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-29T17:42:48+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Dichotomie der Daten: Neudefinition der Beziehung zu Daten und Diensten | ProHoster","description":"Hallo zusammen!","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0414\u0438\u0445\u043e\u0442\u043e\u043c\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445: \u043f\u0435\u0440\u0435\u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u0438\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/dihotomiya-dannyh-pereosmyslenie-otnosheniya-k-dannym-i-servisam","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-05-29T17:42:48+00:00","article:modified_time":"2020-05-29T17:42:48+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"83248","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:22:24","updated":"2022-09-30 09:53:41","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/83248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=83248"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/83248\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/83249"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=83248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=83248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=83248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}