{"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\u00e4tkan artiklite seeriat, mille kirjutasingi uue kursuse alguseks <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\">\u201eSoftware Architect\u201c<\/a><\/noindex>.<\/i><\/b><\/p>\n<p><\/p>\n<h2>Sissejuhatus<\/h2>\n<p>\nArhitektuuristiili valik on \u00fcks peamisi tehnilisi otsuseid teabe s\u00fcsteemi loomisel. Selles artiklite seerias k\u00e4sitleme k\u00f5ige populaarsemaid rakenduste arhitektuuristiile ja vastame k\u00fcsimusele, millal on milline arhitektuuristiil k\u00f5ige eelistatum. K\u00e4sitlen loogilist ahelat, mis selgitab arhitektuuristiilide arengut monoliitsetest mikroteenustele. <\/p>\n<p>Viimati r\u00e4\u00e4kisime erinevatest monoliitide t\u00fc\u00fcpides ja komponentidest nende ehitamisel, sealhulgas nii kogumite kui ka juurutamise komponentidest. Tutvusime teenusorienteeritud arhitektuuriga.<\/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>\nOluline on m\u00f5ista, et eelnevates artiklite m\u00e4\u00e4ratluste p\u00f5hjal on iga teenus komponent, kuid mitte iga teenus on mikroteenus. <\/p>\n<h2>Mikroteenuste arhitektuuri omadused<\/h2>\n<p>\nMikroteenuste arhitektuuri peamised omadused on:<\/p>\n<ul>\n<li>Organiseeritud \u00e4ri v\u00f5imaluste j\u00e4rgi (Organized around Business Capabilities)<\/li>\n<li>Tooted, mitte projektid (Products not Projects)<\/li>\n<li>Ahned sisenemispunktid ja rumalad kanalid (Smart endpoints and dumb pipes)<\/li>\n<li>Keskendumine detsentraliseeritud juhtimisele (Decentralized Governance)<\/li>\n<li>Keskendumine detsentraliseeritud andmehaldusele (Decentralized Data Management)<\/li>\n<li>Infrastruktuuri automatiseerimine (Infrastructure Automation)<\/li>\n<li>Vigade kaitse (Design for failure)<\/li>\n<li>Evolutsiooniga arenguga arhitektuur (Evolutionary Design)<\/li>\n<\/ul>\n<p>\nEsimene punkt p\u00e4rineb teenusorienteeritud arhitektuurist, kuna mikroteenused on teenuste erivorm. Teised punktid v\u00e4\u00e4rivad eraldi k\u00e4sitlemist.<\/p>\n<h2>Organiseeritud \u00e4ri v\u00f5imaluste j\u00e4rgi (Organized around Business Capabilities)<\/h2>\n<p>\nN\u00fc\u00fcd on vajalik meenutada Conway seadust: organisatsioonid, kes loovad s\u00fcsteeme, korraldavad nende arhitektuuri vastavalt nende organisatsioonide koost\u00f6\u00f6struktuurile. N\u00e4itena v\u00f5ib tuua kompilaatori loomise: seitsmest inimesest koosnev meeskond t\u00f6\u00f6tas v\u00e4lja seitsme l\u00e4bimisega kompilaatori, samas kui viie inimesega meeskond l\u00f5i viie l\u00e4bimisega kompilaatori.<\/p>\n<p>Kui r\u00e4\u00e4gime monol\u00fc\u00fctidest ja mikroteenustest, siis juhul, kui arendus on korraldatud funktsionaalsete osakondade kaupa (taust, esiplaan, andmebaasiadministraatorid), saame klassikalise monoliidi. <\/p>\n<p>Mikroteenuste saamiseks tuleb meeskonnad organiseerida vastavalt \u00e4riv\u00f5imalustele (tellimuste, v\u00e4ljaveo, katalooge k\u00e4sitlev meeskond). Selline korraldus annab meeskondadele v\u00f5imaluse keskenduda rakenduse konkreetsete osade loomisele.<\/p>\n<h2>Tooted, mitte projektid (Products not Projects)<\/h2>\n<p>\nEhkki projekti l\u00e4henemine, kus meeskond edastab v\u00e4lja arendatud funktsionaalsuse teistele meeskondadele mikroteenuste arhitektuuri korral, ei sobi. Meeskond peab s\u00fcsteemi toetama kogu selle eluts\u00fckli v\u00e4ltel. Ettev\u00f5te Amazon, \u00fcks mikroteenuste rakendamise lipulaevu, on \u00f6elnud: \"sa lood toote ja sina ka k\u00e4ivitad selle\" (\"you build, you run it\"). Toote l\u00e4henemine v\u00f5imaldab meeskonnal tajuda \u00e4ri vajadusi. <\/p>\n<h2>Ahned sisenemispunktid ja rumalad kanalid (Smart endpoints and dumb pipes)<\/h2>\n<p>\nSOA arhitektuur on suure t\u00e4helepanu p\u00f6\u00f6ranud suhtluskanalitele, sealhulgas Enterprise Service Bus'ile (ettev\u00f5tte teenuste buss). See toob sageli kaasa Erroneous Spaghetti Box'i, st monoliidi keerukus muutub teenuste vaheliseks keerukuseks. Mikroteenuste arhitektuuris kasutatakse vaid lihtsaid suhtlemisviise.<\/p>\n<h2>Keskendumine detsentraliseeritud juhtimisele (Decentralized Governance)<\/h2>\n<p>\nMikroteenuste p\u00f5hiteemad peaksid olema inimeste poolt, kes tegelikult arendavad mikroteenuseid. Siin m\u00f5istetakse p\u00f5hiteemade all valikut.<br \/>\nprogrammeerimiskeeled, juurutamismeetodid, avalike liideste lepingud jne. <\/p>\n<h2>Keskendumine detsentraliseeritud andmehaldusele (Decentralized Data Management)<\/h2>\n<p>\nStandardsed l\u00e4henemisviisid, kus rakendus toetub \u00fchele andmebaasile, ei saa arvestada iga konkreetse teenuse spetsiifikaga. MSA eeldab andmete detsentraliseeritud haldamist, sealhulgas erinevate tehnoloogiate rakendamist.<\/p>\n<h2>Infrastruktuuri automatiseerimine (Infrastructure Automation)<\/h2>\n<p>\nMSA toetab pidevat juurutamise ja kohaletoimetamise protsessi. Seda saab saavutada ainult protsesside automatiseerimise kaudu. Samuti ei n\u00e4e suuri teenuste juurutamise protsessid enam midagi hirmutavat. Juurutamisprotsess peab muutuma igavaks. Teine aspekt on teenuste haldamine toote keskkonnas. Ilma automatiseerimiseta muutub teiste operatiivkeskkondades k\u00e4ivitatud protsesside haldamine v\u00f5imatuks.<\/p>\n<h2>Vigade kaitse (Design for failure)<\/h2>\n<p>\nHulgal appetid MSA on talitlush\u00e4ired. Sellegipoolest on veahaldus jaotatud s\u00fcsteemis \u00fcpris keeruline \u00fclesanne. Rakenduste arhitektuur peab olema sellistele t\u0161ehkidele vastupidav. Rebecca Parsons peab v\u00e4ga oluliseks, et me ei kasutaks enam isegi protsessi sisest suhtlemist teenuste vahel, nende vahel suhtlemiseks eelistame HTTP-d, mis ei ole sugugi nii usaldusv\u00e4\u00e4rne.<\/p>\n<h2>Evolutsiooniga arenguga arhitektuur (Evolutionary Design)<\/h2>\n<p>\nMSA s\u00fcsteemi arhitektuur peab arenema evolutsiooniliselt. Soovitav on piirata vajalikke muudatusi \u00fche teenuse piirides. Tuleb samuti arvestada m\u00f5ju teistele teenustele. Traditsiooniline l\u00e4henemine on p\u00fc\u00fcda probleem lahendada versioonihalduse kaudu, kuid MSA eel\u00f5uab versioonihalduse kasutamist<br \/>\n\u00e4\u00e4rmiselt \u00e4\u00e4rmuslikuna.<\/p>\n<h2>Kokkuv\u00f5te<\/h2>\n<p>\nKokkuv\u00f5ttes saab s\u00f5nastada, mis on mikroteenused. Mikros\u00fcsteemide arhitektuur on l\u00e4henemine eraldi rakenduse v\u00e4ljat\u00f6\u00f6tamisele, mis koosneb v\u00e4ikeste teenuste kogumist, millest iga\u00fcks t\u00f6\u00f6tab oma protsessis ja suhtleb l\u00e4bi kergendatud mehhanismide, sageli HTTP ressursside API-liidese kaudu. Need teenused on \u00fcles ehitatud \u00e4riv\u00f5imalustele ja neid saab iseseisvalt juurutada t\u00e4ielikult<br \/>\nautomaatse juurutusmehhanismi abil. Nende teenuste jaoks on minimaalne tsentraliseeritud haldus, mis v\u00f5ivad olla kirjutatud erinevates programmeerimiskeeltes ja kasutada erinevaid andmehoidlatehnoloogiaid.<\/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.1.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.1.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\udd47Arhitektuurilise stiili 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}]}}