{"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\/et\/blog\/administrirovanie\/programmnaya-arhitektura-i-proektirovanie-sistem-obshhaya-kartina-i-putevoditel-po-resursam","title":{"rendered":"Tarkvaraarhitektuur ja s\u00fcsteemide projekteerimine: \u00fcldine \u00fclevaade ja ressursside juhend","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Tere, kolleegid.<\/p>\n<p>T\u00e4na esitame teie t\u00e4helepanu t\u00f5lke Tugberk Ugurlu artiklist, kus on v\u00f5rreldes v\u00e4iksema mahuga v\u00e4lja toodud kaasaegsete tarkvaras\u00fcsteemide projekteerimise p\u00f5him\u00f5tted. Siin on, mida autor enda kohta \u00fctleb.<\/p>\n<p><img decoding=\"async\" alt=\"Tarkvaraarhitektuur ja s\u00fcsteemide projekteerimine: \u00fcldine \u00fclevaade ja ressursside juhend\" src=\"\/wp-content\/uploads\/2019\/07\/30de77ffad15171ce493ce5003c99360.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nKuna sellise kolossaalset teemat, nagu arhitektuurilised mustrid + projekteerimise mustrid aastaks 2019, on v\u00f5imatu hajutada, soovitame mitte ainult h\u00e4rra Ugurlu teksti, vaid ka rohkelt linke, mille ta lahkesti esitanud on. Kui see teile meeldib, avaldame ka kitsama eriteema tekstid jaotatud s\u00fcsteemide projekteerimise kohta.<\/p>\n<p><img decoding=\"async\" alt=\"Tarkvaraarhitektuur ja s\u00fcsteemide projekteerimine: \u00fcldine \u00fclevaade ja ressursside juhend\" 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>Pilt <noindex><a rel=\"nofollow\" href=\"https:\/\/unsplash.com\/photos\/6EnTPvPPL6I?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Isaac Smith<\/a><\/noindex> Unsplashi saidilt<\/i><\/p>\n<p>Kui te pole kunagi silmitsi seisnud selliste v\u00e4ljakutsetega nagu tarkvaras\u00fcsteemi projekteerimine nullist, siis alustades sellist t\u00f6\u00f6d ei ole m\u00f5nikord isegi selge, kust alustada. Usun, et esmalt on vajalik joonistada piirid, et enam-v\u00e4hem kindlalt m\u00f5ista, mida te t\u00e4pselt projekteerima hakkate, ja seej\u00e4rel \u2013 rullida \u00fcles varrukad ja t\u00f6\u00f6tada, j\u00e4\u00e4des nende piiride sisse. Aluspunktiks v\u00f5ib v\u00f5tta m\u00f5ne toote v\u00f5i teenuse (ideaalis \u2013 sellise, mis teile v\u00e4ga meeldib) ja anal\u00fc\u00fcsida selle teostust. V\u00f5ib-olla imestate, kui lihtne see toode v\u00e4lja n\u00e4eb ning kui suur keerukus selles tegelikult peitub. \u00c4rge unustage: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=k9Zbuuo51go\">lihtne on tavaliselt keeruline<\/a><\/noindex>, ja see on normaalne.<\/p>\n<p>Arvan, et parim n\u00f5uanne neile, kes alustavad s\u00fcsteemi projekteerimist, on: \u00e4rge tehke mingeid oletusi! Alates esimesest hetkest on oluline t\u00e4psustada faktid, mis on selle s\u00fcsteemi kohta teada, ja sellega seotud ootused. Siin on m\u00f5ned head k\u00fcsimused, millele vastamine aitab teil projekti alustada:<\/p>\n<ul>\n<li>Mis on probleem, mida me p\u00fc\u00fcame lahendada? <\/li>\n<li>Kui palju kasutajaid suudab meie s\u00fcsteem korraga taluda?<\/li>\n<li>Milliseid andmete kirjutamise ja lugemise mustreid me kasutama hakkame? <\/li>\n<li>Millised on oodatavad t\u00f5rkeolukorrad ja kuidas me plaanime nendega toime tulla?<\/li>\n<li>Millised ootused kehtivad s\u00fcsteemi j\u00e4rjepidevuse ja k\u00e4ttesaadavuse osas? <\/li>\n<li>Kas tuleb t\u00f6\u00f6 k\u00e4igus arvesse v\u00f5tta mingeid n\u00f5udeid, mis on seotud v\u00e4listest kontrollidest ja regulatsioonidega?<\/li>\n<li>Milliseid konfidentsiaalsete andmete vorme me kavatseme salvestada?<\/li>\n<\/ul>\n<p>\nNeed on vaid m\u00f5ned k\u00fcsimused, mis on olnud abiks nii mulle kui ka meeskondadele, kellega olen aastate jooksul t\u00f6\u00f6tanud. Kui tead vastuseid neile k\u00fcsimustele (ja teistele, mis on kontekstis, kus sa t\u00f6\u00f6tad, asjakohased), saad s\u00fcveneda tehnilistele detailidele.<\/p>\n<p><b>Seame algtaseme<\/b><\/p>\n<p>Mida m\u00f5istan ma siin \u00abalgtaseme\u00bb all? T\u00e4nap\u00e4eval on enamik tarkvarainstitutsioonide probleeme \u00ablahendatavad\u00bb juba olemasolevate meetodite ja tehnoloogiate abil. Seega, selle maastiku tundmine annab sulle teatud eelise, kui puutud kokku probleemidega, mida keegi teine on enne sind lahendanud. Pea meeles, et programmid on kirjutatud \u00e4ri- ja kasutajaprobleemide lahendamiseks, seega p\u00fc\u00fcame lahendust leida k\u00f5ige otsemal ja lihtsamal (kasutaja seisukohalt) viisil. Miks on seda oluline meeles pidada? V\u00f5ib-olla sulle meeldib oma koordinaatides leida ainulaadseid lahendusi igale probleemile, arvates, et \u00abkuidas ma saan olla programmeerija, kui j\u00e4rgnen k\u00f5igile mustritele\u00bb? Tegeliselt, <b>kunsti seisneb siin otsuste tegemises, kus ja mida teha<\/b>. Loomulikult seisavad meie ees aeg-ajalt unikaalsed probleemid, iga\u00fcks neist on t\u00f5eline v\u00e4ljakutse. Kuid kui meie algtase on selgelt piiritletud, teame, kuhu investeerida: kas valmis lahenduste leidmiseks v\u00f5i probleemi s\u00fcgavamaks uurimiseks ja m\u00f5istmiseks.<\/p>\n<p>Arvan, et mul on \u00f5nnestunud sind veenda, et kui spetsialist m\u00f5istab kindlalt aru saada, milline on teatud suurep\u00e4raste tarkvaras\u00fcsteemide arhitektuuriline omadus, siis need teadmised on hindamatud arhitektuuri kunsti omandamisel ja selle valdkonna kindla alusbaasi loomisel.<\/p>\n<p>No h\u00e4sti, kust alustada? \u00dc <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\">Donna Martin<\/a><\/noindex> on loonud GitHubis hoidla nimega <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\">system-design-primer<\/a><\/noindex>, mille materjalide abil saad \u00f5ppida suurte s\u00fcsteemide projekteerimist ja valmistuda intervjuudeks selle teema kohta. Hoidlas on jaotis n\u00e4idete <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/tree\/1144b8ef4c441af73f7cbfd51f56b8eb62350a66#real-world-architectures\">reaalsetest arhitektuuridest<\/a><\/noindex>, kus arutatakse, kuidas organisatsioonid oma s\u00fcsteemide disainile l\u00e4henevad <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/tree\/1144b8ef4c441af73f7cbfd51f56b8eb62350a66#company-architectures\">m\u00f5ned tuntud ettev\u00f5tted<\/a><\/noindex>, nagu Twitter, Uber jne.<\/p>\n<p>Kuid enne selle sisu juurde liikumist tasub l\u00e4hemalt uurida k\u00f5ige olulisemaid arhitektuurilisi v\u00e4ljakutseid, millega praktikas silmitsi seistakse. See on oluline, kuna tuleb t\u00e4psustada PALJU aspekte, mis on keerulise ja mitmekesise probleemi osa, ning seej\u00e4rel lahendada see antud s\u00fcsteemis kehtivate regulatsioonide raames. <noindex><a rel=\"nofollow\" href=\"https:\/\/jg.gg\/\">Jackson Gabbard<\/a><\/noindex>, endine Facebooki t\u00f6\u00f6taja, salvestas <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=ZgdS0EUmn70\">50-minutilise video intervjuudest, mis k\u00e4sitlevad s\u00fcsteemide disaini<\/a><\/noindex>, kus ta jagas oma isiklikku kogemust sadade kandidaatide l\u00e4bivaatamisel. Kuigi video k\u00e4sitleb selgelt suurte s\u00fcsteemide disaini ja eduka kandidaadi valimise kriitereid, tuleb see siiski p\u00f5hjalikuks allikaks selle kohta, mis on k\u00f5ige t\u00e4htsam s\u00fcsteemide disainimisel. Samuti pakun <noindex><a rel=\"nofollow\" href=\"https:\/\/jg.gg\/2016\/07\/31\/architecture-and-systems-design-interview\/\">kuid<\/a><\/noindex> selle video kokkuv\u00f5tet.<\/p>\n<p><b>Koguge teadmisi andmete salvestamisest ja v\u00e4ljastamisest<\/b> <\/p>\n<p>\u00dcldiselt m\u00f5jutab teie otsus, kuidas te soovite oma andmeid pikaajaliselt salvestada ja edastada, s\u00fcsteemi j\u00f5udlust kriitiliselt. Seet\u00f5ttu peaksite k\u00f5igepealt m\u00f5istma oma s\u00fcsteemis andmete salvestamise ja lugemise oodatavaid omadusi. Siis peate olema v\u00f5imeline neid n\u00e4itajaid hindama ja tegema valikud tuginedes tehtud hindamistele. Kuid te suudate seda t\u00f6\u00f6d t\u00f5husalt teha vaid siis, kui olete teadlik olemasolevatest andmestruktuuri mudelitest. \u00dcldiselt t\u00e4hendavad need kindlaid teadmisi, mis on seotud <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#database\">andmebaasi valikuga<\/a><\/noindex>. <\/p>\n<p>Andmebaase v\u00f5ib pidada andmestruktuurideks, millel on erakordne skaleeritavus ja p\u00fcsivus. Seet\u00f5ttu peaks andmestruktuuride tundmine olema kasulik ka teile, kui valite \u00fchte v\u00f5i teist andmebaasi. N\u00e4iteks <noindex><a rel=\"nofollow\" href=\"https:\/\/redis.io\/topics\/data-types-intro\">Redis<\/a><\/noindex> Redis on andmestruktuuride teenus, mis toetab erinevaid v\u00e4\u00e4rtuste t\u00fc\u00fcpe. See v\u00f5imaldab t\u00f6\u00f6tada selliste andmestruktuuridega nagu loendid ja komplektid ning lugeda andmeid tuntud algoritmide kaudu, n\u00e4iteks <noindex><a rel=\"nofollow\" href=\"https:\/\/redis.io\/topics\/lru-cache\">LRU<\/a><\/noindex>, korraldades seda t\u00f6\u00f6d p\u00fcsivas ja k\u00f5rge k\u00e4ttesaadavuse vormis. <\/p>\n<p><img decoding=\"async\" alt=\"Tarkvaraarhitektuur ja s\u00fcsteemide projekteerimine: \u00fcldine \u00fclevaade ja ressursside juhend\" src=\"\/wp-content\/uploads\/2019\/07\/8e30da0e8edd592609466f3c6c6f66d1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Pilt <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> Unsplashi saidilt<\/i><\/p>\n<p>Kui olete piisavalt orienteeritud erinevates andmete salvestamise mustrites, liikuge edasi andmete j\u00e4rjepidevuse ja k\u00e4ttesaadavuse uurimise juurde. Esmalt peate omandama <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#cap-theorem\">CAP-teoreemi<\/a><\/noindex> , v\u00e4hemalt \u00fcldiselt, ja seej\u00e4rel t\u00e4iendama neid teadmisi, uurides l\u00e4hemalt juurdunud mustreid <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#consistency-patterns\">j\u00e4rjepidevus<\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#availability-patterns\">k\u00e4ttesaadavus<\/a><\/noindex>. Nii saad te tunda valdkonna laiemat pilti ja m\u00f5ista, et andmete lugemine ja kirjutamine on tegelikult kaks t\u00e4iesti erinevat probleemi, iga\u00fchega on seotud oma spetsiifilised v\u00e4ljakutsed. Varustades end mitmete j\u00e4rjepidevuse ja k\u00e4ttesaadavuse tagamise mustritega, saate m\u00e4rkimisv\u00e4\u00e4rselt t\u00f5sta s\u00fcsteemi tootlikkust, samal ajal tagades andmete sujuva k\u00e4ttesaadavuse teie rakendustes.<\/p>\n<p>L\u00f5petades andmete salvestamise teemadel r\u00e4\u00e4kimise, tuleb mainida ka vahem\u00e4lu. Kas seda tuleks hallata samaaegselt kliendis ja serveris? Milliseid andmeid hoiate vahem\u00e4lus? Ja miks? Kuidas organiseerite vahem\u00e4lu t\u00fchjendamise? Kas see toimub regulaarselt, teatud ajavahemike j\u00e4rel? Kui jah, siis kui sageli? Nende teemadega soovitaksin alustada <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#cache\">j\u00e4rgmisest jaost<\/a><\/noindex> \u00fclespool mainitud s\u00fcsteemide projekteerimise k\u00e4siraamatust. <\/p>\n<p><b>Kommunikatsioonimustrid<\/b><\/p>\n<p>S\u00fcsteemid koosnevad erinevatest komponentidest; need v\u00f5ivad olla erinevad protsessid, mis t\u00f6\u00f6tavad \u00fche ja sama f\u00fc\u00fcsilise s\u00f5lme sees, v\u00f5i erinevad masinad, mis tegutsevad teie v\u00f5rgu erinevates osades. M\u00f5ned neist ressurssidest teie v\u00f5rgu piires v\u00f5ivad olla privaatsed, aga teised peavad olema avalikud ja avatud v\u00e4liskasutajatele, kes neile ligip\u00e4\u00e4su otsivad.<\/p>\n<p>On oluline tagada nende ressursside omavaheline kommunikatsioon, samuti teabe vahetamine kogu s\u00fcsteemi ja v\u00e4lismaailma vahel. S\u00fcsteemide projekteerimise kontekstis seisame siin j\u00e4lle silmitsi uute ainulaadsete v\u00e4ljakutsetega. Uurime, kuidas v\u00f5ivad olla kasulikud <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#asynchronism\">as\u00fcnkroonsed t\u00f6\u00f6vood<\/a><\/noindex>, ja millised erinevad kommunikatsioonimustrid on saadaval<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#communication\">Toni Stoddard<\/a><\/noindex>. <\/p>\n<p><img decoding=\"async\" alt=\"Tarkvaraarhitektuur ja s\u00fcsteemide projekteerimine: \u00fcldine \u00fclevaade ja ressursside juhend\" src=\"\/wp-content\/uploads\/2019\/07\/e4dc98256b755acf931097d218f8b0dd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Pilt <noindex><a rel=\"nofollow\" href=\"https:\/\/unsplash.com\/photos\/DgZxBnZeQo8?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">V\u00e4lismaailmaga suhtlemise korraldamisel on alati \u00e4\u00e4rmiselt oluline<\/a><\/noindex> Unsplashi saidilt<\/i><\/p>\n<p>, mille tagamisele tuleb l\u00e4heneda t\u00f5siselt ja aktiivselt tegeleda selle teemaga. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#security\">turvalisus<\/a><\/noindex>\u00dchenduste jaotamine <\/p>\n<p><b>\u00dchenduste jaotamine<\/b><\/p>\n<p>Ei ole kindel, et selle teema eraldi sektsiooniks v\u00e4lja toomine n\u00e4ib k\u00f5igile p\u00f5hjendatud. Sellegipoolest selgitan siin seda kontseptsiooni p\u00f5hjalikult, tuues v\u00e4lja, et selle osa materjali on k\u00f5ige t\u00e4psem kirjeldada terminiga \u201e\u00fchenduste jaotamine\u201c (connection distribution).<\/p>\n<p>S\u00fcsteemid kujunevad v\u00e4lja \u00f5ige hulga komponentide \u00fchendamise kaudu, ja nendevaheline kommunikatsioon toimub sageli kehtivate protokollide, n\u00e4iteks TCP ja UDP alusel. Kuid enamasti pole neid protokolle piisavalt, et rahuldada kaasaegsete s\u00fcsteemide k\u00f5iki vajadusi, mis sageli t\u00f6\u00f6tavad k\u00f5rge koormuse all ja s\u00f5ltuvad suuresti kasutajate n\u00f5udmistest. Sageli on vajalik leida viise \u00fchenduste jaotamiseks, et tulla toime selliste k\u00f5rgete koormustega s\u00fcsteemis.<\/p>\n<p>Selle jaotamise aluseks on h\u00e4sti tuntud <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DNS\">domeeninimi s\u00fcsteem<\/a><\/noindex> (DNS). Selline s\u00fcsteem v\u00f5imaldab muuta domeeninime, n\u00e4iteks kaalutud ringdaanide algoritmi (weighted round robin) ja viivituste p\u00f5hised meetodid, mis aitavad jaotada koormust. <\/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\">Koormuse tasakaalustamine<\/a><\/noindex> on p\u00f5him\u00f5tteliselt oluline, ja praktiliselt iga suur s\u00fcsteem Internetis, millega me t\u00e4na kokku puutume, asub \u00fche v\u00f5i mitme koormuse tasakaalustaja taga. Koormuse tasakaalustajad aitavad jaotada kliendi p\u00e4ringud mitme saadaval oleva eksemplari vahel. Koormuse tasakaalustajad v\u00f5ivad olla nii riistvara kui ka tarkvara, kuid praktikas puutume sagedamini kokku tarkvaralistega, n\u00e4iteks <noindex><a rel=\"nofollow\" href=\"http:\/\/www.haproxy.org\/\">Edasi l\u00e4ks kliendi p\u00e4ring HAProxy-sse, mis lahendas j\u00e4rgmised \u00fclesanded:<\/a><\/noindex> ja <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\">Tagasi p\u00f6\u00f6rdud serverid<\/a><\/noindex> on kontseptsioonilt samuti v\u00e4ga sarnased koormuse tasakaalustajatele, kuigi nende vahel on rida <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer#load-balancer-vs-reverse-proxy\">selgeid erinevusi<\/a><\/noindex>. Need erinevused tuleb tingimata arvesse v\u00f5tta, kavandades s\u00fcsteemi vastavalt oma vajadustele.<\/p>\n<p>Samuti tuleb olla teadlik <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Content_Delivery_Network\">sisu edastamise v\u00f5rkudest<\/a><\/noindex> (CDN). CDN on globaalne jaotatud serverite v\u00f5rk, mis edastab teavet nendest s\u00f5lmedest, mis asuvad geograafiliselt l\u00e4hemal konkreetsele kasutajale. CDN-e on eelistatav kasutada, kui t\u00f6\u00f6tate staatiliste failidega, mis on kirjutatud JavaScriptis, CSS-is ja HTML-is. Lisaks on t\u00e4nap\u00e4eval levinud sellised pilveteenused, mille kaudu pakutakse liikluse haldurit, n\u00e4iteks <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>, tagades teile globaalne levik ja v\u00e4henenud latentsus d\u00fcnaamilise sisu kasutamisel. Siiski on sellised teenused tavaliselt kasulikud olukordades, kus tuleb t\u00f6\u00f6tada seisu s\u00e4ilitamata veebiteenustega. <\/p>\n<p><b>R\u00e4\u00e4gime \u00e4riloogikast. \u00c4ri loogika, \u00fclesandeloome ja komponentide struktuurimine.<\/b><\/p>\n<p>Nii oleme saanud arutada erinevaid s\u00fcsteemi infrastruktuuri aspekte. T\u00f5en\u00e4oliselt ei m\u00f5tle kasutaja isegi k\u00f5igile nendele teie s\u00fcsteemi elementidele ja, ausalt \u00f6eldes, ei muretse nende p\u00e4rast \u00fcldse. Kasutajat huvitab, kuidas on suhelda teie s\u00fcsteemiga, mida on v\u00f5imalik saavutada, kui tegutseda nii, ning kuidas s\u00fcsteem t\u00e4idab kasutaja k\u00e4ske, mida ja kuidas ta teeb kasutaja andmetega.<\/p>\n<p>Kuidas selgesti pealkirjast selgub, plaanisin selles artiklis r\u00e4\u00e4kida tarkvara arhitektuurist ja s\u00fcsteemide projekteerimisest. Seet\u00f5ttu ei kavatsenud ma kirjeldada tarkvarade projekteerimise mustreid, mis n\u00e4itavad, kuidas luuakse tarkvarakomponente. Kuid mida rohkem ma sellest m\u00f5tlen, seda enam tundub mulle, et piir tarkvarade projekteerimise mustrite ja arhitektuuriliste mustrite vahel on v\u00e4ga h\u00e4gune ja need kaks kontseptsiooni on tihedalt seotud. V\u00f5tame n\u00e4iteks <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/eaaDev\/EventSourcing.html\">s\u00fcndmuste registreerimise<\/a><\/noindex> (event sourcing). Kui hakkate seda arhitektuurilist mustrit rakendama, m\u00f5jutab see praktiliselt k\u00f5iki teie s\u00fcsteemi aspekte: andmete pikaajaline salvestamine, teie s\u00fcsteemis kehtiv konsistentsitase, komponentide kontuurid jne. Seet\u00f5ttu otsustasin mainida m\u00f5ningaid arhitektuurilisi mustreid, mis on otseselt seotud \u00e4riloogikaga. Isegi kui selles artiklis tuleb piirduda lihtsa loendiga, soovitan teil tutvuda sellega ja m\u00f5elda ideedele, mis on seotud nende mustritega. Siin on, palun:<\/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)\">SOLID p\u00f5him\u00f5tted<\/a><\/noindex> <\/li>\n<li>Kontseptsioonid <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\">Dom\u00e4\u00e4nip\u00f5hine projekteerimine<\/a><\/noindex>, eriti <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/ingeniouslysimple\/aggregates-in-domain-driven-design-5aab3ef9901d\">agregaadid<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/ingeniouslysimple\/command-vs-event-in-domain-driven-design-be6c45be52a9\">komplektid ja s\u00fcndmused<\/a><\/noindex> <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/267125\/\">Heksagonaalne arhitektuur<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/CQRS.html\">Vastutuse jagamine k\u00e4skudele ja p\u00e4ringutele (CQRS)<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/eaaDev\/EventSourcing.html\">S\u00fcndmuste registreerimine<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/doc.akka.io\/docs\/akka\/2.5\/guide\/actors-intro.html\">Aktori mudel<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/215605\/\">MVC, MVVM ja MVP projekteerimismustrid<\/a><\/noindex><\/li>\n<\/ul>\n<p>\n<b>Koost\u00f6\u00f6 l\u00e4henemisviisid<\/b><\/p>\n<p>On t\u00f5en\u00e4oliselt v\u00e4ga v\u00e4he t\u00f5en\u00e4oline, et te olete projektis see osaleja, kes \u00fcksi vastutab s\u00fcsteemi projekteerimise protsessi eest. Vastupidi, t\u00f5en\u00e4oliselt peate te suhtlema kolleegidega, kes t\u00f6\u00f6tavad nii teie \u00fclesande raames kui ka v\u00e4ljaspool seda. Sel juhul v\u00f5ib osutuda vajalikuks hinnata valitud tehnoloogilisi lahendusi koos kolleegidega, eristada \u00e4rilisi vajadusi ja m\u00f5ista, kuidas \u00fclesandeid paremini paralleelselt t\u00e4ita.<\/p>\n<p><img decoding=\"async\" alt=\"Tarkvaraarhitektuur ja s\u00fcsteemide projekteerimine: \u00fcldine \u00fclevaade ja ressursside juhend\" src=\"\/wp-content\/uploads\/2019\/07\/ad39e031dcac8e69fafb637603043bfb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Pilt <noindex><a rel=\"nofollow\" href=\"https:\/\/unsplash.com\/photos\/3V8xo5Gbusk?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Kaleidico<\/a><\/noindex> Unsplashi saidilt<\/i><\/p>\n<p>Esiteks on vajalik v\u00e4lja t\u00f6\u00f6tada t\u00e4pne ja \u00fcldiselt tunnustatud arusaam, milline on see \u00e4rieesm\u00e4rk, mida te \u00fcritate saavutada, ja milliste muutuvate elementidega te peate tegelema. R\u00fchmamudeldamise tehnikad, sealhulgas <noindex><a rel=\"nofollow\" href=\"https:\/\/techbeacon.com\/devops\/introduction-event-storming-easy-way-achieve-domain-driven-design\">s\u00fcndmuste tormamine<\/a><\/noindex> (event storming), aitavad seda protsessi oluliselt kiirendada ja suurendavad teie eduv\u00f5imalusi. Selle uurimisega saab tegeleda enne v\u00f5i p\u00e4rast seda, kui olete m\u00e4\u00e4ratlenud <noindex><a rel=\"nofollow\" href=\"https:\/\/www.infoq.com\/news\/2015\/02\/service-boundaries-healthcare\/\">teie teenuste piirid<\/a><\/noindex>, ja seej\u00e4rel s\u00fcvendada seda toote k\u00fcpsemise ajal. Tuginenud sellele \u00fchtse arusaamade tasemele, mida siin saavutatakse, saate ka s\u00f5nastada <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/UbiquitousLanguage.html\">\u00fchtse keele<\/a><\/noindex> selle piiratud konteksti jaoks, milles te t\u00f6\u00f6tate. Kui on vaja r\u00e4\u00e4kida teie s\u00fcsteemi arhitektuurist, v\u00f5ib teile kasulikuks osutuda <noindex><a rel=\"nofollow\" href=\"https:\/\/c4model.com\/\">C4 mudel<\/a><\/noindex>, mille pakkus v\u00e4lja <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/simonbrown\">Simon Brown<\/a><\/noindex>, eriti kui on vaja m\u00f5ista, kui palju peate problemaatika detailidesse s\u00fcvenema, visualiseerides asju, mida soovite edastada.<\/p>\n<p>T\u00f5en\u00e4oliselt leidub sellel teemal ka teisi k\u00fcpseid tehnoloogiaid, mis on sama kasulikud kui ainep\u00f5hine disain. Siiski, me naaseme, olgu kuidas on, aineala m\u00f5istmise juurde, seet\u00f5ttu reaalne teadmine ja kogemus <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\">ainep\u00f5hisest disainist<\/a><\/noindex> peaks teile kasuks tulema.<br \/>\n<br \/>Allikas: <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.1.1 - 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\/et\/blog\/administrirovanie\/programmnaya-arhitektura-i-proektirovanie-sistem-obshhaya-kartina-i-putevoditel-po-resursam\" \/>\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\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\/et\/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\udd47Tarkvaraarhitektuur ja s\u00fcsteemide projekteerimine: \u00fclevaade ning ressursijuhend | ProHoster","description":"Tere, kolleegid. T\u00e4na on teie ees t\u00f5lgitud artikkel Tugberk Ugurlu'lt, kes on p\u00fc\u00fcdnud suhteliselt l\u00fchidalt selgitada kaasaegse tarkvara projekteerimise p\u00f5him\u00f5tteid.","canonical_url":"https:\/\/prohoster.info\/et\/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":"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\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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/36518","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=36518"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/36518\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/27331"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=36518"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=36518"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=36518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}