{"id":94574,"date":"2020-09-18T19:42:57","date_gmt":"2020-09-18T17:42:57","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-2"},"modified":"2020-09-18T19:42:57","modified_gmt":"2020-09-18T17:42:57","slug":"vybor-arhitekturnogo-stilya-chast-2","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-2","title":{"rendered":"Wahl des architektonischen Stils (Teil 2)","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\/rRLl\/\">\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 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/516880\/\">letztes Mal<\/a><\/noindex> Wir haben uns mit dem Monolithen besch\u00e4ftigt und festgestellt, dass der Monolith eine Reihe von Problemen hat: Gr\u00f6\u00dfe, Koh\u00e4renz, Bereitstellung, Skalierbarkeit, Zuverl\u00e4ssigkeit und Tr\u00e4gheit. <\/p>\n<p>Dieses Mal m\u00f6chte ich \u00fcber die M\u00f6glichkeiten sprechen, ein System in Form eines Satzes von Modulen\/Bibliotheken (komponentenorientierte Architektur) oder Diensten (serviceorientierte Architektur) zu organisieren.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Komponentenorientierte Architektur<\/h2>\n<p>\nDie komponentenorientierte Architektur sieht vor, dass das System aus einer Reihe von Komponenten besteht, die sowohl in aktuellen als auch in zuk\u00fcnftigen Projekten verwendet werden k\u00f6nnen. Bei der Aufteilung des Systems in Komponenten werden folgende Aspekte ber\u00fccksichtigt: die Eignung zur Wiederverwendbarkeit, die Austauschbarkeit, die Unabh\u00e4ngigkeit vom Kontext, die Erweiterbarkeit, die Kapselung und die Unabh\u00e4ngigkeit.<\/p>\n<p>Bei sachgem\u00e4\u00dfem Einsatz von Komponenten wird das Problem des \u201egro\u00dfen Klumpens Schmutz\u201c (gro\u00dfe Gr\u00f6\u00dfe + hohe Koh\u00e4renz) gel\u00f6st, und die Komponenten selbst k\u00f6nnen sowohl als Baus\u00e4tze (Module, Bibliotheken) als auch als Bereitstellungseinheiten (Dienste) auftreten. Bereitstellungseinheiten spiegeln nicht immer den ausgef\u00fchrten Prozess wider: Zum Beispiel werden eine Webanwendung und eine Datenbank gemeinsam bereitgestellt. <\/p>\n<p>Am h\u00e4ufigsten werden Monolithen in Form einer Vielzahl von Modulen entwickelt. Dieser Ansatz gew\u00e4hrleistet die Unabh\u00e4ngigkeit der Entwicklung, jedoch bleiben die Probleme der unabh\u00e4ngigen Skalierung und Bereitstellung, der Fehlertoleranz und der Unabh\u00e4ngigkeit vom gemeinsamen Technologiestack bestehen. Aus diesem Grund ist ein Modul eine teilweise unabh\u00e4ngige Komponente.<\/p>\n<p>Das Hauptproblem eines solchen Monolithen ist, dass die Modultrennung rein logisch ist und leicht von Entwicklern verletzt werden kann. Es kann ein Core-Modul entstehen, das sich allm\u00e4hlich in einen Schrottplatz verwandelt, die Abh\u00e4ngigkeitsgraphen zwischen den Modulen k\u00f6nnen wachsen und so weiter. Um solche Probleme zu vermeiden, muss die Entwicklung von einem sehr erfahrenen Team geleitet oder unter der Leitung eines \"Architekten\" stehen, der sich ganzt\u00e4gig mit Code-Reviews besch\u00e4ftigt und Entwicklern, die die logische Struktur verletzen, auf die Finger klopft. <\/p>\n<p>Ein \"idealer\" Monolith besteht aus einer Reihe logisch getrennter Module, von denen jedes in seine eigene Datenbank schaut.<\/p>\n<h2>Serviceorientierte Architektur<\/h2>\n<p>\nWenn dennoch eine Organisation des Systems in Form einer Reihe von Services vorgesehen ist, spricht man von serviceorientierter Architektur. Ihre Prinzipien umfassen: Interoperabilit\u00e4t von benutzerorientierten Anwendungen, mehrfache Nutzung von Business-Services, Unabh\u00e4ngigkeit von Technologie-Stacks und Autonomie (unabh\u00e4ngige Evolution, Skalierbarkeit und Bereitstellbarkeit).<\/p>\n<p>Serviceorientierte Architektur (SOA = service-oriented architecture) l\u00f6st alle genannten Probleme des Monolithen: Bei \u00c4nderungen ist nur ein Service betroffen, w\u00e4hrend eine klar definierte API eine gute Kapselung der Komponenten unterst\u00fctzt. <\/p>\n<p>Aber es ist nicht alles so reibungslos: SOA bringt neue Probleme mit sich. Remote-Aufrufe sind teurer als lokale, und die Umverteilung von Aufgaben zwischen den Komponenten ist wesentlich kostspieliger geworden.<\/p>\n<p>\u00dcbrigens ist die M\u00f6glichkeit eines unabh\u00e4ngigen Deployments eine sehr wichtige Eigenschaft des Services. Wenn Services gemeinsam oder gar in einer bestimmten Reihenfolge bereitgestellt werden m\u00fcssen, kann das System nicht als serviceorientiert angesehen werden. In diesem Fall spricht man von einem verteilten Monolithen (dies wird nicht nur aus der Sicht von SOA als Antipattern angesehen, sondern auch aus der Perspektive der Mikroservice-Architektur). <\/p>\n<p>Serviceorientierte Architektur wird gut von der Architekturgemeinschaft und Anbietern unterst\u00fctzt. Daraus ergibt sich eine Vielzahl von Kursen und Zertifizierungen sowie gut ausgearbeiteten Mustern. Zu letzterem geh\u00f6rt beispielsweise der nicht unbekannte Enterprise Service Bus (ESB). Dabei ist der ESB ein Erbe von Anbietern und muss nicht zwingend in SOA verwendet werden.<\/p>\n<p>Der H\u00f6hepunkt der Beliebtheit von serviceorientierter Architektur lag etwa im Jahr 2008, danach begann sie zu sinken, wobei der R\u00fcckgang mit dem Aufkommen von Microservices (~2015) deutlich ausgepr\u00e4gter wurde.<\/p>\n<h2>Fazit<\/h2>\n<p>\nNachdem wir die M\u00f6glichkeiten zur Organisation von Informationssystemen in Form von Services und Modulen besprochen haben, schlage ich vor, endlich zu den Prinzipien der Microservices-Architektur \u00fcberzugehen und in der n\u00e4chsten Teil besonders auf die Unterschiede zwischen der Microservices-Architektur und der serviceorientierten Architektur einzugehen.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/rRLl\/\"><img decoding=\"async\" alt=\"Wahl des architektonischen Stils (Teil 2)\" src=\"\/wp-content\/uploads\/2020\/09\/d519b2419d13f1a7e03cc8064b83ab1f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/519456\/\">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":94575,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-94574","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. \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.\" \/>\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-2\" \/>\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 2) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-2\" \/>\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-18T17:42:57+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-18T17:42:57+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 Architekturstils (Teil 2) | ProHoster","description":"Hallo, Habr. Heute setze ich die Reihe von Beitr\u00e4gen fort, die ich speziell zum Start des neuen Kurses \u201aSoftware Architekt\u2018 geschrieben habe.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-2","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 2) | ProHoster","og:description":"\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.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-2","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-18T17:42:57+00:00","article:modified_time":"2020-09-18T17:42:57+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"94574","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:24:26","updated":"2022-10-03 07:40: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\/94574","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=94574"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/94574\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/94575"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=94574"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=94574"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=94574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}