{"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\/ro\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","title":{"rendered":"Alegerea stilului arhitectural (partea 3)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Bun\u0103, Habr. Ast\u0103zi continui seria de publica\u021bii pe care am scris-o special pentru lansarea noii grupe a cursului <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\">\u201eSoftware Architect\u201d<\/a><\/noindex>.<\/i><\/b><\/p>\n<p><\/p>\n<h2>Introducere<\/h2>\n<p>\nAlegerea stilului arhitectural este una dintre deciziile tehnice fundamentale \u00een construirea unui sistem informa\u021bional. \u00cen aceast\u0103 serie de articole, propun s\u0103 analizez cele mai populare stiluri arhitecturale pentru construirea aplica\u021biilor \u0219i s\u0103 r\u0103spund la \u00eentrebarea c\u00e2nd este preferabil un anumit stil arhitectural. Pe parcursul expunerii, voi \u00eencerca s\u0103 urmez un fir logic care explic\u0103 evolu\u021bia stilurilor arhitecturale de la monolite la microservicii. <\/p>\n<p>\u00cen ultima \u00eent\u00e2lnire, am discutat despre diferitele tipuri de monolite \u0219i despre utilizarea componentelor pentru construirea acestora, incluz\u00e2nd at\u00e2t componentele de asamblare, c\u00e2t \u0219i cele de distribuire. Am \u00een\u021beles arhitectura orientat\u0103 pe servicii.<\/p>\n<p>Acum, \u00een sf\u00e2r\u0219it, vom defini principalele caracteristici ale arhitecturii microservicelor. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Rela\u021bia dintre arhitecturi<\/h2>\n<p>\nEste necesar s\u0103 \u00een\u021belegem c\u0103, pe baza datelor din articolele anterioare, orice serviciu este o component\u0103, dar nu orice serviciu este un microserviciu. <\/p>\n<h2>Caracteristicile arhitecturii microservicelor<\/h2>\n<p>\nPrincipalele caracteristici ale arhitecturii microservicelor sunt:<\/p>\n<ul>\n<li>Organizare \u00een func\u021bie de capacit\u0103\u021bile de afaceri (Organized around Business Capabilities)<\/li>\n<li>Produse, nu proiecte (Products not Projects)<\/li>\n<li>Puncte de intrare inteligente \u0219i canale simple (Smart endpoints and dumb pipes)<\/li>\n<li>Guvernare descentralizat\u0103 (Decentralized Governance)<\/li>\n<li>Gestionarea descentralizat\u0103 a datelor (Decentralized Data Management)<\/li>\n<li>Automatizarea infrastructurii (Infrastructure Automation)<\/li>\n<li>Asigurare \u00eempotriva defec\u021biunilor (Design for failure)<\/li>\n<li>Arhitectura cu evolu\u021bie (Evolutionary Design)<\/li>\n<\/ul>\n<p>\nPrimul punct provine din arhitectura orientat\u0103 pe servicii, deoarece microserviciile sunt un caz particular al serviciilor. Celelalte puncte merit\u0103 o aten\u021bie separat\u0103.<\/p>\n<h2>Organizare \u00een func\u021bie de capacit\u0103\u021bile de afaceri (Organized around Business Capabilities)<\/h2>\n<p>\nAcum este necesar s\u0103 ne amintim de legea lui Conway: organiza\u021biile care creeaz\u0103 sisteme \u00ee\u0219i structureaz\u0103 arhitectura pentru a reflecta modul de interac\u021biune din interiorul acestor organiza\u021bii. Ca exemplu, putem men\u021biona cazul cre\u0103rii unui compilator: o echip\u0103 format\u0103 din \u0219apte persoane a dezvoltat un compilator cu \u0219apte treceri, iar o echip\u0103 din cinci persoane a realizat un compilator cu cinci treceri.<\/p>\n<p>Dac\u0103 vorbim despre monolite \u0219i microservicii, atunci, \u00een cazul \u00een care dezvoltarea este organizat\u0103 pe departamente func\u021bionale (backend, frontend, administratori de baze de date), rezultatul este un monolit clasic. <\/p>\n<p>Pentru a ob\u021bine microservicii, echipele trebuie organizate \u00een func\u021bie de capacit\u0103\u021bile de afaceri (echipa de comenzi, echipa de livr\u0103ri, echipa de catalog). Aceast\u0103 organizare va permite echipelor s\u0103 se concentreze pe crearea unor p\u0103r\u021bi specifice ale aplica\u021biei.<\/p>\n<h2>Produse, nu proiecte (Products not Projects)<\/h2>\n<p>\nAbordarea de proiect \u00een care echipa transfer\u0103 func\u021bionalitatea dezvoltat\u0103 altor echipe, \u00een cazul arhitecturii microservis, este complet inadecvat\u0103. Echipa ar trebui s\u0103 sus\u021bin\u0103 sistemul pe parcursul \u00eentregului s\u0103u ciclu de via\u021b\u0103. Compania Amazon, unul dintre liderii implement\u0103rii microservicelor, a declarat: \u201ecrea\u021bi un produs \u0219i voi \u00eel lansa\u021bi\u201d (\u201eyou build, you run it\u201d). Abordarea orientat\u0103 pe produs permite echipei s\u0103 simt\u0103 nevoile afacerii. <\/p>\n<h2>Puncte de intrare inteligente \u0219i canale simple (Smart endpoints and dumb pipes)<\/h2>\n<p>\nArhitectura SOA a acordat o mare aten\u021bie canalelor de comunicare, \u00een special Enterprise Service Bus (busul de servicii al \u00eentreprinderii). Acest lucru duce adesea la Erroneous Spaghetti Box, adic\u0103 complexitatea monolitului se transform\u0103 \u00een complexitatea rela\u021biilor dintre servicii. \u00cen arhitectura microservicelor, se utilizeaz\u0103 doar metode simple de interac\u021biune.<\/p>\n<h2>Guvernare descentralizat\u0103 (Decentralized Governance)<\/h2>\n<p>\nDeciziile cheie privind microserviciile trebuie s\u0103 fie luate de persoanele care dezvolt\u0103 cu adev\u0103rat microserviciile. Aici, prin decizii cheie se \u00een\u021belege alegerea<br \/>\nlimbajelor de programare, metodologiilor de desf\u0103\u0219urare, contractelor pentru interfe\u021bele publice etc. <\/p>\n<h2>Gestionarea descentralizat\u0103 a datelor (Decentralized Data Management)<\/h2>\n<p>\nAbordarea standard, \u00een care aplica\u021bia se bazeaz\u0103 pe o singur\u0103 baz\u0103 de date, nu poate lua \u00een considerare specificit\u0103\u021bile fiec\u0103rui serviciu \u00een parte. MSA implic\u0103 gestionarea descentralizat\u0103 a datelor, inclusiv utilizarea diferitelor tehnologii.<\/p>\n<h2>Automatizarea infrastructurii (Infrastructure Automation)<\/h2>\n<p>\nMSA sus\u021bine procesele de desf\u0103\u0219urare \u0219i livrare continu\u0103. Acest lucru este posibil doar prin automatizarea proceselor. \u00cen acest context, desf\u0103\u0219urarea unui num\u0103r mare de servicii nu mai pare ceva \u00eenfrico\u0219\u0103tor. Procesul de desf\u0103\u0219urare ar trebui s\u0103 devin\u0103 plictisitor. Al doilea aspect se refer\u0103 la gestionarea serviciilor \u00een medii de produc\u021bie. F\u0103r\u0103 automatizare, gestionarea proceselor care func\u021bioneaz\u0103 \u00een medii opera\u021bionale diferite devine imposibil\u0103.<\/p>\n<h2>Asigurare \u00eempotriva defec\u021biunilor (Design for failure)<\/h2>\n<p>\nNumeroasele servicii MSA sunt susceptibile la e\u0219ecuri. Totu\u0219i, gestionarea erorilor \u00eentr-un sistem distribuit este o sarcin\u0103 destul de complex\u0103. Arhitectura aplica\u021biilor trebuie s\u0103 fie rezistent\u0103 la astfel de e\u0219ecuri. Rebecca Parsons consider\u0103 foarte important c\u0103 nu mai folosim nici m\u0103car interac\u021biuni intra-proces \u00eentre servicii, \u00een schimb, pentru comunicare recurgem la HTTP, care nu este nici pe departe la fel de fiabil.<\/p>\n<h2>Arhitectura cu evolu\u021bie (Evolutionary Design)<\/h2>\n<p>\nArhitectura sistemului MSA trebuie s\u0103 evolueze \u00een mod evolutiv. Este recomandabil s\u0103 se limiteze modific\u0103rile necesare la limitele unui singur serviciu. De asemenea, trebuie s\u0103 se \u021bin\u0103 cont de influen\u021ba asupra altor servicii. Abordarea tradi\u021bional\u0103 const\u0103 \u00een a \u00eencerca s\u0103 rezolve aceast\u0103 problem\u0103 prin gestionarea versiunilor, dar MSA presupune utilizarea gestion\u0103rii versiunilor ca<br \/>\nm\u0103sur\u0103 extrem\u0103.<\/p>\n<h2>Concluzie<\/h2>\n<p>\nDup\u0103 toate cele spuse, putem formula ce sunt microserviciile. Arhitectura microserviciilor este o abordare pentru dezvoltarea unei aplica\u021bii individuale sub forma unui set de servicii mici, fiecare dintre ele func\u021bion\u00e2nd \u00een propriul s\u0103u proces \u0219i interac\u021bion\u00e2nd prin mecanisme simplificate, adesea prin intermediul API-urilor HTTP. Aceste servicii sunt construite pe baza oportunit\u0103\u021bilor de afaceri \u0219i pot fi desf\u0103\u0219urate independent folosind un mecanism complet<br \/>\nautomatizat de desf\u0103\u0219urare. Exist\u0103 un nivel minim de management centralizat al acestor servicii, care pot fi scrise \u00een diferite limbaje de programare \u0219i pot folosi diverse tehnologii de stocare a datelor.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\"><img decoding=\"async\" alt=\"Alegerea stilului arhitectural (partea 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\/\">Cite\u0219te partea 2<\/a><\/noindex><\/i><br \/>\n<br \/>Sursa: <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.2.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\/ro\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Alegerea stilului arhitectural (partea 3) | ProHoster","description":"Bun\u0103, Habr.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/95403","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=95403"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/95403\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/95404"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=95403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=95403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=95403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}