{"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\/et\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","title":{"rendered":"Arhitektuuristiili valik (osa 3)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Tere, Habr. T\u00e4na j\u00e4tan oma artiklite seeriat, mille kirjutasin spetsiaalselt uue kursuse voolu alguseks. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\">\u201eTarkvara arhitekt\u201c<\/a><\/noindex>.<\/i><\/b><\/p>\n<p><\/p>\n<h2>Sissejuhatus<\/h2>\n<p>\nArhitektuuristiili valimine on \u00fcks p\u00f5hitehnilisi otsuseid teabe s\u00fcsteemi loomisel. Selles artiklite seerias soovin uurida populaarseimaid rakenduste arhitektuuristiile ja vastata k\u00fcsimusele, millal on m\u00f5ni arhitektuuristiil k\u00f5ige eelistatum. Kirjutamise k\u00e4igus p\u00fc\u00fcan esitada loogilise ahela, mis selgitab arhitektuuristiilide arengut monoliitidest mikroteenusteni. <\/p>\n<p>Viimati r\u00e4\u00e4kisime erinevatest monoliitidest ja komponentide kasutamisest nende loomisel, sealhulgas nii koostekomponentide kui ka juurutuskomponentide kohta. Uurisime teenusetiheduse arhitektuuri.<\/p>\n<p>N\u00fc\u00fcd m\u00e4\u00e4ratleme l\u00f5puks mikroteenuste arhitektuuri peamised omadused. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Arhitektuuride suhted<\/h2>\n<p>\nOn oluline m\u00f5ista, et eelnevate artiklite p\u00f5hjal v\u00f5ib \u00fcksk\u00f5ik milline teenus olla komponent, kuid mitte iga teenus ei ole mikroteenus. <\/p>\n<h2>Mikroteenuste arhitektuuri omadused<\/h2>\n<p>\nMikroteenuste arhitektuuri p\u00f5hijooned on:<\/p>\n<ul>\n<li>Organiseerimine vastavalt \u00e4riv\u00f5imalustele (Organized around Business Capabilities)<\/li>\n<li>Tooted, mitte projektid (Products not Projects)<\/li>\n<li>Nutikas sisenemine ja rumalad kanalid (Smart endpoints and dumb pipes)<\/li>\n<li>Detsentraliseeritud juhtimine (Decentralized Governance)<\/li>\n<li>Detsentraliseeritud andmehaldus (Decentralized Data Management)<\/li>\n<li>Infrastruktuuri automatiseerimine (Infrastructure Automation)<\/li>\n<li>Veakindel disain (Design for failure)<\/li>\n<li>Evolutsiooniline disain<\/li>\n<\/ul>\n<p>\nEsimene punkt tuleneb teenustele orienteeritud arhitektuurist, kuna mikroteenused on teenuste erijuht. Teised punktid v\u00e4\u00e4rivad eraldi k\u00e4sitlemist.<\/p>\n<h2>Organiseerimine vastavalt \u00e4riv\u00f5imalustele (Organized around Business Capabilities)<\/h2>\n<p>\nOn oluline meenutada Conway seadust: organisatsioonid, mis loovad s\u00fcsteeme, korraldavad nende arhitektuuri kopeerides siseseid suhtlemisstruktuure. N\u00e4iteks tuuakse esile juhtum, kus seitse liikmest koosnev meeskond t\u00f6\u00f6tas v\u00e4lja seitsme l\u00e4bimisega kompilaatori, samas kui viiest inimesest koosnev r\u00fchm t\u00f6\u00f6tas v\u00e4lja viie l\u00e4bimisega kompilaatori.<\/p>\n<p>Kui r\u00e4\u00e4gime monoliitidest ja mikroteenustest, siis olukorras, kus arendus on korraldatud funktsionaalsete osade kaupa (tagaplaan, esiplaan, andmebaasi administraatorid), saame klassikalise monoliidi. <\/p>\n<p>Mikroteenuste saamiseks tuleks meeskondi korraldada vastavalt \u00e4riv\u00f5imalustele (tellimuste, tarnete, katalooge k\u00e4sitlevad meeskonnad). Selline organisatsioon v\u00f5imaldab meeskondadel keskenduda rakenduse konkreetsete osade loomisele.<\/p>\n<h2>Tooted, mitte projektid (Products not Projects)<\/h2>\n<p>\nProjektip\u00f5hine l\u00e4henemine, kus meeskond edastab arendatud funktsionaalsuse teistele meeskondadele mikroteenuste arhitektuuris, ei ole absoluutselt sobiv. Meeskond peab toetama s\u00fcsteemi kogu selle eluts\u00fckli v\u00e4ltel. Amazon, \u00fcks mikroteenuste rakendamise lipulaevu, on \u00f6elnud: \"sa lood toote ja sa k\u00e4itad selle\" (\"you build, you run it\"). Tootep\u00f5hine l\u00e4henemine v\u00f5imaldab meeskonnal tunda \u00e4ri vajadusi. <\/p>\n<h2>Nutikas sisenemine ja rumalad kanalid (Smart endpoints and dumb pipes)<\/h2>\n<p>\nSOA arhitektuur p\u00f6\u00f6ras suurt t\u00e4helepanu suhtluskanalitele, eelk\u00f5ige Enterprise Service Bus'ile (ettev\u00f5tte teenuste buss). See toob sageli kaasa Erroneous Spaghetti Box'i, st monoliidi keerukus muutub teenuste vaheliste \u00fchenduste keerukuseks. Mikroteenuste arhitektuuris kasutatakse vaid lihtsaid suhtlemisviise.<\/p>\n<h2>Detsentraliseeritud juhtimine (Decentralized Governance)<\/h2>\n<p>\nMikroteenuste v\u00f5tmeotsused peavad olema tehtud inimestelt, kes t\u00f5eliselt arendavad mikroteenuseid. Siin m\u00f5istetakse v\u00f5tmeotsuste all valikuid<br \/>\nprogrammeermisv\u00f5lke, juurutamise metodoloogiaid, avalike liideste lepinguid jne. <\/p>\n<h2>Detsentraliseeritud andmehaldus (Decentralized Data Management)<\/h2>\n<p>\nStandardsest l\u00e4henemine, kus rakendus toetub \u00fchele andmebaasile, ei suuda arvestada iga konkreetse teenuse erip\u00e4ra. MSA eeldab hajutatud andmehaldust, sealhulgas erinevate tehnoloogiate rakendamist.<\/p>\n<h2>Infrastruktuuri automatiseerimine (Infrastructure Automation)<\/h2>\n<p>\nMSA toetab pideva juurutamise ja tarnimise protsesse. Seda on v\u00f5imalik saavutada ainult protsesside automatiseerimise kaudu. Sellega ei tundugi suure hulga teenuste juurutamine enam hirmutavana. Juurutamiste protsess peab olema igav. Teise aspektina on tegemist teenuste haldamisega tootmisv\u00f5ttes. Ilma automatiseerimiseta muutub eri operatsioonikeskkondades jooksvaid protsesside haldamine v\u00f5imatuks.<\/p>\n<h2>Veakindel disain (Design for failure)<\/h2>\n<p>\nArvukad MSA teenused on vigadele altid. Samas on vigade k\u00e4sitlemine hajutatud s\u00fcsteemis \u00fcsna keeruline \u00fclesanne. Rakenduste arhitektuur peab olema vastupidav sellistele riketele. Rebecca Parsons peab v\u00e4ga oluliseks, et me ei kasuta enam isegi protsessisisest suhtlemist teenuste vahel, vaid kasutame selle asemel suhtlemiseks HTTP-d, mis ei ole kaugeltki nii usaldusv\u00e4\u00e4rne.<\/p>\n<h2>Evolutsiooniline disain<\/h2>\n<p>\nMSA s\u00fcsteemi arhitektuur peab arenema j\u00e4rk-j\u00e4rgult. Soovitav on piirata vajalikud muudatused \u00fche teenuse piiridesse. Samuti tuleb arvestada m\u00f5ju teistele teenustele. Traditsiooniline l\u00e4henemine on p\u00fc\u00fcda seda probleemi lahendada versioonihaldusega, kuid MSA eelneb versioonihalduse kasutamine.<br \/>\nviimase abin\u00f5una.<\/p>\n<h2>Kokkuv\u00f5te<\/h2>\n<p>\nK\u00e4esolevast arutelust saab kokkuv\u00f5tvalt s\u00f5nastada, mis on mikroteenused. Mikroteenuste arhitektuur on l\u00e4henemine eraldi rakenduse arendamiseks v\u00e4ikeste teenuste kogumina, kus iga teenus t\u00f6\u00f6tab oma protsessis ja suhtleb kergendatud mehhanismide kaudu, sageli HTTP-ressursside API-liidese kaudu. Need teenused on \u00fcles ehitatud \u00e4riv\u00f5imalustele ja neid saab iseseisvalt juurutada t\u00e4iesti automatiseeritud juurutusmehhanismiga.<br \/>\nNeid teenuseid iseloomustab minimaalne tsentraliseeritud juhtimine, ning need v\u00f5ivad olla kirjutatud erinevates programmeerimiskeeltes ja kasutada erinevaid andmesalvestustehnoloogiaid.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\"><img decoding=\"async\" alt=\"Arhitektuuristiili valik (osa 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\/\">Loe osa 2<\/a><\/noindex><\/i><br \/>\n<br \/>Allikas: <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.0.1 - 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\/et\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/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\udd47Arhitektuuristiili valik (osa 3) | ProHoster","description":"Tere, Habr.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/95403","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=95403"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/95403\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/95404"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=95403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=95403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=95403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}