{"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\/sv\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","title":{"rendered":"Val av arkitektonisk stil (del 3)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Hej, Habr. I dag forts\u00e4tter jag serien av inl\u00e4gg som jag skrivit speciellt f\u00f6r starten av den nya kursomg\u00e5ngen. <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>\nValet av arkitekturtyp \u00e4r en av de grundl\u00e4ggande tekniska besluten vid uppbyggnaden av ett informationssystem. I denna artikelserie f\u00f6resl\u00e5r jag att vi g\u00e5r igenom de mest popul\u00e4ra arkitekturstilarna f\u00f6r applikationsutveckling och besvarar fr\u00e5gan om n\u00e4r vilken arkitekturtyp \u00e4r mest f\u00f6redragen. Under redog\u00f6relsen kommer jag att f\u00f6rs\u00f6ka dra en logisk kedja som f\u00f6rklarar utvecklingen av arkitekturstilar fr\u00e5n monoliter till mikrotj\u00e4nster. <\/p>\n<p>F\u00f6rra g\u00e5ngen pratade vi om olika typer av monoliter och hur man anv\u00e4nder komponenter f\u00f6r att bygga dem, b\u00e5de byggkomponenter och distribueringskomponenter. Vi f\u00f6rstod oss p\u00e5 serviceorienterad arkitektur.<\/p>\n<p>Nu ska vi \u00e4ntligen definiera de grundl\u00e4ggande egenskaperna hos mikrotj\u00e4nstarkitektur. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Relationen mellan arkitekturer<\/h2>\n<p>\nDet \u00e4r viktigt att f\u00f6rst\u00e5 att baserat p\u00e5 uppgifterna i de tidigare artiklarna \u00e4r varje tj\u00e4nst en komponent, men inte varje tj\u00e4nst \u00e4r en mikrotj\u00e4nst. <\/p>\n<h2>Egenskaper hos mikrotj\u00e4nstarkitektur<\/h2>\n<p>\nDe huvudsakliga egenskaperna hos mikrotj\u00e4nstarkitektur \u00e4r:<\/p>\n<ul>\n<li>Organiserad kring aff\u00e4rsm\u00f6jligheter (Organized around Business Capabilities)<\/li>\n<li>Produkter, inte projekt (Products not Projects)<\/li>\n<li>Smart ing\u00e5ngspunkter och dumma kanaler (Smart endpoints and dumb pipes)<\/li>\n<li>Decentraliserad styrning (Decentralized Governance)<\/li>\n<li>Decentraliserad datastyrning (Decentralized Data Management)<\/li>\n<li>Automatisering av infrastruktur (Infrastructure Automation)<\/li>\n<li>Design f\u00f6r fel (Design for failure)<\/li>\n<li>Arkitektur med evolutiv utveckling (Evolutionary Design)<\/li>\n<\/ul>\n<p>\nDen f\u00f6rsta punkten kommer fr\u00e5n serviceorienterad arkitektur, eftersom mikrotj\u00e4nster \u00e4r ett speciellt fall av tj\u00e4nster. De andra punkterna f\u00f6rtj\u00e4nar att behandlas separat.<\/p>\n<h2>Organiserad kring aff\u00e4rsm\u00f6jligheter (Organized around Business Capabilities)<\/h2>\n<p>\nDet \u00e4r nu viktigt att p\u00e5minna sig om Conway's lag: organisationer som skapar system organiserar dess arkitektur i enlighet med strukturen f\u00f6r interaktionen inom dessa organisationer. Ett exempel \u00e4r skapandet av en kompilator: ett team av sju personer utvecklade en sju-pass-compiler, och ett team av fem personer skapade en fem-pass-compiler.<\/p>\n<p>N\u00e4r vi pratar om monoliter och mikrotj\u00e4nster, om utvecklingen organiseras efter funktionella avdelningar (backend, frontend, databasadministrat\u00f6rer), s\u00e5 f\u00e5r vi en klassisk monolit. <\/p>\n<p>F\u00f6r att f\u00e5 mikrotj\u00e4nster m\u00e5ste teamen organiseras kring aff\u00e4rsm\u00f6jligheter (best\u00e4llningsteam, fraktteam, katalogteam). En s\u00e5dan organisation ger teamen m\u00f6jlighet att fokusera p\u00e5 att skapa specifika delar av applikationen.<\/p>\n<h2>Produkter, inte projekt (Products not Projects)<\/h2>\n<p>\nDen projektmetod d\u00e4r teamet \u00f6verl\u00e4mnar den utvecklade funktionaliteten till andra team vid anv\u00e4ndning av mikrotj\u00e4nstarkitektur \u00e4r helt ol\u00e4mplig. Teamet m\u00e5ste st\u00f6dja systemet under hela dess livscykel. Amazon, en av pionj\u00e4rerna inom mikrotj\u00e4nster, har uttalat: \"du bygger produkten, och du k\u00f6r den\" (\"you build, you run it\"). Produktmetoden g\u00f6r att teamet kan k\u00e4nna av aff\u00e4rens behov. <\/p>\n<h2>Smart ing\u00e5ngspunkter och dumma kanaler (Smart endpoints and dumb pipes)<\/h2>\n<p>\nSOA-arkitekturen lade stor vikt vid kommunikationskanaler, s\u00e4rskilt Enterprise Service Bus (tj\u00e4nstebuss f\u00f6r f\u00f6retag). Detta leder ofta till Erroneous Spaghetti Box, vilket inneb\u00e4r att monolittens komplexitet \u00f6verg\u00e5r till komplexitet i relationerna mellan tj\u00e4nster. Mikrotj\u00e4nstarkitektur anv\u00e4nder endast enkla interaktionss\u00e4tt.<\/p>\n<h2>Decentraliserad styrning (Decentralized Governance)<\/h2>\n<p>\nNyckell\u00f6sningar f\u00f6r mikrotj\u00e4nster b\u00f6r fattas av de personer som faktiskt utvecklar mikrotj\u00e4nster. H\u00e4r avses med nyckell\u00f6sningar valet<br \/>\nav programmeringsspr\u00e5k, distribueringsmetoder, kontrakt f\u00f6r offentliga gr\u00e4nssnitt osv. <\/p>\n<h2>Decentraliserad datastyrning (Decentralized Data Management)<\/h2>\n<p>\nDen standardmetod d\u00e4r en applikation \u00e4r beroende av en enda databas kan inte ta h\u00e4nsyn till de specifika behoven hos varje tj\u00e4nst. MSA inneb\u00e4r ett decentraliserat datastyrning, inklusive anv\u00e4ndning av olika teknologier.<\/p>\n<h2>Automatisering av infrastruktur (Infrastructure Automation)<\/h2>\n<p>\nMSA st\u00f6djer processer f\u00f6r kontinuerlig distribution och leverans. Detta \u00e4r bara m\u00f6jligt genom automatisering av processerna. Samtidigt verkar distribution av ett stort antal tj\u00e4nster inte l\u00e4ngre skr\u00e4mmande. Distribueringsprocessen b\u00f6r bli tr\u00e5kig. Den andra aspekten r\u00f6r hanteringen av tj\u00e4nster i en produktionsmilj\u00f6. Utan automatisering blir det om\u00f6jligt att hantera processer som k\u00f6rs i olika driftsmilj\u00f6er.<\/p>\n<h2>Design f\u00f6r fel (Design for failure)<\/h2>\n<p>\nM\u00e5nga tj\u00e4nster inom MSA \u00e4r ben\u00e4gna att misslyckas. \u00c5terkoppling av fel i ett distribuerat system \u00e4r en ganska komplex uppgift. Applikationsarkitekturen m\u00e5ste vara motst\u00e5ndskraftig mot s\u00e5dana fel. Rebecca Parsons anser att det \u00e4r oerh\u00f6rt viktigt att vi inte l\u00e4ngre anv\u00e4nder ens intraprocess-interaktion mellan tj\u00e4nster, utan ist\u00e4llet anv\u00e4nder vi HTTP f\u00f6r kommunikation, vilket s\u00e4llan \u00e4r lika tillf\u00f6rlitligt.<\/p>\n<h2>Arkitektur med evolutiv utveckling (Evolutionary Design)<\/h2>\n<p>\nMSA-systemens arkitektur m\u00e5ste utvecklas evolution\u00e4rt. Det \u00e4r \u00f6nskv\u00e4rt att begr\u00e4nsa n\u00f6dv\u00e4ndiga \u00e4ndringar till gr\u00e4nserna f\u00f6r en tj\u00e4nst. Det \u00e4r ocks\u00e5 n\u00f6dv\u00e4ndigt att ta h\u00e4nsyn till p\u00e5verkan p\u00e5 andra tj\u00e4nster. Den traditionella metoden \u00e4r att f\u00f6rs\u00f6ka l\u00f6sa detta problem genom versionshantering, men MSA f\u00f6resl\u00e5r att anv\u00e4nda versionshantering i<br \/>\nsom en sista utv\u00e4g.<\/p>\n<h2>Slutsats<\/h2>\n<p>\nEfter allt som har sagts kan vi formulera vad mikrotj\u00e4nster \u00e4r. Mikrotj\u00e4nstarkitektur \u00e4r en metod f\u00f6r att utveckla enskilda applikationer som ett set av sm\u00e5 tj\u00e4nster, var och en som fungerar i sin egen process och interagerar via l\u00e4tta mekanismer, ofta genom HTTP-resursens API-gr\u00e4nssnitt. Dessa tj\u00e4nster \u00e4r uppbyggda kring aff\u00e4rsm\u00f6jligheter och kan distribueras oberoende med hj\u00e4lp av en helt<br \/>\nautomatiserad distributionsmekanism. Det finns en minimal niv\u00e5 av centraliserad styrning av dessa tj\u00e4nster, som kan vara skrivna i olika programmeringsspr\u00e5k och anv\u00e4nda olika datalagringsteknologier.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\"><img decoding=\"async\" alt=\"Val av 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\u00e4s del 2<\/a><\/noindex><\/i><br \/>\n<br \/>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47Val av arkitektonisk stil (del 3) | ProHoster","description":"Hej, Habr.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/95403","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=95403"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/95403\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/95404"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=95403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=95403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=95403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}