{"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\/da\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","title":{"rendered":"Valg af arkitektonisk stil (del 3)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Hej, Habr. I dag forts\u00e6tter jeg min r\u00e6kke af indl\u00e6g, som jeg har skrevet specielt til lanceringen af det nye kursusforl\u00f8b. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\">\u00abSoftware Architect\u00bb<\/a><\/noindex>.<\/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. <\/p>\n<p>Sidste gang talte vi om de forskellige typer af monolitter og brugen af komponenter til deres opbygning, b\u00e5de samlingskomponenter og distributionskomponenter. Vi kiggede p\u00e5 serviceorienteret arkitektur.<\/p>\n<p>Nu vil vi endelig definere de grundl\u00e6ggende karakteristika for mikrotjenestearkitektur. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Forhold mellem arkitekturer<\/h2>\n<p>\nDet er vigtigt at forst\u00e5, at ud fra oplysningerne i de tidligere artikler, er enhver service en komponent, men ikke enhver service er en mikrotjeneste. <\/p>\n<h2>Karakteristika for mikrotjenestearkitektur<\/h2>\n<p>\nDe grundl\u00e6ggende karakteristika ved mikrotjenestearkitektur er:<\/p>\n<ul>\n<li>Organiseret omkring forretningsmuligheder (Organized around Business Capabilities)<\/li>\n<li>Produkter, ikke projekter (Products not Projects)<\/li>\n<li>Smarte indgange og dumme kanaler (Smart endpoints and dumb pipes)<\/li>\n<li>Decentraliseret styring (Decentralized Governance)<\/li>\n<li>Decentraliseret datastyring (Decentralized Data Management)<\/li>\n<li>Automatisering af infrastruktur (Infrastructure Automation)<\/li>\n<li>Design for fejl (Design for failure)<\/li>\n<li>Arkitektur med evolution\u00e6rt design (Evolutionary Design)<\/li>\n<\/ul>\n<p>\nDen f\u00f8rste punkt stammer fra serviceorienteret arkitektur, fordi mikrotjenester er en s\u00e6rlig form for services. De andre punkter fortjener en s\u00e6rskilt behandling.<\/p>\n<h2>Organiseret omkring forretningsmuligheder (Organized around Business Capabilities)<\/h2>\n<p>\nDet er nu vigtigt at huske p\u00e5 Conway's lov: organisationer, der skaber systemer, organiserer deres arkitektur, der afspejler interaktionsstrukturen inden for disse organisationer. Et eksempel er skabelsen af en compiler: et team p\u00e5 syv mennesker udviklede en syv-pass compiler, mens et team p\u00e5 fem mennesker udviklede en fem-pass.<\/p>\n<p>N\u00e5r vi taler om monolitter og mikrotjenester, s\u00e5 hvis udviklingen er organiseret efter funktionelle afdelinger (backend, frontend, databasedministratorer), s\u00e5 bliver det en klassisk monolit. <\/p>\n<p>For at opn\u00e5 mikrotjenester skal teams organiseres efter forretningsmuligheder (ordreredesign, forsendelse, katalog). En s\u00e5dan organisation vil give teams mulighed for at fokusere p\u00e5 at skabe specifikke dele af applikationen.<\/p>\n<h2>Produkter, ikke projekter (Products not Projects)<\/h2>\n<p>\nDen projektorienterede tilgang, hvor et team overdrager den udviklede funktionalitet til andre teams i tilf\u00e6lde af mikrotjenestearkitektur, er slet ikke passende. Teamet skal underst\u00f8tte systemet gennem hele dets livscyklus. Amazon, en af frontl\u00f8berne inden for implementering af mikrotjenester, har udtalt: \u00abdu skaber produktet, og du lancerer det\u00bb (\u00abyou build, you run it\u00bb). Den produktorienterede tilgang giver teamet mulighed for at forst\u00e5 forretningsbehovene. <\/p>\n<h2>Smarte indgange og dumme kanaler (Smart endpoints and dumb pipes)<\/h2>\n<p>\nSOA-arkitekturen lagde stor v\u00e6gt p\u00e5 kommunikationskanaler, is\u00e6r Enterprise Service Bus (servicebus for virksomheder). Dette f\u00f8rer ofte til Erroneous Spaghetti Box, hvilket betyder, at kompleksiteten i monolitten overg\u00e5r i kompleksiteten af forbindelserne mellem tjenester. I mikrotjenestearkitekturen anvendes kun enkle metoder til interaktion.<\/p>\n<h2>Decentraliseret styring (Decentralized Governance)<\/h2>\n<p>\nN\u00f8glebeslutninger om mikrotjenester skal tr\u00e6ffes af de personer, der faktisk udvikler mikrotjenesterne. Her forst\u00e5s n\u00f8glebeslutninger som valg<br \/>\naf programmeringssprog, implementeringsmetodologier, kontrakter for offentlige gr\u00e6nseflader osv. <\/p>\n<h2>Decentraliseret datastyring (Decentralized Data Management)<\/h2>\n<p>\nDen standardm\u00e6ssige tilgang, hvor applikationen er afh\u00e6ngig af en enkelt database, kan ikke tage hensyn til de specifikke krav i hver enkelt tjeneste. MSA antager decentraliseret datastyring, op til brugen af forskellige teknologier.<\/p>\n<h2>Automatisering af infrastruktur (Infrastructure Automation)<\/h2>\n<p>\nMSA underst\u00f8tter processer for kontinuerlig udrulning og levering. Dette kan kun opn\u00e5s gennem automatisering af processerne. Tilsvarende virker udrulningen af et stort antal tjenester ikke mere skr\u00e6mmende. Udrulningsprocessen skal blive kedelig. Den anden aspekt relaterer til h\u00e5ndtering af tjenester i produktionsmilj\u00f8et. Uden automatisering bliver styringen af processer, der k\u00f8rer i forskellige driftsmilj\u00f8er, umulig.<\/p>\n<h2>Design for fejl (Design for failure)<\/h2>\n<p>\nDe mange MSA-tjenester er udsat for fejl. Behandling af fejl i et distribueret system er en ret kompleks opgave. Applikationsarkitekturen skal v\u00e6re modstandsdygtig over for s\u00e5danne fejl. Rebecca Parsons anser det for meget vigtigt, at vi ikke l\u00e6ngere bruger endda intern procesinteraktion mellem tjenesterne; i stedet bruger vi HTTP til kommunikation, som sj\u00e6ldent er lige s\u00e5 p\u00e5lideligt.<\/p>\n<h2>Arkitektur med evolution\u00e6rt design (Evolutionary Design)<\/h2>\n<p>\nArkitektur MSA-systemet skal udvikles evolution\u00e6rt. Det er \u00f8nskeligt at begr\u00e6nse n\u00f8dvendige \u00e6ndringer til gr\u00e6nserne for \u00e9n tjeneste. Det er ogs\u00e5 vigtigt at tage hensyn til indflydelsen p\u00e5 andre tjenester. Den traditionelle tilgang er at fors\u00f8ge at l\u00f8se dette problem ved hj\u00e6lp af versionsstyring, men MSA foruds\u00e6tter, at versionsstyring bruges som<br \/>\nen sidste udvej.<\/p>\n<h2>Konklusion<\/h2>\n<p>\nEfter alt det ovenst\u00e5ende kan vi formulere, hvad mikrotjenester er. Mikrotjenestearkitektur er en tilgang til udvikling af en enkelt ans\u00f8gning som et s\u00e6t sm\u00e5 tjenester, hvor hver is\u00e6r k\u00f8rer i sin egen proces og interagerer gennem lettede mekanismer, ofte API-gr\u00e6nsefladen for HTTP-ressourcer. Disse tjenester er bygget p\u00e5 forretningsmuligheder og kan implementeres uafh\u00e6ngigt ved hj\u00e6lp af en fuldt<br \/>\nautomatiseret implementeringsmekanisme. Der er et minimumsniveau for centraliseret styring af disse tjenester, som kan v\u00e6re skrevet p\u00e5 forskellige programmeringssprog og bruge forskellige datalagringsteknologier.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\"><img decoding=\"async\" alt=\"Valg af arkitektonisk stil (del 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\/\">L\u00e6s del 2<\/a><\/noindex><\/i><br \/>\n<br \/>Kilde: <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.3 - 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\/da\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3\" \/>\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 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\/da\/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\udd47Valg af arkitekturstil (del 3) | ProHoster","description":"Hej, Habr.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","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 3) | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440.","og:url":"https:\/\/prohoster.info\/da\/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\/da\/wp-json\/wp\/v2\/posts\/95403","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=95403"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/95403\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/95404"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=95403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=95403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=95403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}