{"id":92810,"date":"2020-08-31T07:42:09","date_gmt":"2020-08-31T05:42:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1"},"modified":"2020-08-31T07:42:09","modified_gmt":"2020-08-31T05:42:09","slug":"vybor-arhitekturnogo-stilya-chast-1","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1","title":{"rendered":"Izbira arhitekturnega sloga (del 1)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Pozdrav, Habr. Trenutno je u OTUS-u otvoren upis za novi ciklus kursa <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/5RTk\/\">\u00abSoftware Architect\u00bb<\/a><\/noindex>. Uo\u010di po\u010detka kursa \u017eelim da podelim sa vama svoju autorsku \u010dlanak.<\/i><\/b><\/p>\n<p><\/p>\n<h2>Uvod<\/h2>\n<p>\nOdabir arhitektonskog stila jedan je od osnovnih tehni\u010dkih re\u0161enja pri izgradnji informacionog sistema. U ovoj seriji \u010dlanaka predla\u017eem da razmotrimo najpopularnije arhitektonske stilove izgradnje aplikacija i odgovorimo na pitanje kada je koji arhitektonski stil najprikladniji. Tokom izlaganja \u0107u poku\u0161ati da sprovedem logi\u010dki sled koji obja\u0161njava razvoj arhitektonskih stilova od monolita do mikroservisa. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Nekaj zgodovine<\/h2>\n<p>\nAko pitate programere: \u201eZa\u0161to su potrebni mikroservisi?\u201c, dobi\u0107ete veoma razli\u010dite odgovore. \u010cu\u0107ete da mikroservisi pobolj\u0161avaju skalabilnost, olak\u0161avaju razumevanje koda, pobolj\u0161avaju otpornost na gre\u0161ke, a ponekad \u0107ete \u010duti da omogu\u0107avaju \u201e\u010di\u0161\u0107enje koda\u201c. Hajde da se obratimo istoriji kako bismo shvatili koju su svrhu imali mikroservisi.<\/p>\n<p>Ukratko, mikroservisi su u na\u0161em trenutnom razumevanju nastali na slede\u0107i na\u010din: 2011. godine, D\u017eejms Ljuis, analiziraju\u0107i rad raznih kompanija, primetio je pojavu novog obrasca \u201emicro-app\u201c, koji je optimizovao SOA sa stanovi\u0161ta ubrzavanja implementacije servisa. Neko vreme kasnije, 2012. godine, na arhitektonskom samitu, obrazac je preimenovan u mikroservis. Tako je prvobitni cilj uvo\u0111enja mikroservisa bio pobolj\u0161anje poznatog <b>time to market<\/b>.<\/p>\n<p>Na \u201etalasu hype-a\u201c, mikroservisi su bili 2015. godine. Prema nekim istra\u017eivanjima, nijedna konferencija nije prolazila bez izlaganja na temu mikroservisa. \u0160tavi\u0161e, neke konferencije su bile posve\u0107ene isklju\u010divo mikroservisima. Sada mnogi projekti po\u010dinju primenom ovog arhitektonskog stila, a ako projekt sadr\u017ei tonu legacy koda, verovatno se aktivno vr\u0161i migracija na mikroservise.<\/p>\n<p>I pored svega re\u010denog, jo\u0161 uvek je relativno mali broj programera koji mo\u017ee da defini\u0161e pojam \u201emikroservis\u201c. Ali o tome \u0107emo govoriti malo kasnije...<\/p>\n<h2>Monolit<\/h2>\n<p>\nArhitekturni stil, ki se postavlja nasproti mikroservisnemu, je monolit (ali 'vse v enem'). O tem, kaj je monolit, verjetno ni smiselno govoriti, zato takoj na\u0161tejem pomanjkljivosti tega arhitekturnega sloga, ki so spro\u017eile nadaljnji razvoj arhitekturnih stilov: velikost, povezanost, uvajanje, skalabilnost, zanesljivost in rigidnost. Spodaj predlagam, da se seznanimo s posameznimi pomanjkljivostmi.<\/p>\n<h3>Dimenzije<\/h3>\n<p>\nMonolit je zelo velik. In praviloma sodeluje z zelo velikimi bazami podatkov. Aplikacija postane tako obse\u017ena, da je ne more razumeti en sam razvijalec. Z monolitom lahko dobro delajo le tisti, ki so pre\u017eiveli dovolj \u010dasa s tem kodo, medtem ko novinci pogosto porabijo preve\u010d \u010dasa, da bi se posku\u0161ali razumeti z monolitom, in ni nujno, da jim bo uspelo. Obi\u010dajno pri delu z monolitom obstaja nek 'pogojski' senior, ki monolit pozna ve\u010d ali manj dobro in letos ali leto in pol omejuje druge nove razvijalce. Seveda je tak 'pogojski' senior edina to\u010dka odpovedi, in njegov odhod lahko privede do propada monolita. <\/p>\n<h3>Povezanost<\/h3>\n<p>\nMonolit je 'velika kepica blata' (big ball of mud), spremembe v katerem lahko povzro\u010dijo nepredvidljive posledice. Ko spremeni\u0161 eno stvar, lahko po\u0161koduje\u0161 monolit na drugem mestu (tisto 'ugriznil si uho, *@ je odpadlo'). To je povezano z dejstvom, da imajo komponenti v monolitu zelo zapletene in, kar je najpomembneje, nejasne medsebojne odnose.<\/p>\n<h3>Postavitev<\/h3>\n<p>\nUvajanje monolita je zaradi zapletenih medsebojnih odnosov med njegovimi komponentami dolgotrajen postopek z lastnim ritualom. Ta ritual obi\u010dajno ni dokon\u010dno standardiziran in se prena\u0161a 'iz ust v usta'. <\/p>\n<h3>\u0160irljivost<\/h3>\n<p>\nModuli monolita imajo lahko nasprotujo\u010de si potrebe po virih, zaradi \u010desar je potrebno iskati kompromis z vidika strojne opreme. Predstavljajte si, da va\u0161 monolit sestoji iz storitev A in B. Storitev A je zahtevna glede velikosti trdega diska, medtem ko storitev B zahteva ve\u010djo koli\u010dino RAM-a. V tem primeru mora stroj, na katerega je name\u0161\u010den monolit, podpirati zahteve obeh storitev, ali pa bo treba ro\u010dno, umetno onemogo\u010diti eno od storitev.<\/p>\n<p>\u0160e en primer (bolj klasi\u010den): storitev A je veliko bolj priljubljena kot storitev B, zato \u017eelite, da je 100 storitev A in 10 storitev B. Spet sta na voljo dve mo\u017enosti: ali postavimo 100 polno funkcionalnih monolitov ali pa nekaterih od njih ro\u010dno izklopimo storitve B. <\/p>\n<h3>Zanesljivost<\/h3>\n<p>\nKer so vse storitve skupaj, \u010de monolit pade, padejo vse storitve naenkrat. V resnici morda to ni tako slabo, vsaj delnih napak v distribuiranem sistemu ne bo, vendar pa lahko zaradi napake v funkcionalnosti, ki jo uporablja 0.001% uporabnikov, izgubite vse uporabnike va\u0161ega sistema. <\/p>\n<h3>Odstotnost<\/h3>\n<p>\nZaradi velikosti monolita je te\u017eko preiti na nove tehnologije. Posledi\u010dno se kot posebna naloga izpostavi zadr\u017eevanje tistega prav posebnega seniorja. Izbrana tehnolo\u0161ka struktura na za\u010detku projekta lahko postane ovira, ki prepre\u010duje razvoj izdelka. <\/p>\n<h2>Zaklju\u010dek<\/h2>\n<p>\nNaslednji\u010d bomo govorili o tem, kako so ljudje posku\u0161ali re\u0161iti omenjene te\u017eave s prehodom na komponente in SOA.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/5RTk\/\"><img decoding=\"async\" alt=\"Izbira arhitekturnega sloga (del 1)\" src=\"\/wp-content\/uploads\/2020\/08\/d1582a83ad9cf8722a035dfd9a212aa5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<blockquote>\n<h4>Preberi ve\u010d:<\/h4>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/504144\/\">Zakaj SQL Server ne zagotavlja razvrstitve rezultatov brez ORDER BY<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/508206\/\">Arhitektura za razvijalce in skrbnike: kdo katere ve\u0161\u010dine potrebuje?<\/a><\/noindex><\/li>\n<\/ul>\n<\/blockquote>\n<p>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/516880\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb. \u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430 \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u0441\u0432\u043e\u0435\u0439 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439. \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 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92811,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92810","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, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb.\" \/>\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\/sl\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\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 1) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1\" \/>\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-08-31T05:42:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-31T05:42:09+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\udd47Izbira arhitekturnega sloga (del 1) | ProHoster","description":"Pozdravljen, Habr. Pravkar je v OTUS odprt vpis za nov del programa \u00bbSoftware Architect\u00ab.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","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 1) | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb.","og:url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1","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-08-31T05:42:09+00:00","article:modified_time":"2020-08-31T05:42:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92810","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 12:00:37","updated":"2022-10-03 23:14:42","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/92810","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=92810"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/92810\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/92811"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=92810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=92810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=92810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}