{"id":36518,"date":"2019-10-31T22:12:07","date_gmt":"2019-10-31T19:12:07","guid":{"rendered":"https:\/\/prohoster.info\/blog\/programmnaya-arhitektura-i-proektirovanie-sistem-obshhaya-kartina-i-putevoditel-po-resursam\/"},"modified":"2019-10-31T22:12:07","modified_gmt":"2019-10-31T19:12:07","slug":"programmnaya-arhitektura-i-proektirovanie-sistem-obshhaya-kartina-i-putevoditel-po-resursam","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/programmnaya-arhitektura-i-proektirovanie-sistem-obshhaya-kartina-i-putevoditel-po-resursam","title":{"rendered":"Softwarov\u00e9 architektura a n\u00e1vrh syst\u00e9m\u016f: celkov\u00fd p\u0159ehled a pr\u016fvodce zdroji","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Dobr\u00fd den, kolegov\u00e9.<\/p>\n<p>Dnes v\u00e1m p\u0159edkl\u00e1d\u00e1me p\u0159eklad \u010dl\u00e1nku Tugberka Ugurlua, kter\u00fd se ve srovnateln\u011b mal\u00e9m objemu pokou\u0161\u00ed p\u0159ibl\u00ed\u017eit principy n\u00e1vrhu modern\u00edch softwarov\u00fdch syst\u00e9m\u016f. Zde je to, co o sob\u011b autor shrnuje:<\/p>\n<p><img decoding=\"async\" alt=\"Softwarov\u00e9 architektura a n\u00e1vrh syst\u00e9m\u016f: celkov\u00fd p\u0159ehled a pr\u016fvodce zdroji\" src=\"\/wp-content\/uploads\/2019\/07\/30de77ffad15171ce493ce5003c99360.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nJeliko\u017e je naprosto nemo\u017en\u00e9 obs\u00e1hnout v rychl\u00e9m p\u0159ehledu tak kolos\u00e1ln\u00ed t\u00e9ma, jako jsou architektonick\u00e9 vzory + n\u00e1vrhov\u00e9 vzory k roku 2019, doporu\u010dujeme nejen samotn\u00fd text pana Ugurlua, ale tak\u00e9 mnoh\u00e9 odkazy, kter\u00e9 v n\u011bm laskav\u011b uvedl. Pokud se v\u00e1m to bude l\u00edbit, zve\u0159ejn\u00edme i specializovan\u011bj\u0161\u00ed text o n\u00e1vrhu distribuovan\u00fdch syst\u00e9m\u016f.<\/p>\n<p><img decoding=\"async\" alt=\"Softwarov\u00e9 architektura a n\u00e1vrh syst\u00e9m\u016f: celkov\u00fd p\u0159ehled a pr\u016fvodce zdroji\" src=\"\/wp-content\/uploads\/2019\/07\/4ccec9506aedb91bb601ebc32b6762be.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<i>Fotografie <noindex><a rel=\"nofollow\" href=\"https:\/\/unsplash.com\/photos\/6EnTPvPPL6I?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Ayzeka Smitha<\/a><\/noindex> z webu Unsplash<\/i><\/p>\n<p>Pokud jste se nikdy nesetkali s takov\u00fdmi v\u00fdzvami, jako je n\u00e1vrh softwarov\u00e9ho syst\u00e9mu od nuly, m\u016f\u017ee b\u00fdt na za\u010d\u00e1tku obt\u00ed\u017en\u00e9 v\u011bd\u011bt, jak za\u010d\u00edt. Mysl\u00edm, \u017ee prvn\u00edm krokem je vyty\u010dit hranice, abyste si mohli v\u00edce m\u00e9n\u011b jist\u011b p\u0159edstavit, co konkr\u00e9tn\u011b se chyst\u00e1te navrhnout, a pot\u00e9 si roll up sleeves a pracovat, ani\u017e byste p\u0159ekro\u010dili tyto hranice. Jako v\u00fdchoz\u00ed bod m\u016f\u017eete vz\u00edt n\u011bjak\u00fd produkt nebo slu\u017ebu (ide\u00e1ln\u011b takovou, kter\u00e1 se v\u00e1m opravdu l\u00edb\u00ed) a pod\u00edvat se na jej\u00ed implementaci. Mo\u017en\u00e1 v\u00e1s p\u0159ekvap\u00ed, jak jednodu\u0161e tento produkt vypad\u00e1, a jak\u00e1 obrovsk\u00e1 slo\u017eitost se v n\u011bm ve skute\u010dnosti skr\u00fdv\u00e1. Nezapome\u0148te: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=k9Zbuuo51go\">jednoduch\u00e9 je obvykle slo\u017eit\u00e9<\/a><\/noindex>, a to je v po\u0159\u00e1dku.<\/p>\n<p>Mysl\u00edm, \u017ee nejlep\u0161\u00ed rada, kterou mohu d\u00e1t t\u011bm, kte\u0159\u00ed se chystaj\u00ed navrhnout syst\u00e9m, zn\u00ed: ned\u011blejte \u017e\u00e1dn\u00e9 p\u0159edpoklady! Od sam\u00e9ho za\u010d\u00e1tku je t\u0159eba konkretizovat fakta zn\u00e1m\u00e1 o tomto syst\u00e9mu a s n\u00edm souvisej\u00edc\u00ed o\u010dek\u00e1v\u00e1n\u00ed. Zde je n\u011bkolik dobr\u00fdch ot\u00e1zek, jejich\u017e odpov\u011bdi v\u00e1m pomohou za\u010d\u00edt s n\u00e1vrhem:<\/p>\n<ul>\n<li>Jak\u00fd je probl\u00e9m, kter\u00fd se sna\u017e\u00edme vy\u0159e\u0161it? <\/li>\n<li>Jak\u00fd je maxim\u00e1ln\u00ed po\u010det u\u017eivatel\u016f, kte\u0159\u00ed budou interagovat s na\u0161\u00edm syst\u00e9mem?<\/li>\n<li>Jak\u00e9 vzory z\u00e1pisu a \u010dten\u00ed dat budeme pou\u017e\u00edvat? <\/li>\n<li>Jak\u00e9 jsou o\u010dek\u00e1van\u00e9 p\u0159\u00edpady selh\u00e1n\u00ed a jak se s nimi hodl\u00e1me vypo\u0159\u00e1dat?<\/li>\n<li>Jak\u00e1 o\u010dek\u00e1v\u00e1n\u00ed jsou kladena na konzistenci a dostupnost syst\u00e9mu? <\/li>\n<li>Mus\u00edme p\u0159i pr\u00e1ci zohlednit n\u011bjak\u00e9 po\u017eadavky t\u00fdkaj\u00edc\u00ed se extern\u00ed kontroly a regulace?<\/li>\n<li>Jak\u00e9 druhy d\u016fv\u011brn\u00fdch \u00fadaj\u016f pl\u00e1nujeme uchov\u00e1vat?<\/li>\n<\/ul>\n<p>\nTo jsou jen n\u011bkter\u00e9 ot\u00e1zky, kter\u00e9 byly u\u017eite\u010dn\u00e9 jak mn\u011b, tak i t\u00fdm\u016fm, ve kter\u00fdch jsem m\u011bl tu \u010dest pracovat za l\u00e9ta sv\u00e9 profesion\u00e1ln\u00ed kari\u00e9ry. Pokud zn\u00e1te odpov\u011bdi na tyto ot\u00e1zky (a na jak\u00e9koli dal\u0161\u00ed relevantn\u00ed v kontextu, ve kter\u00e9m pracujete), m\u016f\u017eete postupn\u011b proniknout do technick\u00fdch detail\u016f \u00fakolu.<\/p>\n<p><b>Stanovujeme po\u010d\u00e1te\u010dn\u00ed \u00farove\u0148<\/b><\/p>\n<p>Co t\u00edm mysl\u00edm pod \"po\u010d\u00e1te\u010dn\u00ed \u00farovn\u00ed\"? V dne\u0161n\u00ed dob\u011b v\u011bt\u0161inu probl\u00e9m\u016f v softwarov\u00e9m pr\u016fmyslu \"lze\" vy\u0159e\u0161it pomoc\u00ed ji\u017e existuj\u00edc\u00edch metod a technologi\u00ed. T\u00edmto zp\u016fsobem, orientuj\u00edc se v tomto prost\u0159ed\u00ed, z\u00edsk\u00e1v\u00e1te ur\u010dit\u00fd n\u00e1skok, kdy\u017e se setk\u00e1v\u00e1te s \u00fakoly, kter\u00e9 u\u017e n\u011bkdo p\u0159ed v\u00e1mi \u0159e\u0161il. Nezapom\u00ednejte, \u017ee programy jsou ps\u00e1ny za \u00fa\u010delem \u0159e\u0161en\u00ed probl\u00e9m\u016f podnik\u00e1n\u00ed a u\u017eivatel\u016f, proto se sna\u017e\u00edme vy\u0159e\u0161it \u00fakol co nejjednodu\u0161\u0161\u00edm a nejp\u0159\u00edm\u011bj\u0161\u00edm zp\u016fsobem (z pohledu u\u017eivatele). Pro\u010d je d\u016fle\u017eit\u00e9 to m\u00edt na pam\u011bti? Mo\u017en\u00e1 ve va\u0161em syst\u00e9mu sou\u0159adnic r\u00e1di hled\u00e1te pro v\u0161echny \u00fakoly unik\u00e1tn\u00ed \u0159e\u0161en\u00ed, proto\u017ee si mysl\u00edte, \"jak\u00fd jsem program\u00e1tor, kdy\u017e v\u0161ude dodr\u017euji vzory\"? Ve skute\u010dnosti <b>um\u011bn\u00ed spo\u010d\u00edv\u00e1 v rozhodov\u00e1n\u00ed o tom, kde a co d\u011blat<\/b>. Samoz\u0159ejm\u011b, ka\u017ed\u00fd z n\u00e1s se \u010das od \u010dasu setk\u00e1v\u00e1 s unik\u00e1tn\u00edmi probl\u00e9my, z nich\u017e ka\u017ed\u00fd je opravdovou v\u00fdzvou. Nicm\u00e9n\u011b, pokud je na\u0161e po\u010d\u00e1te\u010dn\u00ed \u00farove\u0148 jasn\u011b definov\u00e1na, v\u00edme, na co zam\u011b\u0159it sv\u00e9 s\u00edly: zda hledat ji\u017e dostupn\u00e9 mo\u017enosti \u0159e\u0161en\u00ed dan\u00e9ho \u00fakolu, nebo se v\u011bnovat jeho dal\u0161\u00edmu zkoum\u00e1n\u00ed a hlub\u0161\u00edmu porozum\u011bn\u00ed.<\/p>\n<p>Mysl\u00edm, \u017ee se mi poda\u0159ilo v\u00e1s p\u0159esv\u011bd\u010dit, \u017ee pokud specialista spolehliv\u011b rozum\u00ed architektonick\u00fdm aspekt\u016fm n\u011bkter\u00fdch \u00fa\u017easn\u00fdch softwarov\u00fdch syst\u00e9m\u016f, tyto znalosti budou nenahraditeln\u00e9 pro ovl\u00e1dnut\u00ed um\u011bn\u00ed architekta a vybudov\u00e1n\u00ed solidn\u00edho z\u00e1kladu v t\u00e9to oblasti.<\/p>\n<p>Dob\u0159e, kde tedy za\u010d\u00edt? U <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\">Dony Martiny<\/a><\/noindex> je repozit\u00e1\u0159 na GitHubu s n\u00e1zvem <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\">system-design-primer<\/a><\/noindex>, ze kter\u00fdch se nau\u010d\u00edte navrhovat rozs\u00e1hl\u00e9 syst\u00e9my a tak\u00e9 se p\u0159ipravit na pohovory na toto t\u00e9ma. V repozit\u00e1\u0159i je sekce s p\u0159\u00edklady <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/tree\/1144b8ef4c441af73f7cbfd51f56b8eb62350a66#real-world-architectures\">skute\u010dn\u00fdch architektur<\/a><\/noindex>, kde se konkr\u00e9tn\u011b pod\u00edv\u00e1me na to, jak n\u011bkter\u00e9 dob\u0159e zn\u00e1m\u00e9 spole\u010dnosti p\u0159istupuj\u00ed k n\u00e1vrhu sv\u00fdch syst\u00e9m\u016f <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/tree\/1144b8ef4c441af73f7cbfd51f56b8eb62350a66#company-architectures\">nap\u0159\u00edklad Twitter, Uber atd.<\/a><\/noindex>. Nicm\u00e9n\u011b d\u0159\u00edve, ne\u017e se pust\u00edme do tohoto materi\u00e1lu, pod\u00edvejme se bl\u00ed\u017ee na nejd\u016fle\u017eit\u011bj\u0161\u00ed architektonick\u00e9 v\u00fdzvy, kter\u00fdm \u010del\u00edme v praxi. To je d\u016fle\u017eit\u00e9, proto\u017ee je t\u0159eba konkretizovat MNOHO aspekt\u016f nepoddajn\u00e9ho a mnohostrann\u00e9ho probl\u00e9mu a pot\u00e9 jej \u0159e\u0161it v r\u00e1mci regulace, kter\u00e1 v dan\u00e9m syst\u00e9mu plat\u00ed.<\/p>\n<p>Jackson Gabbard <noindex><a rel=\"nofollow\" href=\"https:\/\/jg.gg\/\">, b\u00fdval\u00fd zam\u011bstnanec Facebooku, nato\u010dil<\/a><\/noindex>50minutov\u00e9 video o pohovorech zam\u011b\u0159en\u00fdch na n\u00e1vrh syst\u00e9m\u016f <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=ZgdS0EUmn70\">, kde se pod\u011blil o vlastn\u00ed zku\u0161enosti s hodnocen\u00edm stovek uchaze\u010d\u016f. I p\u0159esto, \u017ee se video v\u00fdslovn\u011b v\u011bnuje n\u00e1vrhu velk\u00fdch syst\u00e9m\u016f a krit\u00e9ri\u00edm \u00fasp\u011b\u0161nosti, kter\u00e9 jsou d\u016fle\u017eit\u00e9 p\u0159i hled\u00e1n\u00ed tohoto typu pozice, bude to p\u0159esto vy\u010derp\u00e1vaj\u00edc\u00edm zdrojem o tom, co je p\u0159i n\u00e1vrhu syst\u00e9m\u016f nejd\u016fle\u017eit\u011bj\u0161\u00ed. Tak\u00e9 nab\u00edz\u00edm<\/a><\/noindex>shrnut\u00ed <noindex><a rel=\"nofollow\" href=\"https:\/\/jg.gg\/2016\/07\/31\/architecture-and-systems-design-interview\/\">tohoto videa.<\/a><\/noindex> Z\u00edsk\u00e1vejte znalosti o ukl\u00e1d\u00e1n\u00ed a vyhled\u00e1v\u00e1n\u00ed dat<\/p>\n<p><b>Obecn\u011b plat\u00ed, \u017ee va\u0161e rozhodnut\u00ed o tom, jak dlouhodob\u011b budete ukl\u00e1dat a vyd\u00e1vat sv\u00e1 data, m\u00e1 kritick\u00fd vliv na v\u00fdkon syst\u00e9mu. Proto byste m\u011bli p\u0159edev\u0161\u00edm rozum\u011bt o\u010dek\u00e1van\u00fdm charakteristik\u00e1m z\u00e1pisu a \u010dten\u00ed dat ve va\u0161em syst\u00e9mu. Pot\u00e9 je t\u0159eba b\u00fdt schopen hodnotit tyto parametry a prov\u00e9st volbu na z\u00e1klad\u011b proveden\u00fdch hodnocen\u00ed. Nicm\u00e9n\u011b efektivn\u011b tuto pr\u00e1ci zvl\u00e1dnete pouze tehdy, pokud rozum\u00edte existuj\u00edc\u00edm vzorc\u016fm ukl\u00e1d\u00e1n\u00ed dat. V podstat\u011b to zahrnuje d\u016fkladn\u00e9 znalosti t\u00fdkaj\u00edc\u00ed se<\/b> <\/p>\n<p>v\u00fdb\u011bru datab\u00e1ze <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#database\">Datab\u00e1ze lze pova\u017eovat za datov\u00e9 struktury, kter\u00e9 maj\u00ed v\u00fdjime\u010dnou \u0161k\u00e1lovatelnost a trvanlivost. Proto by m\u011bly b\u00fdt znalosti datov\u00fdch struktur velmi u\u017eite\u010dn\u00e9 i p\u0159i v\u00fdb\u011bru konkr\u00e9tn\u00ed datab\u00e1ze. Nap\u0159\u00edklad,<\/a><\/noindex>. <\/p>\n<p>Datab\u00e1ze lze pova\u017eovat za datov\u00e9 struktury, kter\u00e9 se vyzna\u010duj\u00ed v\u00fdjime\u010dnou \u0161k\u00e1lovatelnost\u00ed a trvanlivost\u00ed. Proto by m\u011bly znalosti datov\u00fdch struktur b\u00fdt u\u017eite\u010dn\u00e9 i p\u0159i v\u00fdb\u011bru konkr\u00e9tn\u00ed datab\u00e1ze. Nap\u0159\u00edklad, <noindex><a rel=\"nofollow\" href=\"https:\/\/redis.io\/topics\/data-types-intro\">Redis<\/a><\/noindex> \u2013 je server strukturovan\u00fdch dat, kter\u00fd podporuje r\u016fzn\u00e9 typy hodnot. Umo\u017e\u0148uje pracovat s datov\u00fdmi strukturami jako jsou seznamy a mno\u017einy, \u010d\u00edst data pomoc\u00ed obvykl\u00fdch algoritm\u016f, nap\u0159\u00edklad, <noindex><a rel=\"nofollow\" href=\"https:\/\/redis.io\/topics\/lru-cache\">LRU<\/a><\/noindex>, organizuje takovou pr\u00e1ci v dlouhodob\u00e9m a vysoce dostupn\u00e9m stylu. <\/p>\n<p><img decoding=\"async\" alt=\"Softwarov\u00e9 architektura a n\u00e1vrh syst\u00e9m\u016f: celkov\u00fd p\u0159ehled a pr\u016fvodce zdroji\" src=\"\/wp-content\/uploads\/2019\/07\/8e30da0e8edd592609466f3c6c6f66d1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Fotografie <noindex><a rel=\"nofollow\" href=\"https:\/\/unsplash.com\/photos\/JuFcQxgCXwA?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Samuel Zeller<\/a><\/noindex> z webu Unsplash<\/i><\/p>\n<p>Jakmile se dostate\u010dn\u011b zorientujete v r\u016fzn\u00fdch vzorech ukl\u00e1d\u00e1n\u00ed dat, p\u0159ejd\u011bte k studiu konzistence a dostupnosti dat. Nejprve se budete muset nau\u010dit, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#cap-theorem\">CAP teorem<\/a><\/noindex> , alespo\u0148 v obrysech, a pot\u00e9 si tyto znalosti prohloubit t\u00edm, \u017ee se pod\u00edv\u00e1te na ust\u00e1len\u00e9 vzory <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#consistency-patterns\">konzistence<\/a><\/noindex> a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#availability-patterns\">dostupnosti<\/a><\/noindex>. Tak si roz\u0161\u00ed\u0159\u00edte obzory v t\u00e9to oblasti a pochop\u00edte, \u017ee \u010dten\u00ed a z\u00e1pis dat jsou ve skute\u010dnosti dv\u011b velmi odli\u0161n\u00e9 probl\u00e9my, z nich\u017e ka\u017ed\u00e9 nese sv\u00e9 vlastn\u00ed v\u00fdzvy. S n\u011bkolika vzory pro zaji\u0161t\u011bn\u00ed konzistence a dostupnosti budete moci v\u00fdrazn\u011b zv\u00fd\u0161it v\u00fdkon syst\u00e9mu, p\u0159i\u010dem\u017e zajist\u00edte kontinuitu dod\u00e1vky dat do va\u0161ich aplikac\u00ed.<\/p>\n<p>Nakonec, kdy\u017e ukon\u010dujeme diskusi o ot\u00e1zk\u00e1ch ukl\u00e1d\u00e1n\u00ed dat, je t\u0159eba zm\u00ednit i o caching. M\u011blo by se to prov\u00e1d\u011bt sou\u010dasn\u011b na klientovi i na serveru? Jak\u00e1 data budete m\u00edt ve va\u0161\u00ed cache? A pro\u010d? Jak organizujete zneplatn\u011bn\u00ed cache? Bude prob\u00edhat pravideln\u011b, po ur\u010dit\u00e9m \u010dasov\u00e9m intervalu? Pokud ano \u2013 jak \u010dasto? Doporu\u010duji za\u010d\u00edt prozkoum\u00e1vat tato t\u00e9mata v <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#cache\">n\u00e1sleduj\u00edc\u00ed \u010d\u00e1sti<\/a><\/noindex> v\u00fd\u0161e zm\u00edn\u011bn\u00e9ho abecedn\u00edku pro n\u00e1vrh syst\u00e9m\u016f. <\/p>\n<p><b>Komunika\u010dn\u00ed vzory<\/b><\/p>\n<p>Syst\u00e9my se skl\u00e1daj\u00ed z r\u016fzn\u00fdch komponent; mohou to b\u00fdt r\u016fzn\u00e9 procesy b\u011b\u017e\u00edc\u00ed uvnit\u0159 jednoho fyzick\u00e9ho uzlu, stejn\u011b jako r\u016fzn\u00e9 stroje p\u016fsob\u00edc\u00ed v r\u016fzn\u00fdch \u010d\u00e1stech va\u0161\u00ed s\u00edt\u011b. N\u011bkter\u00e9 z t\u011bchto zdroj\u016f uvnit\u0159 va\u0161\u00ed s\u00edt\u011b mohou b\u00fdt soukrom\u00e9, ale jin\u00e9 by m\u011bly b\u00fdt ve\u0159ejn\u00e9 a otev\u0159en\u00e9 pro spot\u0159ebitele, kte\u0159\u00ed se k nim obracej\u00ed zven\u010d\u00ed.<\/p>\n<p>Je t\u0159eba zajistit komunikaci mezi t\u011bmito zdroji navz\u00e1jem a tak\u00e9 v\u00fdm\u011bnu informac\u00ed mezi cel\u00fdm syst\u00e9mem a vn\u011bj\u0161\u00edm sv\u011btem. V kontextu n\u00e1vrhu syst\u00e9m\u016f se zde op\u011bt setk\u00e1v\u00e1me s sadou nov\u00fdch unik\u00e1tn\u00edch v\u00fdzev. Zjist\u00edme, jak mohou b\u00fdt u\u017eite\u010dn\u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#asynchronism\">asynchronn\u00ed pracovn\u00ed toky<\/a><\/noindex>, a jak\u00e9 r<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#communication\">rozmanit\u00e9 komunika\u010dn\u00ed vzory jsou k dispozici<\/a><\/noindex>. <\/p>\n<p><img decoding=\"async\" alt=\"Softwarov\u00e9 architektura a n\u00e1vrh syst\u00e9m\u016f: celkov\u00fd p\u0159ehled a pr\u016fvodce zdroji\" src=\"\/wp-content\/uploads\/2019\/07\/e4dc98256b755acf931097d218f8b0dd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Fotografie <noindex><a rel=\"nofollow\" href=\"https:\/\/unsplash.com\/photos\/DgZxBnZeQo8?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Tony Stoddard<\/a><\/noindex> z webu Unsplash<\/i><\/p>\n<p>P\u0159i organizaci komunikace s vn\u011bj\u0161\u00edm sv\u011btem je v\u017edy velmi d\u016fle\u017eit\u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#security\">bezpe\u010dnost<\/a><\/noindex>, na co\u017e je tak\u00e9 t\u0159eba p\u0159istupovat se v\u0161\u00ed v\u00e1\u017enost\u00ed a aktivn\u011b se t\u00edm zab\u00fdvat. <\/p>\n<p><b>Distribuce p\u0159ipojen\u00ed<\/b><\/p>\n<p>Nejsem si jist\u00fd, zda se prezentace tohoto t\u00e9matu jako samostatn\u00e9 sekce v\u0161em jev\u00ed jako opr\u00e1vn\u011bn\u00e1. Nicm\u00e9n\u011b zde rozvedu tuto koncepci a pova\u017euji za nejp\u0159esn\u011bj\u0161\u00ed popis tohoto odd\u00edlu term\u00edn \u201edistribuce p\u0159ipojen\u00ed\u201c (connection distribution).<\/p>\n<p>Syst\u00e9my se formuj\u00ed spr\u00e1vn\u00fdm propojen\u00edm mnoha komponent\u016f a jejich komunikace mezi sebou je \u010dasto organizov\u00e1na na z\u00e1klad\u011b ust\u00e1len\u00fdch protokol\u016f, jako jsou TCP a UDP. Tyto protokoly v\u0161ak \u010dasto nesta\u010d\u00ed k uspokojen\u00ed v\u0161ech pot\u0159eb modern\u00edch syst\u00e9m\u016f, kter\u00e9 jsou \u010dasto provozov\u00e1ny p\u0159i vysok\u00e9m zat\u00ed\u017een\u00ed a siln\u011b z\u00e1vis\u00ed na pot\u0159eb\u00e1ch u\u017eivatel\u016f. \u010casto je nutn\u00e9 hledat zp\u016fsoby distribuce p\u0159ipojen\u00ed, abychom se vyrovnali s takov\u00fdmi vysok\u00fdmi zat\u00ed\u017een\u00edmi v syst\u00e9mu.<\/p>\n<p>Na z\u00e1klad\u011b takov\u00e9 distribuce le\u017e\u00ed dob\u0159e zn\u00e1m\u00fd <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DNS\">syst\u00e9m dom\u00e9nov\u00fdch jmen<\/a><\/noindex> (DNS). Tento syst\u00e9m umo\u017e\u0148uje p\u0159ev\u00e1d\u011bt dom\u00e9nov\u00e9 jm\u00e9no, jako nap\u0159\u00edklad v\u00e1\u017een\u00fd cyklick\u00fd algoritmus (weighted round robin) a metody na z\u00e1klad\u011b zpo\u017ed\u011bn\u00ed, kter\u00e9 pom\u00e1haj\u00ed distribuovat z\u00e1t\u011b\u017e. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%91%D0%B0%D0%BB%D0%B0%D0%BD%D1%81%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8\">Vyva\u017eov\u00e1n\u00ed z\u00e1t\u011b\u017ee<\/a><\/noindex> je z\u00e1sadn\u011b d\u016fle\u017eit\u00e9 a prakticky ka\u017ed\u00fd velk\u00fd syst\u00e9m na internetu, se kter\u00fdm se dnes mus\u00edme pot\u00fdkat, je um\u00edst\u011bn za jedn\u00edm nebo n\u011bkolika vyva\u017eova\u010di z\u00e1t\u011b\u017ee. Vyva\u017eova\u010de z\u00e1t\u011b\u017ee pom\u00e1haj\u00ed distribuovat klientsk\u00e9 po\u017eadavky mezi mnoha dostupn\u00fdmi instancemi. Vyva\u017eova\u010de z\u00e1t\u011b\u017ee mohou b\u00fdt jak hardwarov\u00e9, tak softwarov\u00e9, ale v praxi se \u010dast\u011bji setk\u00e1v\u00e1me se softwarov\u00fdmi, nap\u0159\u00edklad s <noindex><a rel=\"nofollow\" href=\"http:\/\/www.haproxy.org\/\">D\u00e1le klientsk\u00fd dotaz vch\u00e1zel do HAProxy, kter\u00e9 \u0159e\u0161ilo n\u00e1sleduj\u00edc\u00ed \u00fakoly:<\/a><\/noindex> a <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/ru\/elasticloadbalancing\/\">ELB<\/a><\/noindex>. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer#reverse-proxy-web-server\">Zp\u011btn\u00e9 proxy<\/a><\/noindex> konceptu\u00e1ln\u011b se tak\u00e9 velmi podobaj\u00ed vyva\u017eova\u010d\u016fm z\u00e1t\u011b\u017ee, i kdy\u017e mezi nimi existuje \u0159ada <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer#load-balancer-vs-reverse-proxy\">v\u00fdrazn\u00fdch rozd\u00edl\u016f<\/a><\/noindex>. Tyto rozd\u00edly je nutn\u00e9 zohlednit p\u0159i navrhov\u00e1n\u00ed syst\u00e9mu podle va\u0161ich pot\u0159eb.<\/p>\n<p>Tak\u00e9 je t\u0159eba v\u011bd\u011bt o <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Content_Delivery_Network\">s\u00edt\u00edch pro doru\u010dov\u00e1n\u00ed obsahu<\/a><\/noindex> (CDN). CDN je glob\u00e1ln\u00ed distribuovan\u00e1 s\u00ed\u0165 proxy server\u016f, kter\u00e1 doru\u010duje informace z t\u011bch uzl\u016f, kter\u00e9 jsou geograficky um\u00edst\u011bny bl\u00ed\u017ee k konkr\u00e9tn\u00edmu u\u017eivateli. S\u00edt\u011b CDN se doporu\u010duje pou\u017e\u00edvat, pokud pracujete se statick\u00fdmi soubory napsan\u00fdmi v JavaScriptu, CSS a HTML. Dnes jsou tak\u00e9 obl\u00edben\u00e9 cloudov\u00e9 slu\u017eby, kter\u00e9 poskytuj\u00ed spr\u00e1vce provozu, nap\u0159\u00edklad <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/traffic-manager\/traffic-manager-overview?ranMID=24542&amp;ranEAID=je6NUbpObpQ&amp;ranSiteID=je6NUbpObpQ-9vzliSFGJdQqkHaqdUFnUQ&amp;epi=je6NUbpObpQ-9vzliSFGJdQqkHaqdUFnUQ&amp;irgwc=1&amp;OCID=AID2000142_aff_7593_1243925&amp;tduid=(ir__ntizratyeckfrlt1kk0sohz30m2xjibo1hl6incq00)(7593)(1243925)(je6NUbpObpQ-9vzliSFGJdQqkHaqdUFnUQ)()&amp;irclickid=_ntizratyeckfrlt1kk0sohz30m2xjibo1hl6incq00\">Azure Traffic Manager<\/a><\/noindex>, kter\u00e9 v\u00e1m zaji\u0161\u0165uj\u00ed glob\u00e1ln\u00ed distribuci a sn\u00ed\u017een\u00e9 latence p\u0159i pr\u00e1ci s dynamick\u00fdm obsahem. Tyto slu\u017eby jsou v\u0161ak obvykle u\u017eite\u010dn\u00e9 v p\u0159\u00edpadech, kdy mus\u00edte pracovat s webov\u00fdmi slu\u017ebami bez uchov\u00e1v\u00e1n\u00ed stavu. <\/p>\n<p><b>Poj\u010fme hovo\u0159it o business logice. Strukturov\u00e1n\u00ed business logiky, pracovn\u00edch tok\u016f a komponenty<\/b><\/p>\n<p>Tak\u017ee jsme stihli probrat r\u016fzn\u00e9 infrastrukturn\u00ed aspekty syst\u00e9mu. Je pravd\u011bpodobn\u00e9, \u017ee u\u017eivatel si ani neuv\u011bdomuje v\u0161echny tyto prvky va\u0161eho syst\u00e9mu a up\u0159\u00edmn\u011b \u0159e\u010deno, v\u016fbec si s nimi ned\u011bl\u00e1 starosti. U\u017eivatel se zaj\u00edm\u00e1 o to, jak\u00e9 to je interagovat s va\u0161\u00edm syst\u00e9mem, co v\u0161echno je mo\u017en\u00e9 ud\u011blat, kdy\u017e se chov\u00e1te t\u00edmto zp\u016fsobem, a tak\u00e9 jak\u00fdm zp\u016fsobem syst\u00e9m vykon\u00e1v\u00e1 u\u017eivatelsk\u00e9 p\u0159\u00edkazy, co a jak d\u011bl\u00e1 s u\u017eivatelsk\u00fdmi daty.<\/p>\n<p>Jak je z n\u00e1zvu tohoto \u010dl\u00e1nku jasn\u00e9, hodlal jsem hovo\u0159it o softwarov\u00e9 architektu\u0159e a n\u00e1vrhu syst\u00e9m\u016f. Proto jsem nepl\u00e1noval pokr\u00fdt n\u00e1vrhov\u00e9 vzory softwaru, kter\u00e9 popisuj\u00ed, jak jsou vytv\u00e1\u0159eny softwarov\u00e9 komponenty. Nicm\u00e9n\u011b \u010d\u00edm v\u00edce o tom p\u0159em\u00fd\u0161l\u00edm, t\u00edm v\u00edc se mi zd\u00e1, \u017ee hranice mezi n\u00e1vrhov\u00fdmi vzory softwaru a architektonick\u00fdmi vzory je velmi rozmazan\u00e1 a tyto dv\u011b koncepty jsou \u00fazce propojeny. Vezm\u011bme si nap\u0159\u00edklad <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/eaaDev\/EventSourcing.html\">sledov\u00e1n\u00ed ud\u00e1lost\u00ed<\/a><\/noindex> (event sourcing). Jakmile si osvoj\u00edte tento architektonick\u00fd vzor, ovlivn\u00ed to prakticky v\u0161echny aspekty va\u0161eho syst\u00e9mu: dlouhodob\u00e9 uchov\u00e1v\u00e1n\u00ed dat, \u00farove\u0148 konzistence, p\u0159ij\u00edmanou ve va\u0161em syst\u00e9mu, siluetu komponent\u016f v n\u011bm atd. Proto jsem se rozhodl zm\u00ednit n\u011bkter\u00e9 architektonick\u00e9 vzory, kter\u00e9 se p\u0159\u00edmo t\u00fdkaj\u00ed business logiky. I kdy\u017e se v tomto \u010dl\u00e1nku mus\u00edm omezit na jednoduch\u00fd seznam, doporu\u010duji v\u00e1m se s n\u00edm sezn\u00e1mit a zamyslet se nad my\u0161lenkami souvisej\u00edc\u00edmi s t\u011bmito vzory. Tady, pros\u00edm:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/SOLID_(%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)\">Principy SOLID<\/a><\/noindex> <\/li>\n<li>Koncepty <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5\">P\u0159edm\u011btov\u011b orientovan\u00e9 navrhov\u00e1n\u00ed<\/a><\/noindex>, konkr\u00e9tn\u011b <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/ingeniouslysimple\/aggregates-in-domain-driven-design-5aab3ef9901d\">agreg\u00e1ty<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/ingeniouslysimple\/command-vs-event-in-domain-driven-design-be6c45be52a9\">t\u00fdmy a ud\u00e1losti<\/a><\/noindex> <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/267125\/\">Hexagon\u00e1ln\u00ed architektura<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/CQRS.html\">Rozd\u011blen\u00ed odpov\u011bdnosti na t\u00fdmy a po\u017eadavky (CQRS)<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/eaaDev\/EventSourcing.html\">Registrace ud\u00e1lost\u00ed<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/doc.akka.io\/docs\/akka\/2.5\/guide\/actors-intro.html\">Actor model<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/215605\/\">\u0160ablony n\u00e1vrhu MVC, MVVM a MVP<\/a><\/noindex><\/li>\n<\/ul>\n<p>\n<b>Kolaborativn\u00ed p\u0159\u00edstupy<\/b><\/p>\n<p>Je velmi nepravd\u011bpodobn\u00e9, \u017ee se na projektu ocitnete jako ten \u00fa\u010dastn\u00edk, kter\u00fd s\u00e1m odpov\u00edd\u00e1 za proces n\u00e1vrhu syst\u00e9mu. Naopak, pravd\u011bpodobn\u011b budete muset spolupracovat s kolegy, kte\u0159\u00ed pracuj\u00ed jak v r\u00e1mci va\u0161eho \u00fakolu, tak i mimo n\u011bj. V takov\u00e9m p\u0159\u00edpad\u011b m\u016f\u017ee b\u00fdt pot\u0159eba posoudit zvolen\u00e9 technologick\u00e9 \u0159e\u0161en\u00ed spole\u010dn\u011b s kolegy, vy\u010dlenit obchodn\u00ed pot\u0159eby a pochopit, jak nejl\u00e9pe paralelizovat \u00fakoly.<\/p>\n<p><img decoding=\"async\" alt=\"Softwarov\u00e9 architektura a n\u00e1vrh syst\u00e9m\u016f: celkov\u00fd p\u0159ehled a pr\u016fvodce zdroji\" src=\"\/wp-content\/uploads\/2019\/07\/ad39e031dcac8e69fafb637603043bfb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Fotografie <noindex><a rel=\"nofollow\" href=\"https:\/\/unsplash.com\/photos\/3V8xo5Gbusk?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Kaleidico<\/a><\/noindex> z webu Unsplash<\/i><\/p>\n<p>Nejd\u0159\u00edve je pot\u0159eba vypracovat p\u0159esn\u00e9 a obecn\u011b uzn\u00e1van\u00e9 p\u0159edstavy o tom, jak\u00fd je obchodn\u00ed c\u00edl, kter\u00fd se sna\u017e\u00edte dos\u00e1hnout, a s jak\u00fdmi pohybliv\u00fdmi prvky budete muset pracovat. Techniky skupinov\u00e9ho modelov\u00e1n\u00ed, konkr\u00e9tn\u011b <noindex><a rel=\"nofollow\" href=\"https:\/\/techbeacon.com\/devops\/introduction-event-storming-easy-way-achieve-domain-driven-design\">event storming<\/a><\/noindex> (event storming) v\u00fdrazn\u011b urychluj\u00ed tento proces a zvy\u0161uj\u00ed va\u0161e \u0161ance na \u00fasp\u011bch. Tohoto \u00fakolu se m\u016f\u017eete ujmout p\u0159edt\u00edm, nebo pot\u00e9, co vymez\u00edte <noindex><a rel=\"nofollow\" href=\"https:\/\/www.infoq.com\/news\/2015\/02\/service-boundaries-healthcare\/\">hranice va\u0161ich slu\u017eeb<\/a><\/noindex>, a pak ho prohlubovat, jak produkt zraje. Na z\u00e1klad\u011b \u00farovn\u011b shody, kter\u00e1 zde bude dosa\u017eena, m\u016f\u017eete tak\u00e9 formulovat <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/UbiquitousLanguage.html\">jednotn\u00fd jazyk<\/a><\/noindex> pro omezen\u00fd kontext, v n\u011bm\u017e pracujete. Kdy\u017e bude pot\u0159eba hovo\u0159it o architektu\u0159e va\u0161eho syst\u00e9mu, m\u016f\u017ee se v\u00e1m hodit <noindex><a rel=\"nofollow\" href=\"https:\/\/c4model.com\/\">C4 model<\/a><\/noindex>, navr\u017een\u00fd <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/simonbrown\">Simonem Brownem<\/a><\/noindex>, zvl\u00e1\u0161\u0165 kdy\u017e je pot\u0159eba pochopit, jak hluboko se mus\u00edte pono\u0159it do detail\u016f probl\u00e9mu, vizualizac\u00ed v\u011bc\u00ed, kter\u00e9 chcete sd\u011blit.<\/p>\n<p>Pravd\u011bpodobn\u011b existuje i jin\u00e1 vysp\u011bl\u00e1 technologie v t\u00e9to oblasti, kter\u00e1 je stejn\u011b u\u017eite\u010dn\u00e1 jako p\u0159edm\u011btov\u011b orientovan\u00e9 navrhov\u00e1n\u00ed. P\u0159esto se n\u011bjak\u00fdm zp\u016fsobem v\u017edy vrac\u00edme k porozum\u011bn\u00ed p\u0159edm\u011btu, a proto se znalosti a zku\u0161enosti v oblasti <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5\">p\u0159edm\u011btov\u011b orientovan\u00e9ho navrhov\u00e1n\u00ed<\/a><\/noindex> budou v\u00e1m ur\u010dit\u011b hodit.<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/piter\/blog\/461283\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043a\u043e\u043b\u043b\u0435\u0433\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0430 \u0432\u0430\u0448 \u0441\u0443\u0434 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u0422\u0443\u0433\u0431\u0435\u0440\u043a\u0430 \u0423\u0433\u0443\u0440\u043b\u0443 (Tugberk Ugurlu), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0437\u044f\u043b\u0441\u044f \u0432 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043e\u0431\u044a\u0435\u043c\u0435 \u0438\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u0444\u0442\u0432\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c. \u0412\u043e\u0442 \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u0440 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u0441\u0435\u0431\u0435 \u0432 \u0441\u0443\u0445\u043e\u043c \u043e\u0441\u0442\u0430\u0442\u043a\u0435: \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0440\u0435\u0448\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u0432 \u0445\u0430\u0431\u0440\u043e\u0441\u0442\u0430\u0442\u044c\u0435 \u0442\u0430\u043a\u0443\u044e \u043a\u043e\u043b\u043e\u0441\u0441\u0430\u043b\u044c\u043d\u0443\u044e \u0442\u0435\u043c\u0443, \u043a\u0430\u043a \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b + \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u043d\u0430 2019 \u0433\u043e\u0434, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27331,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36518","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.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043a\u043e\u043b\u043b\u0435\u0433\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0430 \u0432\u0430\u0448 \u0441\u0443\u0434 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u0422\u0443\u0433\u0431\u0435\u0440\u043a\u0430 \u0423\u0433\u0443\u0440\u043b\u0443 (Tugberk Ugurlu), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0437\u044f\u043b\u0441\u044f \u0432 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043e\u0431\u044a\u0435\u043c\u0435 \u0438\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u0444\u0442\u0432\u0435\u0440\u043d\u044b\u0445.\" \/>\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\/cs\/blog\/administrirovanie\/programmnaya-arhitektura-i-proektirovanie-sistem-obshhaya-kartina-i-putevoditel-po-resursam\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c: \u043e\u0431\u0449\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u0430 \u0438 \u043f\u0443\u0442\u0435\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043f\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043a\u043e\u043b\u043b\u0435\u0433\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0430 \u0432\u0430\u0448 \u0441\u0443\u0434 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u0422\u0443\u0433\u0431\u0435\u0440\u043a\u0430 \u0423\u0433\u0443\u0440\u043b\u0443 (Tugberk Ugurlu), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0437\u044f\u043b\u0441\u044f \u0432 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043e\u0431\u044a\u0435\u043c\u0435 \u0438\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u0444\u0442\u0432\u0435\u0440\u043d\u044b\u0445.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/programmnaya-arhitektura-i-proektirovanie-sistem-obshhaya-kartina-i-putevoditel-po-resursam\" \/>\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=\"2019-10-31T19:12:07+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:12:07+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\udd47Softwarov\u00e1 architektura a n\u00e1vrh syst\u00e9m\u016f: celkov\u00fd p\u0159ehled a pr\u016fvodce zdroji | ProHoster","description":"Dobr\u00fd den, kolegov\u00e9. Dnes v\u00e1m p\u0159edkl\u00e1d\u00e1me p\u0159eklad \u010dl\u00e1nku Tugberka Ugurlu, kter\u00fd se ve srovn\u00e1n\u00ed s jin\u00fdmi texty pokusil stru\u010dn\u011b shrnout principy navrhov\u00e1n\u00ed modern\u00edho softwaru.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/programmnaya-arhitektura-i-proektirovanie-sistem-obshhaya-kartina-i-putevoditel-po-resursam","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c: \u043e\u0431\u0449\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u0430 \u0438 \u043f\u0443\u0442\u0435\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043f\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c | ProHoster","og:description":"\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043a\u043e\u043b\u043b\u0435\u0433\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0430 \u0432\u0430\u0448 \u0441\u0443\u0434 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u0422\u0443\u0433\u0431\u0435\u0440\u043a\u0430 \u0423\u0433\u0443\u0440\u043b\u0443 (Tugberk Ugurlu), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0437\u044f\u043b\u0441\u044f \u0432 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043e\u0431\u044a\u0435\u043c\u0435 \u0438\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u0444\u0442\u0432\u0435\u0440\u043d\u044b\u0445.","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/programmnaya-arhitektura-i-proektirovanie-sistem-obshhaya-kartina-i-putevoditel-po-resursam","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":"2019-10-31T19:12:07+00:00","article:modified_time":"2019-10-31T19:12:07+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36518","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":"2026-01-22 03:40:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:43:33","updated":"2026-01-22 03:40:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/36518","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=36518"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/36518\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/27331"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=36518"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=36518"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=36518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}