{"id":92810,"date":"2020-08-31T07:42:09","date_gmt":"2020-08-31T05:42:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1"},"modified":"2020-08-31T07:42:09","modified_gmt":"2020-08-31T05:42:09","slug":"vybor-arhitekturnogo-stilya-chast-1","status":"publish","type":"post","link":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1","title":{"rendered":"Valg av arkitekturstil (del 1)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Hei, Habr. Akkurat n\u00e5 er OTUS \u00e5pnet for p\u00e5melding til et nytt kull av kurset <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/5RTk\/\">\u00abSoftware Architect\u00bb<\/a><\/noindex>. I forkant av kursstart vil jeg dele min egen artikkel med dere.<\/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. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Litt historie<\/h2>\n<p>\nHvis du pr\u00f8ver \u00e5 stille utviklere sp\u00f8rsm\u00e5let: \u00abHvorfor trenger vi mikrotjenester?\u00bb, vil du f\u00e5 de mest varierte svarene. Du vil h\u00f8re at mikrotjenester forbedrer skalerbarheten, forenkler forst\u00e5elsen av koden, \u00f8ker feilfriheten, og noen ganger kan det h\u00f8res ut som om de lar deg \u00abrydde opp i koden\u00bb. La oss se p\u00e5 historien for \u00e5 forst\u00e5 hva som var m\u00e5let med fremveksten av mikrotjenester.<\/p>\n<p>Kort sagt, mikrotjenester i v\u00e5r n\u00e5v\u00e6rende forst\u00e5else oppstod slik: I 2011 la James Lewis, i analyse av ulike selskapers arbeid, merke til fremveksten av et nytt m\u00f8nster kalt \u00abmicro-app\u00bb, som optimaliserte SOA med tanke p\u00e5 \u00e5 fremskynde distribusjonen av tjenester. Senere, i 2012, ble m\u00f8nsteret omd\u00f8pt til mikrotjeneste p\u00e5 en arkitektursummit. Dermed var det opprinnelige m\u00e5let med innf\u00f8ringen av mikrotjenester \u00e5 forbedre det velkjente <b>time to market<\/b>.<\/p>\n<p>P\u00e5 b\u00f8lgen av hype var mikrotjenester i 2015. If\u00f8lge noen unders\u00f8kelser, var det ingen konferanse uten en presentasjon om mikrotjenester. Dessuten var noen konferanser utelukkende dedikert til mikrotjenester. I dag starter mange prosjekter med bruk av denne arkitektoniske stilen, og hvis prosjektet inneholder store mengder legacy-kode, skjer det sannsynligvis aktiv migrering til mikrotjenester.<\/p>\n<p>Til tross for alt dette, er det fortsatt et relativt lite antall utviklere som kan definere begrepet \u00abmikrotjeneste\u00bb. Men om dette skal vi snakke litt senere...<\/p>\n<h2>Monolit<\/h2>\n<p>\nDen arkitekturtype der st\u00e5r i kontrast til mikrotjenester er monolitten (eller \u00abalt-i-ett\u00bb). Det gir sannsynligvis ikke mening \u00e5 forklarer hva en monolitt er, s\u00e5 jeg vil umiddelbart liste opp ulempene ved denne arkitekturtypen som har initiert videre utvikling av arkitekturstiler: st\u00f8rrelse, sammenkobling, distribusjon, skalerbarhet, p\u00e5litelighet og stivhet. Nedenfor tilbyr jeg \u00e5 bli kjent med hver av ulempene hver for seg.<\/p>\n<h3>St\u00f8rrelse<\/h3>\n<p>\nMonolitten er veldig stor. Og den snakker vanligvis med en veldig stor database. Applikasjonen blir for omfattende til at en enkelt utvikler i utgangspunktet kan forst\u00e5 den. Bare de som har brukt mye tid med denne koden, kan jobbe godt med monolitten, mens nykommere vil bruke mye tid p\u00e5 \u00e5 pr\u00f8ve \u00e5 forst\u00e5 monolitten, med usikker utgang. Vanligvis finnes det alltid en slags \u00abbetinget\u00bb senior n\u00e5r man arbeider med monolitten, som kjenner den mer eller mindre godt og som gir pekefinger til andre nye utviklere i l\u00f8pet av et \u00e5r eller halvannet. Selvf\u00f8lgelig er en slik betinget senior et enkelt feilpunkt, og hans avgang kan f\u00f8re til monolittens d\u00f8d. <\/p>\n<h3>Sammenkobling<\/h3>\n<p>\nMonolitten representerer et \u00abstort klump av s\u00f8le\u00bb (big ball of mud), der endringer kan f\u00f8re til uforutsigbare konsekvenser. Hvis man gj\u00f8r endringer ett sted, kan man skade monolitten et annet sted (det som heter \u00abkl\u00f8dd i \u00f8ret, *@ falt av\u00bb). Dette henger sammen med at komponentene i monolitten har veldig komplekse og, viktigst av alt, ikke-opplagte forhold til hverandre.<\/p>\n<h3>Distribusjon<\/h3>\n<p>\nDistribusjonen av monolitten p\u00e5 grunn av de komplekse forholdene mellom dens komponenter \u2014 er en langvarig prosess med sine egne ritualer. Et slikt ritual er vanligvis ikke endelig standardisert og overleveres \u00abmellom folk\u00bb. <\/p>\n<h3>Skalerbarhet<\/h3>\n<p>\nModulene til monolitten kan ha motstridende behov for ressurser, noe som gj\u00f8r at man m\u00e5 finne en kompromiss n\u00e5r det gjelder maskinvare. Tenk deg at monolitten din best\u00e5r av tjenestene A og B. Tjeneste A er kresen p\u00e5 harddiskst\u00f8rrelse, mens tjeneste B er p\u00e5 minne. I s\u00e5 fall m\u00e5 enten maskinen der monolitten installeres, oppfylle kravene til begge tjenester, eller man m\u00e5 manuelt og kunstig sl\u00e5 av en av tjenestene.<\/p>\n<p>Et annet eksempel (mer klassisk): Tjeneste A er mye mer popul\u00e6r enn tjeneste B, s\u00e5 du \u00f8nsker at det skal v\u00e6re 100 av tjeneste A og 10 av tjeneste B. Igjen har vi to alternativer: enten setter vi opp 100 komplette monolitter, eller vi m\u00e5 manuelt deaktivere tjeneste B p\u00e5 noen av dem. <\/p>\n<h3>P\u00e5litelighet<\/h3>\n<p>\nSiden alle tjenestene er samlet, hvis monolitten feiler, svikter alle tjenestene samtidig. Faktisk kan dette kanskje ikke v\u00e6re s\u00e5 ille, i det minste vil det ikke v\u00e6re delvise feil i et distribuert system, men p\u00e5 den annen side, p\u00e5 grunn av en feil i funksjonaliteten som kun 0,001% av brukerne benytter, kan du miste alle brukerne av systemet ditt. <\/p>\n<h3>Stivhet<\/h3>\n<p>\nP\u00e5 grunn av st\u00f8rrelsen p\u00e5 monolitten er det vanskelig \u00e5 overg\u00e5 til nye teknologier. Som en konsekvens av dette blir det en egen oppgave \u00e5 beholde den samme betingede senioren. Teknologistacken som ble valgt i starten av prosjektet kan bli en hindring for produktutviklingen. <\/p>\n<h2>Konklusjon<\/h2>\n<p>\nNeste gang skal vi snakke om hvordan folk har fors\u00f8kt \u00e5 l\u00f8se de nevnte problemene ved \u00e5 g\u00e5 over til komponenter og SOA.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/5RTk\/\"><img decoding=\"async\" alt=\"Valg av arkitekturstil (del 1)\" src=\"\/wp-content\/uploads\/2020\/08\/d1582a83ad9cf8722a035dfd9a212aa5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<blockquote>\n<h4>Les mer:<\/h4>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/504144\/\">Hvorfor SQL Server ikke garanterer sortering av resultater uten ORDER BY<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/508206\/\">Arkitektur for utviklere og administratorer: Hvilke ferdigheter trenger de?<\/a><\/noindex><\/li>\n<\/ul>\n<\/blockquote>\n<p>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/516880\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb. \u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430 \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u0441\u0432\u043e\u0435\u0439 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439. \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 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92811,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92810","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, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \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-1\" \/>\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 1) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \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-1\" \/>\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-08-31T05:42:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-31T05:42:09+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 arkitekturstil (del 1) | ProHoster","description":"Hei, Habr. Akkurat n\u00e5 har OTUS \u00e5pnet p\u00e5melding til et nytt kull av kurset \u00abSoftware Architect\u00bb.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1","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 1) | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb.","og:url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1","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-08-31T05:42:09+00:00","article:modified_time":"2020-08-31T05:42:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92810","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 12:00:37","updated":"2022-10-03 23:14:42","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\/92810","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=92810"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/92810\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/92811"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=92810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=92810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=92810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}