{"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\/no\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","title":{"rendered":"Valg av arkitekturstil (del 3)","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\/z0Ur\/\">\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>Sist tid snakket vi om forskjellige typer monolitter og bruken av komponenter for \u00e5 bygge dem, b\u00e5de sammensettingskomponenter og distribusjonskomponenter. Vi gikk gjennom tjenesteorientert arkitektur.<\/p>\n<p>N\u00e5 skal vi endelig definere hovedkarakteristikkene ved mikrotjenestearkitektur. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Forholdet mellom arkitekturer<\/h2>\n<p>\nDet er viktig \u00e5 forst\u00e5 at, basert p\u00e5 dataene i de foreg\u00e5ende artiklene, er enhver tjeneste en komponent, men ikke enhver tjeneste er en mikrotjeneste. <\/p>\n<h2>Karakteristikker ved mikrotjenestearkitektur<\/h2>\n<p>\nDe viktigste karakteristikkene ved mikrotjenestearkitektur er:<\/p>\n<ul>\n<li>Organisert rundt forretningsmuligheter (Organized around Business Capabilities)<\/li>\n<li>Produkter, ikke prosjekter (Products not Projects)<\/li>\n<li>Smarte innganger og dumme kanaler (Smart endpoints and dumb pipes)<\/li>\n<li>Desentralisert styring (Decentralized Governance)<\/li>\n<li>Desentralisert datastyring (Decentralized Data Management)<\/li>\n<li>Automatisering av infrastruktur (Infrastructure Automation)<\/li>\n<li>Designet for feil (Design for failure)<\/li>\n<li>Arkitektur med evolusjon\u00e6r utvikling (Evolutionary Design)<\/li>\n<\/ul>\n<p>\nDet f\u00f8rste punktet kommer fra tjenesteorientert arkitektur, fordi mikrotjenester er et spesialtilfelle av tjenester. De andre punktene fortjener egen omtale.<\/p>\n<h2>Organisert rundt forretningsmuligheter (Organized around Business Capabilities)<\/h2>\n<p>\nDet er n\u00e5 n\u00f8dvendig \u00e5 huske Conway's lov: organisasjoner som lager systemer, organiserer sin arkitektur for \u00e5 speile interaksjonsstrukturen innen disse organisasjonene. Som et eksempel kan vi nevne tilfelle av \u00e5 lage en kompilator: et team p\u00e5 syv personer utviklet en syvgjennomgangs kompilator, mens et team p\u00e5 fem laget en femgjennomgangs.<\/p>\n<p>N\u00e5r vi snakker om monolitter og mikrotjenester, hvis utviklingen er organisert etter funksjonelle avdelinger (backend, frontend, databaseadministratorer), f\u00e5r vi en klassisk monolitt. <\/p>\n<p>For \u00e5 oppn\u00e5 mikrotjenester, m\u00e5 teamene organiseres rundt forretningsmuligheter (bestillingsteam, fraktteam, katalogteam). En slik organisering gir teamene mulighet til \u00e5 fokusere p\u00e5 \u00e5 lage spesifikke deler av applikasjonen.<\/p>\n<h2>Produkter, ikke prosjekter (Products not Projects)<\/h2>\n<p>\nDen prosjektbaserte tiln\u00e6rmingen der teamet overf\u00f8rer utviklet funksjonalitet til andre team i tilfelle av mikrotjenestearkitektur passer rett og slett ikke. Teamet m\u00e5 st\u00f8tte systemet gjennom hele livssyklusen. Selskapet Amazon, en av forkjemperne for implementering av mikrotjenester, har uttalt: \u00abdu bygger produktet, og du kj\u00f8rer det\u00bb (\u00abyou build, you run it\u00bb). Den produktbaserte tiln\u00e6rmingen lar teamet forst\u00e5 forretningsbehovene. <\/p>\n<h2>Smarte innganger og dumme kanaler (Smart endpoints and dumb pipes)<\/h2>\n<p>\nSOA-arkitekturen la stor vekt p\u00e5 kommunikasjonskanaler, spesielt Enterprise Service Bus (tjenestebuss for bedrifter). Dette f\u00f8rer ofte til Erroneous Spaghetti Box, det vil si at kompleksiteten fra monolitten overf\u00f8res til kompleksiteten av forbindelsene mellom tjenestene. I mikrotjenestearkitektur brukes kun enkle metoder for interaksjon.<\/p>\n<h2>Desentralisert styring (Decentralized Governance)<\/h2>\n<p>\nN\u00f8kkelbeslutninger om mikrotjenester m\u00e5 tas av de som faktisk utvikler mikrotjenestene. Her forst\u00e5s n\u00f8kkelbeslutningene som valg<br \/>\nav programmeringsspr\u00e5k, distribusjonsmetodologier, kontrakter for offentlige grensesnitt, osv. <\/p>\n<h2>Desentralisert datastyring (Decentralized Data Management)<\/h2>\n<p>\nDen standard tiln\u00e6rmingen der applikasjonen er avhengig av \u00e9n database kan ikke ta hensyn til spesifikasjonene for hver enkelt tjeneste. MSA forutsetter desentralisert datastyring, inkludert bruk av ulike teknologier.<\/p>\n<h2>Automatisering av infrastruktur (Infrastructure Automation)<\/h2>\n<p>\nMSA st\u00f8tter prosessene for kontinuerlig distribusjon og levering. Dette kan kun oppn\u00e5s gjennom automatisering av prosessene. Utrullingen av et stort antall tjenester virker derfor ikke lenger skremmende. Distribusjonsprosessen b\u00f8r bli monoton. Det andre aspektet knytter seg til forvaltningen av tjenester i et produktiv milj\u00f8. Uten automatisering blir det umulig \u00e5 administrere prosesser som kj\u00f8res i ulike driftsmilj\u00f8er.<\/p>\n<h2>Designet for feil (Design for failure)<\/h2>\n<p>\nNumer\u00f8se tjenester i MSA er utsatt for feil. Behandling av feil i et distribuert system er en ganske ikke-triviell oppgave. Applikasjonsarkitekturen m\u00e5 v\u00e6re motstandsdyktig mot slike feil. Rebecca Parsons mener det er sv\u00e6rt viktig at vi ikke lenger bruker selv mellomprosesskommunikasjon mellom tjenestene; i stedet bruker vi HTTP for kommunikasjon, som ikke engang n\u00e6rmer seg den samme p\u00e5liteligheten.<\/p>\n<h2>Arkitektur med evolusjon\u00e6r utvikling (Evolutionary Design)<\/h2>\n<p>\nMSA-systemens arkitektur m\u00e5 utvikles evolusjon\u00e6rt. Det er \u00f8nskelig \u00e5 begrense n\u00f8dvendige endringer til grensene for \u00e9n tjeneste. Det er ogs\u00e5 viktig \u00e5 ta hensyn til innflytelsen p\u00e5 andre tjenester. Den tradisjonelle tiln\u00e6rmingen er \u00e5 pr\u00f8ve \u00e5 l\u00f8se dette problemet ved hjelp av versjonskontroll, men MSA forutsetter at versjonskontroll brukes<br \/>\nsom en siste utvei.<\/p>\n<h2>Konklusjon<\/h2>\n<p>\nEtter alt det ovennevnte kan vi formulere hva mikrotjenester er. Mikrotjenestearkitektur er en tiln\u00e6rming til utvikling av en separat applikasjon som et sett av sm\u00e5 tjenester, der hver av dem kj\u00f8rer i sin egen prosess og samhandler via lette mekanismer, ofte gjennom API-grensesnitt av HTTP-ressurser. Disse tjenestene er bygget rundt forretningsmuligheter og kan implementeres uavhengig ved hjelp av fullt<br \/>\nautomatiserte distribusjonsmekanismer. Det finnes et minimum av sentralisert kontroll over disse tjenestene, som kan v\u00e6re skrevet p\u00e5 forskjellige programmeringsspr\u00e5k og bruke forskjellige datalagringsteknologier.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\"><img decoding=\"async\" alt=\"Valg av arkitekturstil (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\/\">Les 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.5 - 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\/no\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3\" \/>\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 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\/no\/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 av arkitekturstil (del 3) | ProHoster","description":"Hei, Habr.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","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 3) | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440.","og:url":"https:\/\/prohoster.info\/no\/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\/no\/wp-json\/wp\/v2\/posts\/95403","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=95403"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/95403\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/95404"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=95403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=95403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=95403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}