{"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\/no\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-2","title":{"rendered":"Valg av arkitektonisk stil (del 2)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Hei, Habr. I dag fortsetter jeg serien av publikasjoner som jeg har skrevet spesielt for \u00e5 starte det nye kurset. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/rRLl\/\">\u00abSoftware Architect\u00bb<\/a><\/noindex>. <\/i><\/b><\/p>\n<p><\/p>\n<h2>Innledning<\/h2>\n<p>\nValg av arkitektonisk stil er en av de grunnleggende tekniske avgj\u00f8relsene n\u00e5r man bygger et informasjonssystem. I denne artikkelserien \u00f8nsker jeg \u00e5 g\u00e5 gjennom de mest popul\u00e6re arkitektoniske stilene for applikasjonsbygging og svare p\u00e5 sp\u00f8rsm\u00e5let om n\u00e5r en arkitektonisk stil er mest foretrukket. I l\u00f8pet av forklaringen vil jeg pr\u00f8ve \u00e5 trekke en logisk f\u00f8lge som forklarer utviklingen av arkitektoniske stiler fra monolitter til mikrotjenester. <\/p>\n<p>I <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/516880\/\">forrige gang<\/a><\/noindex> Vi har g\u00e5tt gjennom monolitten og kommet til at den har en rekke problemer: st\u00f8rrelse, sammenkobling, distribusjon, skalerbarhet, p\u00e5litelighet og tungmodighet. <\/p>\n<p>Denne gangen vil jeg snakke om mulighetene for \u00e5 organisere systemet i form av et ensemble av moduler\/biblioteker (komponentorientert arkitektur) eller tjenester (tjenesteorientert arkitektur).<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Komponentorientert arkitektur<\/h2>\n<p>\nKomponentorientert arkitektur inneb\u00e6rer at systemet kj\u00f8rer som et ensemble av komponenter som kan brukes b\u00e5de i n\u00e5v\u00e6rende og fremtidige prosjekter. N\u00e5r systemet deles opp i komponenter, tas det hensyn til: deres egnethet for gjenbruk, erstatting, uavhengighet fra konteksten, utvidbarhet, innkapsling og uavhengighet.<\/p>\n<p>N\u00e5r komponenter brukes riktig, l\u00f8ses problemet med \"den store klumpen med dritt\" (stor st\u00f8rrelse + h\u00f8y sammenkobling), og komponentene kan representere b\u00e5de enheter for bygging (moduler, biblioteker) og distribusjon (tjenester). Distribusjonsenheter gjenspeiler ikke alltid den kj\u00f8rende prosessen: for eksempel distribueres et webapplikasjon og en database sammen. <\/p>\n<p>Monolitter utvikles oftest som et sett med moduler. Denne tiln\u00e6rmingen f\u00f8rer til uavhengighet i utviklingen, men problemer med uavhengig skalering og distribusjon, feiltoleranse og uavhengighet fra den generelle teknologiske stakken forblir. Derfor er modulen en delvis uavhengig komponent.<\/p>\n<p>Det st\u00f8rste problemet med en slik monolitt er at oppdelingen i moduler er rent logisk og lett kan bli brutt av utviklerne. Det kan dukke opp en core-modul som gradvis utvikler seg til \u00e5 bli en s\u00f8ppeldynge, og det kan oppst\u00e5 en vekst i avhengighetsgrafen mellom modulene, og s\u00e5 videre. For \u00e5 unng\u00e5 slike problemer m\u00e5 utviklingen ledes av enten et veldig erfarent team eller under ledelse av en \"arkitekt\" som jobber heltid med kodegjennomgang og p\u00e5peker brudd p\u00e5 den logiske strukturen av utviklerne. <\/p>\n<p>Den \u00abideelle\u00bb monolitt best\u00e5r av et sett logisk atskilte moduler, hvor hver av dem peker mot sin egen database.<\/p>\n<h2>Tjenesteorientert arkitektur<\/h2>\n<p>\nHvis man likevel planlegger \u00e5 organisere systemet som et sett tjenester, snakker man om tjenesteorientert arkitektur. Dens prinsipper er: kompatibilitet mellom brukerorienterte applikasjoner, gjenbruk av forretnings tjenester, uavhengighet fra teknologiske sett og autonomi (uavhengig evolusjon, skalerbarhet og distribuerbarhet).<\/p>\n<p>Tjenesteorientert arkitektur (SOA = service oriented architecture) l\u00f8ser alle de merkede problemene med monolitten: ved endringer ber\u00f8res kun \u00e9n tjeneste, og et klart definert API opprettholder god innkapsling av komponentene. <\/p>\n<p>Men ikke alt er s\u00e5 enkelt: SOA f\u00f8rer til nye problemer. Fjerntilkallinger er dyrere enn lokale, og omfordeling av oppgaver mellom komponentene har blitt betydelig dyrere.<\/p>\n<p>For \u00f8vrig er muligheten for uavhengig distribusjon en veldig viktig egenskap ved tjenesten. Hvis tjenestene m\u00e5 distribueres sammen eller, enda verre, i en bestemt rekkef\u00f8lge, kan ikke systemet betraktes som tjenesteorientert. I s\u00e5 fall snakker man om en distribuert monolitt (som anses som et antipattern b\u00e5de fra et SOA- og mikrotjenesteperspektiv). <\/p>\n<p>Tjenesteorientert arkitektur f\u00e5r god st\u00f8tte fra det arkitektoniske fellesskapet og leverand\u00f8rer. Herav kommer et stort antall kurs og sertifiseringer, samt velutviklede m\u00f8nstre. Et av de mer kjente er enterprise service bus (ESB). Samtidig er ESB en bagasje fra leverand\u00f8rene; den m\u00e5 ikke n\u00f8dvendigvis brukes i SOA.<\/p>\n<p>Toppunktet for populariteten til tjenesteorientert arkitektur var rundt 2008, etter dette begynte den \u00e5 avta, og nedgangen ble betydelig brattere etter fremveksten av mikrotjenester (~2015).<\/p>\n<h2>Konklusjon<\/h2>\n<p>\nEtter at vi har diskutert mulighetene for organisering av informasjonssystemer som tjenester og moduler, foresl\u00e5r jeg \u00e5 g\u00e5 videre til prinsippene for mikrotjenestearkitektur og gi s\u00e6rlig oppmerksomhet til forskjellen mellom mikrotjenestearkitektur og tjenesteorientert arkitektur i den neste delen.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/rRLl\/\"><img decoding=\"async\" alt=\"Valg av arkitektonisk stil (del 2)\" src=\"\/wp-content\/uploads\/2020\/09\/d519b2419d13f1a7e03cc8064b83ab1f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Kilde: <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.5 - 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\/no\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-2\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nn_NO\" \/>\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\/no\/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\udd47Valg av arkitektonisk stil (del 2) | ProHoster","description":"Hei, Habr. I dag fortsetter jeg serien med innlegg jeg har skrevet spesielt for oppstarten av det nye kullet av kurset \u00abSoftware Architect\u00bb.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/94574","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=94574"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/94574\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/94575"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=94574"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=94574"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=94574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}