{"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\/da\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1","title":{"rendered":"Valg af arkitektonisk stil (del 1)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Hej, Habr. Lige nu er der \u00e5bent for tilmelding til et nyt hold i OTUS-kurset <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/5RTk\/\">\u00abSoftware Architect\u00bb<\/a><\/noindex>. Forud for kursusstart vil jeg dele min egen artikel med dig.<\/i><\/b><\/p>\n<p><\/p>\n<h2>Introduktion<\/h2>\n<p>\nValget af arkitektonisk stil er en af de grundl\u00e6ggende tekniske beslutninger, n\u00e5r man bygger et informationssystem. I denne r\u00e6kke artikler vil jeg unders\u00f8ge de mest popul\u00e6re arkitektoniske stilarter for applikationsopbygning og besvare sp\u00f8rgsm\u00e5let om, hvorn\u00e5r hvilken arkitektonisk stil er mest foretrukken. Undervejs vil jeg fors\u00f8ge at f\u00f8re en logisk tr\u00e5d, der forklarer udviklingen af arkitektoniske stilarter fra monolitter til mikroservices. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Lidt historie<\/h2>\n<p>\nHvis du pr\u00f8ver at stille sp\u00f8rgsm\u00e5let til udviklerne: \"Hvorfor er microservices n\u00f8dvendige?\", s\u00e5 f\u00e5r du de mest forskellige svar. Du vil h\u00f8re, at microservices forbedrer skal\u00e9rbarhed, g\u00f8r koden lettere at forst\u00e5, forbedrer fejltolerance, og nogle gange kan man h\u00f8re, at de tillader at \"rydde op i koden\". Lad os se tilbage i historien for at forst\u00e5, hvilket m\u00e5l der l\u00e5 bag fremkomsten af microservices.<\/p>\n<p>Kort sagt, blev microservices i vores nuv\u00e6rende forst\u00e5else til p\u00e5 f\u00f8lgende m\u00e5de: I 2011, mens James Lewis analyserede forskellige virksomheders arbejde, bem\u00e6rkede han fremkomsten af et nyt m\u00f8nster kaldet \"micro-app\", som optimerede SOA med hensyn til hurtigere udrulning af tjenester. Senere, i 2012, blev m\u00f8nsteret omd\u00f8bt til microservice p\u00e5 en arkitekturkonference. Dermed var det oprindelige m\u00e5l med implementeringen af microservices at forbedre den berygtede <b>time to market<\/b>.<\/p>\n<p>I \"buzz-perioden\" var microservices fremtr\u00e6dende i 2015. If\u00f8lge nogle unders\u00f8gelser gik ingen konference uden et indl\u00e6g om microservices. Desuden var nogle konferencer udelukkende dedikeret til microservices. I dag starter mange projekter med anvendelse af denne arkitektoniske stil, og hvis projektet indeholder tonsvis af legacy-kode, er der helt sikkert gang i migreringen til microservices.<\/p>\n<p>P\u00e5 trods af alt dette er der stadig et forholdsvis lille antal udviklere, der kan definere begrebet \"microservice\". Men det vil vi tale om lidt senere\u2026<\/p>\n<h2>Monolit<\/h2>\n<p>\nDen arkitektoniske stil, der mods\u00e6ttes microservice-stilen, er monolit (eller \"alt i \u00e9t\"). Det giver nok ikke mening at fort\u00e6lle, hvad en monolit er, s\u00e5 jeg vil straks liste ulemperne ved denne arkitektoniske stil, som initierede yderligere udvikling af arkitektoniske stilarter: st\u00f8rrelse, sammenh\u00e6ng, udrulning, skal\u00e9rbarhed, p\u00e5lidelighed og stivhed. Nedenfor foresl\u00e5r jeg at se n\u00e6rmere p\u00e5 hver af ulemperne.<\/p>\n<h3>St\u00f8rrelse<\/h3>\n<p>\nMonolitten er meget stor. Og den kommunikerer som regel med en meget stor database. Applikationen bliver for stor til, at \u00e9n udvikler overhovedet kan forst\u00e5 den. Kun dem, der har brugt meget tid p\u00e5 denne kode, kan arbejde godt med monolitten, mens nybegyndere vil bruge meget tid p\u00e5 at fors\u00f8ge at forst\u00e5 monolitten, og det er ikke sikkert, at de lykkes. Normalt er der altid en slags 'senior', der kender monolitten nogenlunde godt, og som holder \u00f8je med de nye udviklere i l\u00f8bet af et \u00e5r til halvandet. Det er klart, at en s\u00e5dan senior er det eneste svage led, og hans eller hendes frav\u00e6r kan f\u00f8re til monolittens undergang. <\/p>\n<h3>Sammenh\u00e6ng<\/h3>\n<p>\nMonolitten kan beskrives som en \"stor klump mudder\" (big ball of mud), hvor \u00e6ndringer kan f\u00f8re til uforudsigelige konsekvenser. At \u00e6ndre \u00e9n ting et sted kan skade monolitten et andet sted (det er den klassiske 'kl\u00f8 \u00f8ret og *@ det falder af'). Dette skyldes, at komponenterne i monolitten har meget komplekse og, vigtigst af alt, ikke-\u00e5benlyse interrelationer.<\/p>\n<h3>Udrulning<\/h3>\n<p>\nUdrulning af monolitten, p\u00e5 grund af de komplekse relationer mellem dens komponenter, er en lang proces med sine egne ritualer. Et s\u00e5dant ritual er normalt ikke fuldst\u00e6ndig standardiseret og videregives \"mund til mund\". <\/p>\n<h3>Skalering<\/h3>\n<p>\nModulerne i monolitten kan have konflikte behov for ressourcer, hvorfor det er n\u00f8dvendigt at s\u00f8ge kompromis fra et hardware-perspektiv. Forestil dig, at din monolit best\u00e5r af tjenester A og B. Tjeneste A kr\u00e6ver meget diskplads, mens tjeneste B kr\u00e6ver meget RAM. I s\u00e5 fald skal maskinen, som monolitten installeres p\u00e5, enten opfylde kravene fra begge tjenester, eller det bliver n\u00f8dvendigt at slukke for den ene tjeneste manuelt.<\/p>\n<p>Et andet eksempel (mere klassisk): Tjeneste A er meget mere popul\u00e6r end tjeneste B, s\u00e5 du \u00f8nsker, at der er 100 af tjeneste A og 10 af tjeneste B. Igen er der to muligheder: enten udruller vi 100 fuldgyldige monolitter, eller p\u00e5 nogle af dem m\u00e5 vi manuelt slukke for tjenesterne B. <\/p>\n<h3>P\u00e5lidelighed<\/h3>\n<p>\nDa alle tjenester er samlet, falder alle tjenester samtidigt, hvis monolitten fejler. Faktisk er det m\u00e5ske ikke s\u00e5 skidt, da der i det mindste ikke vil v\u00e6re delvise fejl i et distribueret system. Men p\u00e5 den anden side kan en fejl i funktionaliteten, som 0,001% af brugerne anvender, f\u00f8re til tab af alle brugere i dit system. <\/p>\n<h3>Stivhed<\/h3>\n<p>\nP\u00e5 grund af monolitens st\u00f8rrelse er det sv\u00e6rt at overg\u00e5 til nye teknologier. Som f\u00f8lge heraf bliver det en s\u00e6rskilt opgave at fastholde den s\u00e5kaldte senior. Den teknologistak, der blev valgt ved projektets start, kan blive en hindring for produktets udvikling. <\/p>\n<h2>Konklusion<\/h2>\n<p>\nN\u00e6ste gang vil vi tale om, hvordan folk har fors\u00f8gt at l\u00f8se de n\u00e6vnte problemer ved at g\u00e5 over til komponenter og SOA.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/5RTk\/\"><img decoding=\"async\" alt=\"Valg af arkitektonisk stil (del 1)\" src=\"\/wp-content\/uploads\/2020\/08\/d1582a83ad9cf8722a035dfd9a212aa5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<blockquote>\n<h4>L\u00e6s mere:<\/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 af resultater uden ORDER BY<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/508206\/\">Arkitektur for udviklere og administratorer: Hvilke f\u00e6rdigheder er n\u00f8dvendige for hvem?<\/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.3 - 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\/da\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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 af arkitekturstil (del 1) | ProHoster","description":"Hej, Habr. Lige nu er der \u00e5bent for tilmelding til det nye hold af kurset \"Software Architect\" i OTUS.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/92810","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=92810"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/92810\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/92811"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=92810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=92810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=92810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}