{"id":95403,"date":"2020-09-28T19:43:15","date_gmt":"2020-09-28T17:43:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3"},"modified":"2020-09-28T19:43:15","modified_gmt":"2020-09-28T17:43:15","slug":"vybor-arhitekturnogo-stilya-chast-3","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","title":{"rendered":"Wahl des architektonischen Stils (Teil 3)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Hallo, Habr. Heute setze ich die Serie von Beitr\u00e4gen fort, die ich speziell zum Start des neuen Kurses geschrieben habe. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\">\u201eSoftware-Architekt\u201c<\/a><\/noindex>.<\/i><\/b><\/p>\n<p><\/p>\n<h2>Einf\u00fchrung<\/h2>\n<p>\nDie Wahl des Architekturstils ist eine der grundlegenden technischen Entscheidungen beim Aufbau eines Informationssystems. In dieser Artikelreihe m\u00f6chte ich die beliebtesten Architekturstile f\u00fcr die Entwicklung von Anwendungen untersuchen und die Frage beantworten, wann welcher Architekturstil am bevorzugt wird. Im Laufe der Erl\u00e4uterungen werde ich versuchen, eine logische Kette zu ziehen, die die Entwicklung der Architekturstile von Monolithen zu Microservices erkl\u00e4rt. <\/p>\n<p>Im letzten Gespr\u00e4ch haben wir verschiedene Arten von Monolithen und die Verwendung von Komponenten f\u00fcr deren Aufbau diskutiert, sowohl von Montage- als auch von Bereitstellungskomponenten. Wir haben uns mit der serviceorientierten Architektur vertraut gemacht.<\/p>\n<p>Jetzt werden wir endlich die Hauptmerkmale der Mikroservice-Architektur definieren. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Architekturanalyse<\/h2>\n<p>\nEs ist wichtig zu verstehen, dass, basierend auf den Informationen aus vorherigen Artikeln, jeder Dienst eine Komponente darstellt, aber nicht jeder Dienst ein Mikroservice ist. <\/p>\n<h2>Merkmale der Mikroservice-Architektur<\/h2>\n<p>\nDie Hauptmerkmale der Mikroservice-Architektur sind:<\/p>\n<ul>\n<li>Organisation nach Gesch\u00e4ftsm\u00f6glichkeiten (Organized around Business Capabilities)<\/li>\n<li>Produkte, nicht Projekte (Products not Projects)<\/li>\n<li>Intelligente Endpunkte und einfache Kan\u00e4le (Smart endpoints and dumb pipes)<\/li>\n<li>Dezentralisierte Steuerung (Decentralized Governance)<\/li>\n<li>Dezentralisierte Datenverwaltung (Decentralized Data Management)<\/li>\n<li>Automatisierung der Infrastruktur (Infrastructure Automation)<\/li>\n<li>Fehlersicherheit (Design for failure)<\/li>\n<li>Architektur mit evolution\u00e4rem Design (Evolutionary Design)<\/li>\n<\/ul>\n<p>\nDer erste Punkt stammt aus der serviceorientierten Architektur, da Mikroservices einen speziellen Fall von Diensten darstellen. Die anderen Punkte verdienen eine eigene Betrachtung.<\/p>\n<h2>Organisation nach Gesch\u00e4ftsm\u00f6glichkeiten (Organized around Business Capabilities)<\/h2>\n<p>\nJetzt sollten wir uns an das Conway'sche Gesetz erinnern: Organisationen, die Systeme erstellen, gestalten deren Architektur basierend auf der Struktur der Interaktionen innerhalb dieser Organisationen. Ein Beispiel w\u00e4re der Fall der Compiler-Erstellung: Ein Team von sieben Personen entwickelte einen Sieben-Durchlauf-Compiler, w\u00e4hrend ein Team von f\u00fcnf einen F\u00fcnf-Durchlauf-Compiler entwickelte.<\/p>\n<p>Wenn wir \u00fcber Monolithen und Mikroservices sprechen, bedeutet dies, dass, wenn die Entwicklung nach funktionalen Abteilungen (Backend, Frontend, Datenbankadministratoren) organisiert ist, ein klassischer Monolith entsteht. <\/p>\n<p>Um Mikroservices zu erhalten, m\u00fcssen die Teams nach Gesch\u00e4ftsm\u00f6glichkeiten organisiert werden (Auftragsteam, Versandteam, Katalogteam). Eine solche Organisation erm\u00f6glicht es den Teams, sich auf die Erstellung spezifischer Teile der Anwendung zu konzentrieren.<\/p>\n<h2>Produkte, nicht Projekte (Products not Projects)<\/h2>\n<p>\nDer projektorientierte Ansatz, bei dem das Team entwickelte Funktionalit\u00e4ten an andere Teams bei einer Mikroservice-Architektur \u00fcbergibt, ist v\u00f6llig ungeeignet. Das Team sollte das System w\u00e4hrend des gesamten Lebenszyklus unterst\u00fctzen. Amazon, einer der Vorreiter bei der Einf\u00fchrung von Mikroservices, erkl\u00e4rte: \"Sie erstellen ein Produkt, und Sie bringen es auch zur Ausf\u00fchrung\" (\"you build, you run it\"). Der produktorientierte Ansatz erm\u00f6glicht es dem Team, die Bed\u00fcrfnisse des Unternehmens zu sp\u00fcren. <\/p>\n<h2>Intelligente Endpunkte und einfache Kan\u00e4le (Smart endpoints and dumb pipes)<\/h2>\n<p>\nDie SOA-Architektur legte gro\u00dfen Wert auf Kommunikationskan\u00e4le, insbesondere auf den Enterprise Service Bus (ESB). Dies f\u00fchrt oft zu einem fehlerhaften Spaghetti-Box, das hei\u00dft, die Komplexit\u00e4t des Monolithen verwandelt sich in die Komplexit\u00e4t der Beziehungen zwischen den Services. In der Mikroservice-Architektur werden nur einfache Interaktionsmethoden verwendet.<\/p>\n<h2>Dezentralisierte Steuerung (Decentralized Governance)<\/h2>\n<p>\nWichtige Entscheidungen zu Mikroservices sollten von denjenigen getroffen werden, die tats\u00e4chlich Mikroservices entwickeln. Hierbei beziehen sich die Schl\u00fcsselentscheidungen auf die Auswahl<br \/>\nvon Programmiersprachen, Bereitstellungsmethoden, Vertr\u00e4gen f\u00fcr \u00f6ffentliche Schnittstellen usw. <\/p>\n<h2>Dezentralisierte Datenverwaltung (Decentralized Data Management)<\/h2>\n<p>\nDer Standardansatz, bei dem eine Anwendung auf einer einzigen Datenbank basiert, kann die Besonderheiten jedes einzelnen Services nicht ber\u00fccksichtigen. MSA setzt auf eine dezentralisierte Datenverwaltung, die bis zur Anwendung unterschiedlicher Technologien reicht.<\/p>\n<h2>Automatisierung der Infrastruktur (Infrastructure Automation)<\/h2>\n<p>\nMSA unterst\u00fctzt kontinuierliche Bereitstellungs- und Lieferprozesse. Dies ist nur durch die Automatisierung der Prozesse m\u00f6glich. Dabei erscheint die Bereitstellung einer gro\u00dfen Anzahl von Services nicht mehr bedrohlich. Der Bereitstellungsprozess sollte eint\u00f6nig werden. Ein zweiter Aspekt betrifft die Verwaltung von Services in einer Produktumgebung. Ohne Automatisierung wird das Management von Prozessen, die in verschiedenen Betriebssystemumgebungen ausgef\u00fchrt werden, unm\u00f6glich.<\/p>\n<h2>Fehlersicherheit (Design for failure)<\/h2>\n<p>\nZahlreiche MSA-Services sind Fehlermeldungen ausgesetzt. Die Fehlermanagement in einem verteilten System ist jedoch eine \u00e4u\u00dferst komplexe Aufgabe. Die Anwendungsarchitektur sollte widerstandsf\u00e4hig gegen\u00fcber solchen Fehlermeldungen sein. Rebecca Parsons h\u00e4lt es f\u00fcr \u00e4u\u00dferst wichtig, dass wir nicht einmal interne Prozessinteraktionen zwischen Services nutzen, sondern stattdessen auf HTTP zur\u00fcckgreifen, das in keinster Weise so zuverl\u00e4ssig ist.<\/p>\n<h2>Architektur mit evolution\u00e4rem Design (Evolutionary Design)<\/h2>\n<p>\nDie Architektur des MSA-Systems sollte sich evolution\u00e4r entwickeln. Es ist w\u00fcnschenswert, die notwendigen \u00c4nderungen auf die Grenzen eines einzelnen Dienstes zu beschr\u00e4nken. Es sollte auch der Einfluss auf andere Dienste ber\u00fccksichtigt werden. Der traditionelle Ansatz besteht darin, zu versuchen, dieses Problem \u00fcber Versionsmanagement zu l\u00f6sen, aber MSA sieht vor, Versionsmanagement als<br \/>\nletzte Ma\u00dfnahme zu verwenden.<\/p>\n<h2>Fazit<\/h2>\n<p>\nNach allem Gesagten l\u00e4sst sich formulieren, was Mikrodienste sind. Die mikrodienstliche Architektur ist ein Ansatz zur Entwicklung einer einzelnen Anwendung in Form einer Reihe kleiner Dienste, von denen jeder in seinem eigenen Prozess arbeitet und \u00fcber leichtgewichtige Mechanismen, oft \u00fcber die HTTP-Ressourcen-API, interagiert. Diese Dienste basieren auf Gesch\u00e4ftsm\u00f6glichkeiten und k\u00f6nnen unabh\u00e4ngig mit einem vollst\u00e4ndig<br \/>\nautomatisierten Bereitstellungsmechanismus implementiert werden. Es gibt ein minimales Ma\u00df an zentraler Verwaltung dieser Dienste, die in verschiedenen Programmiersprachen geschrieben sein k\u00f6nnen und unterschiedliche Datenspeichertechnologien verwenden.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\"><img decoding=\"async\" alt=\"Wahl des architektonischen Stils (Teil 3)\" src=\"\/wp-content\/uploads\/2020\/09\/f9ffd06c83921f64818842327c09108e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><i><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/519456\/\">Teil 2 lesen<\/a><\/noindex><\/i><br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/520870\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e \u0441\u0435\u0440\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043a \u0441\u0442\u0430\u0440\u0442\u0443 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0412\u044b\u0431\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043e\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0449\u0438\u0445 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043f\u0440\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0441\u0442\u0438\u043b\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u043a\u043e\u0433\u0434\u0430 \u043a\u0430\u043a\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":95404,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-95403","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=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440.\" \/>\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\/vybor-arhitekturnogo-stilya-chast-3\" \/>\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\u0412\u044b\u0431\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f (\u0447\u0430\u0441\u0442\u044c 3) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3\" \/>\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-09-28T17:43:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-28T17:43:15+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\udd47Wahl des architektonischen Stils (Teil 3) | ProHoster","description":"Hallo, Habr.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","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\u0412\u044b\u0431\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f (\u0447\u0430\u0441\u0442\u044c 3) | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","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-09-28T17:43:15+00:00","article:modified_time":"2020-09-28T17:43:15+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"95403","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 11:06:26","updated":"2022-10-01 11:38:49","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\/95403","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=95403"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/95403\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/95404"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=95403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=95403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=95403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}