{"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\/ro\/blog\/administrirovanie\/programmnaya-arhitektura-i-proektirovanie-sistem-obshhaya-kartina-i-putevoditel-po-resursam","title":{"rendered":"Arhitectura software \u0219i proiectarea sistemelor: imagine de ansamblu \u0219i ghid al resurselor","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Bun\u0103 ziua, colegi.<\/p>\n<p>Ast\u0103zi v\u0103 prezent\u0103m traducerea articolului lui Tugberk Ugurlu, care a \u00eencercat s\u0103 expun\u0103 \u00eentr-un volum relativ mic principiile de proiectare ale sistemelor software moderne. Iat\u0103 ce ne spune autorul despre sine \u00een termeni concisi:<\/p>\n<p><img decoding=\"async\" alt=\"Arhitectura software \u0219i proiectarea sistemelor: imagine de ansamblu \u0219i ghid al resurselor\" src=\"\/wp-content\/uploads\/2019\/07\/30de77ffad15171ce493ce5003c99360.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nFiind imposibil s\u0103 abord\u0103m \u00een detaliu o tem\u0103 at\u00e2t de vast\u0103 precum modele arhitecturale + modele de proiectare conform st\u0103rii din 2019, recomand\u0103m nu doar textul domnului Ugurlu, ci \u0219i numeroasele linkuri pe care acesta le-a inclus. Dac\u0103 v\u0103 place \u2013 vom publica \u0219i un text mai specializat despre proiectarea sistemelor distribuite.<\/p>\n<p><img decoding=\"async\" alt=\"Arhitectura software \u0219i proiectarea sistemelor: imagine de ansamblu \u0219i ghid al resurselor\" 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\">de Isaac Smith<\/a><\/noindex> de pe Unsplash<\/i><\/p>\n<p>Dac\u0103 nu a\u021bi avut niciodat\u0103 de-a face cu provoc\u0103ri precum proiectarea unui sistem software de la zero, atunci, atunci c\u00e2nd \u00eencepe\u021bi o astfel de munc\u0103, uneori nu este clar de unde s\u0103 \u00eencepe\u021bi. Consider c\u0103, mai \u00eent\u00e2i, trebuie s\u0103 contura\u021bi limitele, pentru a avea o idee mai clar\u0103 despre ce anume inten\u021biona\u021bi s\u0103 proiecta\u021bi, \u0219i apoi \u2013 s\u0103 v\u0103 apuca\u021bi de treab\u0103, f\u0103r\u0103 a dep\u0103\u0219i aceste limite. Ca punct de plecare, pute\u021bi lua un produs sau un serviciu (ideal, unul pe care \u00eel aprecia\u021bi foarte mult) \u0219i s\u0103 studia\u021bi implementarea acestuia. Este posibil s\u0103 fi\u021bi surprin\u0219i de c\u00e2t de simplu pare acest produs \u0219i de complexitatea imens\u0103 care se afl\u0103 \u00een spatele lui. Nu uita\u021bi: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=k9Zbuuo51go\">simplu \u2013 este de obicei complicat<\/a><\/noindex>, \u0219i asta este normal.<\/p>\n<p>Cred c\u0103 cel mai bun sfat pe care \u00eel pot oferi celor care \u00eencep s\u0103 proiecteze un sistem este acesta: nu face\u021bi niciun fel de presupuneri! De la bun \u00eenceput, trebuie s\u0103 clarifica\u021bi faptele cunoscute despre acest sistem \u0219i a\u0219tept\u0103rile legate de acesta. Iat\u0103 c\u00e2teva \u00eentreb\u0103ri bune, la care r\u0103spunsurile v\u0103 vor ajuta s\u0103 \u00eencepe\u021bi proiectarea:<\/p>\n<ul>\n<li>Care este problema pe care \u00eencerc\u0103m s\u0103 o rezolv\u0103m? <\/li>\n<li>Care este num\u0103rul maxim de utilizatori care vor interac\u021biona cu sistemul nostru?<\/li>\n<li>Ce modele de scriere \u0219i citire a datelor ne vor fi utilizate? <\/li>\n<li>Care sunt cazurile de defec\u021biune anticipate \u0219i cum ne propunem s\u0103 le gestion\u0103m?<\/li>\n<li>Ce a\u0219tept\u0103ri exist\u0103 \u00een ceea ce prive\u0219te consisten\u021ba \u0219i disponibilitatea sistemului? <\/li>\n<li>Trebuie s\u0103 \u021binem cont de cerin\u021bele legate de verificarea extern\u0103 \u0219i reglementare \u00een activitate?<\/li>\n<li>Ce tipuri de date confiden\u021biale inten\u021bion\u0103m s\u0103 stoc\u0103m?<\/li>\n<\/ul>\n<p>\nAcestea sunt doar c\u00e2teva \u00eentreb\u0103ri care mi-au fost utile at\u00e2t mie, c\u00e2t \u0219i echipelor \u00een care am avut ocazia s\u0103 colaborez de-a lungul carierei mele profesionale. Dac\u0103 cunoa\u0219te\u021bi r\u0103spunsurile la aceste \u00eentreb\u0103ri (\u0219i la orice altele relevante \u00een contextul \u00een care lucra\u021bi), pute\u021bi \u00eencepe s\u0103 aprofunda\u021bi detaliile tehnice ale sarcinii.<\/p>\n<p><b>Stabilim nivelul de baz\u0103<\/b><\/p>\n<p>Ce \u00een\u021beleg prin \u201enivel de baz\u0103\u201d? \u00cen zilele noastre, majoritatea problemelor din industria software-ului pot fi rezolvate folosind metode \u0219i tehnologii existente. A\u0219adar, navig\u00e2nd \u00een acest peisaj, beneficia\u021bi de un anumit avantaj, \u00eent\u00e2lnind sarcini care au fost rezolvate de al\u021bii \u00eenaintea dumneavoastr\u0103. S\u0103 nu uit\u0103m c\u0103 programele sunt scrise pentru a rezolva problemele afacerilor \u0219i utilizatorilor, de aceea ne str\u0103duim s\u0103 abord\u0103m sarcinile \u00eentr-un mod c\u00e2t mai direct \u0219i simplu (din perspectiva utilizatorului). De ce este important de re\u021binut acest lucru? Poate \u00een sistemul dumneavoastr\u0103 v\u0103 place s\u0103 c\u0103uta\u021bi solu\u021bii unice pentru fiecare problem\u0103, deoarece considera\u021bi c\u0103 \u201ecum a\u0219 fi eu programator dac\u0103 respect tiparele peste tot\u201d? De fapt, <b>arta const\u0103 \u00een a lua decizii despre unde \u0219i ce trebuie f\u0103cut<\/b>. Evident, tuturor ne apare din c\u00e2nd \u00een c\u00e2nd s\u0103 ne confrunt\u0103m cu probleme unice, fiecare fiind o adev\u0103rat\u0103 provocare. Totu\u0219i, dac\u0103 nivelul nostru de baz\u0103 este bine definit, \u0219tim pe ce s\u0103 ne concentr\u0103m: pe c\u0103utarea solu\u021biilor deja existente pentru sarcina \u00een fa\u021b\u0103 sau pe explorarea \u0219i \u00een\u021belegerea mai profund\u0103 a acesteia.<\/p>\n<p>Cred c\u0103 am reu\u0219it s\u0103 v\u0103 conving c\u0103, dac\u0103 un specialist \u00een\u021belege bine care sunt componentele arhitecturale ale unor sisteme software remarcabile, aceste cuno\u0219tin\u021be vor fi esen\u021biale pentru a st\u0103p\u00e2ni arta arhitectului \u0219i a dezvolta o baz\u0103 solid\u0103 \u00een acest domeniu.<\/p>\n<p>Bine, cu ce s\u0103 \u00eencepem? La <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\">Donna Martin<\/a><\/noindex> are un repository pe GitHub numit <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\">system-design-primer<\/a><\/noindex>, din materialele c\u0103ruia ve\u021bi putea \u00eenv\u0103\u021ba despre proiectarea sistemelor la scar\u0103 larg\u0103 \u0219i v\u0103 ve\u021bi preg\u0103ti pentru interviuri pe aceast\u0103 tem\u0103. \u00cen repository exist\u0103 o sec\u021biune cu exemple <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/tree\/1144b8ef4c441af73f7cbfd51f56b8eb62350a66#real-world-architectures\">de arhitecturi reale<\/a><\/noindex>, unde, \u00een special, este discutat modul \u00een care anumite companii bine cunoscute abordeaz\u0103 designul sistemelor lor <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/tree\/1144b8ef4c441af73f7cbfd51f56b8eb62350a66#company-architectures\">de exemplu, Twitter, Uber, etc.<\/a><\/noindex>. Cu toate acestea, \u00eenainte de a trece la acest material, haide\u021bi s\u0103 analiz\u0103m \u00een detaliu cele mai importante provoc\u0103ri arhitecturale cu care ne confrunt\u0103m \u00een practic\u0103. Acest lucru este important, deoarece trebuie s\u0103 definim O MUL\u021aIME de aspecte ale unei probleme complexe \u0219i multilaterale \u0219i apoi s\u0103 o rezolv\u0103m \u00een cadrul reglement\u0103rilor aplicabile \u00een acest sistem.<\/p>\n<p>Jackson Gabbard <noindex><a rel=\"nofollow\" href=\"https:\/\/jg.gg\/\">, fost angajat Facebook, a realizat<\/a><\/noindex>un video de 50 de minute despre interviuri axate pe proiectarea sistemelor <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=ZgdS0EUmn70\">, unde \u0219i-a \u00eemp\u0103rt\u0103\u0219it propria experien\u021b\u0103 \u00een evaluarea a sute de candida\u021bi. De\u0219i videoclipul se concentreaz\u0103 \u00een mod clar pe proiectarea sistemelor mari \u0219i pe criteriile de succes importante \u00een c\u0103utarea unui astfel de candidat, acesta va servi, totu\u0219i, ca un resurs\u0103 cuprinz\u0103toare despre lucrurile cele mai importante \u00een proiectarea sistemelor. De asemenea, v\u0103 propun<\/a><\/noindex>un rezumat <noindex><a rel=\"nofollow\" href=\"https:\/\/jg.gg\/2016\/07\/31\/architecture-and-systems-design-interview\/\">al acestui videoclip.<\/a><\/noindex> Dezvolta\u021bi cuno\u0219tin\u021be despre stocarea \u0219i extragerea datelor<\/p>\n<p><b>\u00cen general, decizia dumneavoastr\u0103 cu privire la modul \u00een care ve\u021bi stoca pe termen lung \u0219i extrage datele dvs. are un impact critic asupra performan\u021bei sistemului. Prin urmare, trebuie s\u0103 \u00een\u021belege\u021bi mai \u00eent\u00e2i caracteristicile a\u0219teptate ale scrierii \u0219i citirii datelor \u00een sistemul dumneavoastr\u0103. Apoi trebuie s\u0103 fi\u021bi capabil s\u0103 evalua\u021bi aceste indicatori \u0219i s\u0103 lua\u021bi decizii bazate pe evalu\u0103rile realizate. Cu toate acestea, pute\u021bi face fa\u021b\u0103 eficient acestei sarcini doar dac\u0103 \u00een\u021belege\u021bi tiparele existente de stocare a datelor. \u00cen principiu, acest lucru implic\u0103 cuno\u0219tin\u021be ferme legate de<\/b> <\/p>\n<p>selectarea bazei de date <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#database\">Baze de date pot fi considerate structuri de date cu o scalabilitate \u0219i durabilitate excep\u021bionale. Prin urmare, cunoa\u0219terea structurilor de date ar trebui s\u0103 v\u0103 fie foarte folositoare \u0219i \u00een alegerea unei baze de date sau alteia. De exemplu,<\/a><\/noindex>. <\/p>\n<p>Redis <noindex><a rel=\"nofollow\" href=\"https:\/\/redis.io\/topics\/data-types-intro\">Redis<\/a><\/noindex> \u2013 este un server de structuri de date care suport\u0103 diferite tipuri de valori. Permite lucrul cu structuri de date precum liste \u0219i mul\u021bimi, citind datele folosind algoritmi bine cunoscu\u021bi, de exemplu, <noindex><a rel=\"nofollow\" href=\"https:\/\/redis.io\/topics\/lru-cache\">LRU<\/a><\/noindex>, organiz\u00e2nd aceast\u0103 activitate \u00eentr-un mod durabil \u0219i cu accesibilitate ridicat\u0103. <\/p>\n<p><img decoding=\"async\" alt=\"Arhitectura software \u0219i proiectarea sistemelor: imagine de ansamblu \u0219i ghid al resurselor\" 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> de pe Unsplash<\/i><\/p>\n<p>C\u00e2nd te-ai familiarizat suficient cu diferitele modele de stocare a datelor \u2013 po\u021bi trece la studiul coeren\u021bei \u0219i disponibilit\u0103\u021bii datelor. \u00cen primul r\u00e2nd, va trebui s\u0103 \u00eenve\u021bi <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#cap-theorem\">teorema CAP<\/a><\/noindex> cel pu\u021bin \u00een linii mari \u0219i apoi s\u0103 \u00ee\u021bi perfec\u021bionezi aceste cuno\u0219tin\u021be, analiz\u00e2nd \u00een detaliu modelele consacrate de <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#consistency-patterns\">coeren\u021b\u0103<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#availability-patterns\">disponibilitate<\/a><\/noindex>. Astfel, \u00ee\u021bi vei l\u0103rgi orizonturile \u00een acest domeniu \u0219i vei \u00een\u021belege c\u0103 citirea \u0219i scrierea datelor sunt, de fapt, dou\u0103 probleme foarte diferite, fiecare av\u00e2nd propriile provoc\u0103ri specifice. Dotat cu c\u00e2teva modele de asigurare a coeren\u021bei \u0219i disponibilit\u0103\u021bii, vei putea s\u0103 \u00ee\u021bi cre\u0219ti semnificativ performan\u021ba sistemului, garant\u00e2nd \u00een acela\u0219i timp un flux ne\u00eentrerupt de date c\u0103tre aplica\u021biile tale.<\/p>\n<p>\u00cen final, \u00eencheind discu\u021bia despre problemele stoc\u0103rii datelor, ar fi bine s\u0103 men\u021bion\u0103m \u0219i despre caching. Ar trebui s\u0103 se efectueze simultan at\u00e2t pe client, c\u00e2t \u0219i pe server? Ce date vor fi p\u0103strate \u00een cache? \u0218i de ce? Cum \u00ee\u021bi vei organiza invalidarea cache-ului? Se va face aceasta \u00een mod regulat, la intervale de timp determinate? Dac\u0103 da, c\u00e2t de des? \u00ce\u021bi recomand s\u0103 abordezi aceste teme \u00eencep\u00e2nd cu <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#cache\">urm\u0103toarea sec\u021biune<\/a><\/noindex> a men\u021bionatului ghid pentru proiectarea sistemelor. <\/p>\n<p><b>Modelele de comunica\u021bie<\/b><\/p>\n<p>Sistemele sunt compuse din diferite componente; acestea pot fi fie procese diferite, care func\u021bioneaz\u0103 \u00een acela\u0219i nod fizic, fie ma\u0219ini diferite, care ac\u021bioneaz\u0103 \u00een p\u0103r\u021bi diferite ale re\u021belei tale. Unele dintre aceste resurse din cadrul re\u021belei tale pot fi private, dar altele trebuie s\u0103 fie publice \u0219i accesibile consumatorilor care se conecteaz\u0103 la ele din exterior.<\/p>\n<p>Este necesar s\u0103 se asigure comunicarea \u00eentre aceste resurse \u0219i, de asemenea, schimbul de informa\u021bii \u00eentre \u00eentregul sistem \u0219i lumea exterioar\u0103. \u00cen contextul proiect\u0103rii sistemelor, aici ne confrunt\u0103m din nou cu un set de noi provoc\u0103ri unice. S\u0103 analiz\u0103m \u00een ce m\u0103sur\u0103 sunt utile <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#asynchronism\">fluxurile de sarcini asincrone<\/a><\/noindex>, \u0219i care sunt r<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#communication\">modele diverse de comunicare sunt disponibile<\/a><\/noindex>. <\/p>\n<p><img decoding=\"async\" alt=\"Arhitectura software \u0219i proiectarea sistemelor: imagine de ansamblu \u0219i ghid al resurselor\" 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> de pe Unsplash<\/i><\/p>\n<p>Atunci c\u00e2nd se organizeaz\u0103 comunicarea cu lumea exterioar\u0103, este \u00eentotdeauna foarte important <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#security\">securitate<\/a><\/noindex>, la asigurarea c\u0103reia trebuie de asemenea s\u0103 ne apropiem cu seriozitate \u0219i s\u0103 ne ocup\u0103m activ. <\/p>\n<p><b>Distribuirea conexiunilor<\/b><\/p>\n<p>Nu sunt sigur c\u0103 desprinderea acestui subiect \u00eentr-o sec\u021biune separat\u0103 va p\u0103rea justificat\u0103 de to\u021bi. Cu toate acestea, voi expune detaliat acest concept aici, \u0219i consider c\u0103 materialul acestei sec\u021biuni este cel mai bine descris prin termenul \u201edistribuire a conexiunilor\u201d (connection distribution).<\/p>\n<p>Sistemele sunt formate prin conectarea corect\u0103 a numeroaselor componente, iar comunicarea acestora este adesea organizat\u0103 pe baza protocoalelor stabilite, cum ar fi TCP \u0219i UDP. Cu toate acestea, aceste protocoale, \u00een sine, adesea nu sunt suficiente pentru a satisface toate nevoile sistemelor moderne, care sunt adesea supuse unor sarcini ridicate \u0219i depind semnificativ de nevoile utilizatorilor. Adesea este necesar s\u0103 se g\u0103seasc\u0103 modalit\u0103\u021bi de distribuire a conexiunilor pentru a face fa\u021b\u0103 acestor sarcini mari \u00een sistem.<\/p>\n<p>La baza acestei distribuiri se afl\u0103 un sistem bine cunoscut <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DNS\">sistemul de nume de domenii<\/a><\/noindex> (DNS). Acest sistem permite transformarea unui nume de domeniu, de exemplu, algoritmul ciclic ponderat (weighted round robin) \u0219i metodele bazate pe \u00eent\u00e2rzieri, care ajut\u0103 la distribuirea sarcinii. <\/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\">\u00cenc\u0103rcarea echilibrat\u0103<\/a><\/noindex> este esen\u021bial\u0103, \u0219i practic orice sistem mare de pe internet cu care avem de-a face ast\u0103zi se afl\u0103 \u00een spatele unuia sau mai multor echilibratoare de \u00eenc\u0103rcare. Echilibratoarele de sarcin\u0103 ajut\u0103 la distribuirea cererilor clien\u021bilor \u00eentre numeroase instan\u021be disponibile. Echilibratoarele de sarcin\u0103 pot fi at\u00e2t hardware, c\u00e2t \u0219i software, \u00eens\u0103, \u00een practic\u0103, mai des avem de-a face cu cele software, cum ar fi <noindex><a rel=\"nofollow\" href=\"http:\/\/www.haproxy.org\/\">HAProxy<\/a><\/noindex> \u0219i <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\">Serverele proxy inverse<\/a><\/noindex> sunt conceptual de asemenea foarte asem\u0103n\u0103toare cu echilibratoarele de \u00eenc\u0103rcare, de\u0219i \u00eentre primele \u0219i celelalte exist\u0103 o serie de <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer#load-balancer-vs-reverse-proxy\">diferen\u021be distincte<\/a><\/noindex>. Aceste diferen\u021be trebuie luate \u00een considerare atunci c\u00e2nd se proiecteaz\u0103 un sistem care s\u0103 r\u0103spund\u0103 nevoilor tale.<\/p>\n<p>De asemenea, este important s\u0103 se \u0219tie despre <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Content_Delivery_Network\">re\u021belele de livrare a con\u021binutului<\/a><\/noindex> (CDN). CDN este o re\u021bea global\u0103 distribuit\u0103 de servere proxy care livreaz\u0103 informa\u021bii din nodurile care sunt geografic mai aproape de un utilizator specific. Re\u021belele CDN sunt preferabile atunci c\u00e2nd lucra\u021bi cu fi\u0219iere statice scrise \u00een JavaScript, CSS \u0219i HTML. \u00cen plus, serviciile cloud care ofer\u0103 gestionare a traficului, precum <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>, asigur\u00e2ndu-v\u0103 distribu\u021bie global\u0103 \u0219i laten\u021be reduse \u00een lucrul cu con\u021binut dinamic. Totu\u0219i, astfel de servicii sunt de obicei utile \u00een cazurile \u00een care lucra\u021bi cu servicii web f\u0103r\u0103 p\u0103strarea st\u0103rii. <\/p>\n<p><b>S\u0103 discut\u0103m despre logica de afaceri. Structurarea logicei de afaceri, fluxurilor de sarcini \u0219i componentelor<\/b><\/p>\n<p>Deci, am reu\u0219it s\u0103 discut\u0103m despre diversele aspecte infrastructurale ale sistemului. Cel mai probabil, utilizatorul nici nu se g\u00e2nde\u0219te la toate aceste elemente ale sistemului dumneavoastr\u0103 \u0219i, sincer, nu \u00eei pas\u0103 deloc de acestea. Ce-l intereseaz\u0103 pe utilizator este cum interac\u021bioneaz\u0103 cu sistemul dumneavoastr\u0103, ce poate realiza ac\u021bion\u00e2nd \u00een acest fel, precum \u0219i cum execut\u0103 sistemul comenzile utilizatorului, ce face \u0219i cum prelucreaz\u0103 datele utilizatorului.<\/p>\n<p>Dup\u0103 cum este evident din titlul acestui articol, inten\u021bionam s\u0103 discut despre arhitectura software-ului \u0219i proiectarea sistemelor. Prin urmare, nu planificam s\u0103 acop\u0103r modelele de proiectare software care descriu cum se creeaz\u0103 componentele software. Totu\u0219i, cu c\u00e2t mai mult reflectez asupra acestui subiect, cu at\u00e2t mai mult \u00eemi dau seama c\u0103 grani\u021ba dintre modelele de proiectare software \u0219i modelele arhitecturale este foarte neclar\u0103, iar cele dou\u0103 concepte sunt str\u00e2ns legate. S\u0103 lu\u0103m, de exemplu, <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/eaaDev\/EventSourcing.html\">\u00eenregistrarea evenimentelor<\/a><\/noindex> (event sourcing). Odat\u0103 ce a\u021bi adoptat acest model arhitectural - va influen\u021ba practic toate aspectele sistemului dumneavoastr\u0103: stocarea pe termen lung a datelor, nivelul de consisten\u021b\u0103 acceptat \u00een sistemul dumneavoastr\u0103, contururile componentelor din acesta etc. De aceea, am decis s\u0103 men\u021bionez c\u00e2teva modele arhitecturale care se refer\u0103 direct la logica de afaceri. Chiar dac\u0103 \u00een acest articol voi trebui s\u0103 m\u0103 limitez la o simpl\u0103 list\u0103, v\u0103 recomand s\u0103 v\u0103 familiariza\u021bi cu ea \u0219i s\u0103 reflecta\u021bi asupra ideilor legate de aceste modele. Iat\u0103, v\u0103 rog:<\/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)\">Principiile SOLID<\/a><\/noindex> <\/li>\n<li>Concep\u021bii <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\">Proiectarea orientat\u0103 pe obiecte<\/a><\/noindex>, \u00een special, <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/ingeniouslysimple\/aggregates-in-domain-driven-design-5aab3ef9901d\">agregate<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/ingeniouslysimple\/command-vs-event-in-domain-driven-design-be6c45be52a9\">echipe \u0219i evenimente<\/a><\/noindex> <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/267125\/\">Arhitectura hexagonal\u0103<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/CQRS.html\">Separarea responsabilit\u0103\u021bilor \u00eentre echipe \u0219i comenzi (CQRS)<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/eaaDev\/EventSourcing.html\">\u00cenregistrarea evenimentelor<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/doc.akka.io\/docs\/akka\/2.5\/guide\/actors-intro.html\">Modelul actorului<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/215605\/\">\u0218abloanele de design MVC, MVVM \u0219i MVP<\/a><\/noindex><\/li>\n<\/ul>\n<p>\n<b>Abord\u0103ri colaborative<\/b><\/p>\n<p>Este extrem de pu\u021bin probabil s\u0103 fi\u021bi acel participant al proiectului care r\u0103spunde exclusiv de procesul de proiectare a sistemului. Dimpotriv\u0103, este mai probabil s\u0103 interac\u021biona\u021bi cu colegii, at\u00e2t \u00een cadrul sarcinii dumneavoastr\u0103, c\u00e2t \u0219i \u00een afara sa. \u00cen acest caz, va trebui s\u0103 evalua\u021bi solu\u021biile tehnologice alese \u00eempreun\u0103 cu colegii, s\u0103 identifica\u021bi nevoile de afaceri \u0219i s\u0103 \u00een\u021belege\u021bi cum s\u0103 desf\u0103\u0219ura\u021bi cel mai bine sarcinile.<\/p>\n<p><img decoding=\"async\" alt=\"Arhitectura software \u0219i proiectarea sistemelor: imagine de ansamblu \u0219i ghid al resurselor\" 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> de pe Unsplash<\/i><\/p>\n<p>\u00cen primul r\u00e2nd, este necesar s\u0103 dezvolta\u021bi o viziune clar\u0103 \u0219i acceptat\u0103 \u00een mod comun asupra obiectivului de afaceri pe care \u00eencerca\u021bi s\u0103-l atinge\u021bi \u0219i asupra aspectelor \u00een mi\u0219care cu care va trebui s\u0103 lucra\u021bi. Tehnici de modelare \u00een grup, \u00een special, <noindex><a rel=\"nofollow\" href=\"https:\/\/techbeacon.com\/devops\/introduction-event-storming-easy-way-achieve-domain-driven-design\">brainstorming de evenimente<\/a><\/noindex> (event storming) ajut\u0103 semnificativ la accelerarea acestui proces \u0219i v\u0103 \u00eembun\u0103t\u0103\u021besc \u0219ansele de succes. Aceast\u0103 activitate poate fi realizat\u0103 \u00eenainte sau dup\u0103 ce a\u021bi conturat <noindex><a rel=\"nofollow\" href=\"https:\/\/www.infoq.com\/news\/2015\/02\/service-boundaries-healthcare\/\">limitele serviciilor dumneavoastr\u0103<\/a><\/noindex>, \u0219i apoi s\u0103 le \u00eembun\u0103t\u0103\u021bi\u021bi pe m\u0103sur\u0103 ce produsul se dezvolt\u0103. Baz\u00e2ndu-v\u0103 pe nivelul de consens care va fi atins aici, pute\u021bi formula <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/UbiquitousLanguage.html\">un limbaj comun<\/a><\/noindex> pentru acel context restr\u00e2ns \u00een care lucra\u021bi. C\u00e2nd va fi necesar s\u0103 discuta\u021bi despre arhitectura sistemului dumneavoastr\u0103, modelul C4 <noindex><a rel=\"nofollow\" href=\"https:\/\/c4model.com\/\">, propus de<\/a><\/noindex>Simon Brown <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/simonbrown\">, este deosebit de util, mai ales c\u00e2nd trebuie s\u0103 \u00een\u021belege\u021bi c\u00e2t de mult trebuie s\u0103 v\u0103 aprofunda\u021bi \u00een detalii, vizualiz\u00e2nd lucrurile pe care dori\u021bi s\u0103 le comunica\u021bi.<\/a><\/noindex>Probabil c\u0103 \u00een aceast\u0103 zon\u0103 exist\u0103 \u0219i alte tehnologii mature, la fel de utile ca \u0219i proiectarea orientat\u0103 pe obiecte. Totu\u0219i, revenim la \u00een\u021belegerea domeniului, astfel c\u0103 cuno\u0219tin\u021bele \u0219i experien\u021ba \u00een domeniul<\/p>\n<p>proiect\u0103rii orientate pe obiecte <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\">v\u0103 vor fi de folos.<\/a><\/noindex> Lansarea bibliotecii multimedia SDL 2.0.10<br \/>\n<br \/>Sursa: <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.2.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\/ro\/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.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\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\/ro\/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\udd47 Arhitectura software \u0219i proiectarea sistemelor: o imagine de ansamblu \u0219i un ghid al resurselor | ProHoster","description":"Bun\u0103 ziua, colegi. Ast\u0103zi v\u0103 prezent\u0103m traducerea articolului lui Tugberk Ugurlu, care \u0219i-a propus s\u0103 expun\u0103, \u00eentr-un volum relativ mic, principiile de proiectare a software-ului modern.","canonical_url":"https:\/\/prohoster.info\/ro\/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":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/36518","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=36518"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/36518\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/27331"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=36518"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=36518"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=36518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}