{"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\/it\/blog\/administrirovanie\/programmnaya-arhitektura-i-proektirovanie-sistem-obshhaya-kartina-i-putevoditel-po-resursam","title":{"rendered":"Architettura software e progettazione dei sistemi: panoramica generale e guida alle risorse","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ciao, colleghi.<\/p>\n<p>Oggi vi presentiamo la traduzione dell'articolo di Tugberk Ugurlu, che si \u00e8 sforzato di esporre in modo relativamente conciso i principi di progettazione dei moderni sistemi software. Ecco cosa l'autore dice di s\u00e9 in sintesi:<\/p>\n<p><img decoding=\"async\" alt=\"Architettura software e progettazione dei sistemi: panoramica generale e guida alle risorse\" src=\"\/wp-content\/uploads\/2019\/07\/30de77ffad15171ce493ce5003c99360.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nPoich\u00e9 \u00e8 assolutamente impossibile affrontare in un breve articolo un tema cos\u00ec colossale come i pattern architetturali e i pattern di progettazione aggiornati al 2019, consigliamo non solo il testo del signor Ugurlu, ma anche i numerosi riferimenti che ha gentilmente incluso. Se vi piacer\u00e0, pubblicheremo anche un testo pi\u00f9 specializzato sulla progettazione di sistemi distribuiti.<\/p>\n<p><img decoding=\"async\" alt=\"Architettura software e progettazione dei sistemi: panoramica generale e guida alle risorse\" 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>Immagine <noindex><a rel=\"nofollow\" href=\"https:\/\/unsplash.com\/photos\/6EnTPvPPL6I?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">di Isaac Smith<\/a><\/noindex> da Unsplash<\/i><\/p>\n<p>Se non hai mai affrontato sfide come la progettazione di un sistema software da zero, all'inizio di un lavoro del genere pu\u00f2 essere difficile sapere da dove cominciare. Credo sia fondamentale delineare i confini, in modo da avere una certa sicurezza su cosa stai per progettare, per poi rimboccarti le maniche e lavorare senza oltrepassare questi confini. Un buon punto di partenza pu\u00f2 essere un prodotto o un servizio (idealmente uno che ti piace molto) e analizzarne l'implementazione. Potresti sorprenderti di quanto possa sembrare semplice quel prodotto e di quanta complessit\u00e0 si nasconda realmente al suo interno. Non dimenticare: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=k9Zbuuo51go\">il semplice \u00e8 spesso complesso<\/a><\/noindex>, e va bene cos\u00ec.<\/p>\n<p>Penso che il miglior consiglio che posso dare a chi inizia a progettare un sistema sia: non fare assunzioni! Fin dall'inizio \u00e8 importante specificare i fatti noti su questo sistema e le aspettative ad esso correlate. Ecco alcune buone domande alle quali le risposte ti aiuteranno a iniziare la progettazione:<\/p>\n<ul>\n<li>Qual \u00e8 il problema che stiamo cercando di risolvere? <\/li>\n<li>Qual \u00e8 il numero massimo di utenti che interagiranno con il nostro sistema?<\/li>\n<li>Quali pattern di scrittura e lettura dei dati utilizzeremo? <\/li>\n<li>Quali sono i casi previsti di fallimento e come intendiamo gestirli?<\/li>\n<li>Quali aspettative ci sono riguardo alla coerenza e disponibilit\u00e0 del sistema? <\/li>\n<li>Dobbiamo considerare eventuali requisiti relativi a controlli esterni e regolamentazione?<\/li>\n<li>Quali tipi di dati sensibili intendiamo conservare?<\/li>\n<\/ul>\n<p>\nQueste sono solo alcune domande che sono state utili sia a me che ai team con cui ho collaborato nel corso degli anni. Se conosci le risposte a queste domande (e a qualsiasi altra nella tua situazione lavorativa), possiamo iniziare a entrare nei dettagli tecnici del compito.<\/p>\n<p><b>Impostiamo il livello iniziale<\/b><\/p>\n<p>Cosa intendo qui con \"livello di base\" (baseline)? Oggi, la maggior parte dei problemi nell'industria del software pu\u00f2 essere \"risolta\" utilizzando metodi e tecnologie gi\u00e0 esistenti. Pertanto, orientandosi in questo panorama, si ottiene un certo vantaggio quando si affrontano compiti che qualcun altro ha risolto prima di voi. Non dimentichiamo che i programmi vengono scritti per risolvere problemi di business e degli utenti; per questo motivo, cerchiamo di affrontare la questione nel modo pi\u00f9 diretto e semplice possibile (dal punto di vista dell'utente). Perch\u00e9 \u00e8 importante ricordarlo? Forse nel vostro sistema di coordinate preferite trovare soluzioni uniche per ogni problema, poich\u00e9 pensate: \"Che tipo di programmatore sarei se seguissi sempre i modelli\"? In realt\u00e0, <b>l'arte qui consiste nel prendere decisioni su dove e cosa fare.<\/b>. Naturalmente, a tutti noi capita di affrontare problemi unici di tanto in tanto, ognuno dei quali rappresenta una vera sfida. Tuttavia, se il nostro punto di partenza \u00e8 ben definito, sappiamo su cosa investire le nostre energie: nella ricerca di soluzioni pronte per il compito assegnato, oppure nella sua ulteriore esplorazione e comprensione pi\u00f9 profonda.<\/p>\n<p>Credo di avervi convinto che, se uno specialista comprende in modo chiaro quali siano le componenti architettoniche di alcuni straordinari sistemi software, queste conoscenze saranno indispensabili per padroneggiare l'arte dell'architetto e costruire una solida base in questo campo.<\/p>\n<p>Bene, da dove iniziare? A <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\">Donna Martin<\/a><\/noindex> ha un repository su GitHub chiamato <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\">system-design-primer<\/a><\/noindex>, da cui potrai apprendere come progettare sistemi su larga scala e prepararti per interviste su questo tema. Nel repository c'\u00e8 una sezione con esempi di <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/tree\/1144b8ef4c441af73f7cbfd51f56b8eb62350a66#real-world-architectures\">architetture reali<\/a><\/noindex>, che discutono, tra l'altro, come alcune aziende ben note affrontano il design dei loro sistemi <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/tree\/1144b8ef4c441af73f7cbfd51f56b8eb62350a66#company-architectures\">, come Twitter, Uber, ecc.<\/a><\/noindex>, ad esempio, Twitter, Uber, ecc.<\/p>\n<p>Tuttavia, prima di passare a questo materiale, analizziamo pi\u00f9 a fondo le sfide architettoniche pi\u00f9 importanti che si devono affrontare nella pratica. Questo \u00e8 cruciale, poich\u00e9 \u00e8 necessario specificare molteplici aspetti di un problema complesso e multiforme e quindi affrontarlo nel contesto della regolamentazione vigente in questo sistema. <noindex><a rel=\"nofollow\" href=\"https:\/\/jg.gg\/\">Jackson Gabbard<\/a><\/noindex>, ex dipendente di Facebook, ha registrato <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=ZgdS0EUmn70\">un video di 50 minuti sulle interviste relative alla progettazione di sistemi<\/a><\/noindex>, dove ha condiviso la sua esperienza dopo aver esaminato centinaia di candidati. Sebbene il video si concentri specificamente sulla progettazione di grandi sistemi e sui criteri di successo importanti durante la selezione di un candidato per tale posizione, sar\u00e0 comunque una risorsa esaustiva su quali aspetti siano pi\u00f9 rilevanti nella progettazione dei sistemi. Propongo anche <noindex><a rel=\"nofollow\" href=\"https:\/\/jg.gg\/2016\/07\/31\/architecture-and-systems-design-interview\/\">un riepilogo<\/a><\/noindex> di questo video.<\/p>\n<p><b>Acquisisci conoscenze su archiviazione e recupero dei dati<\/b> <\/p>\n<p>In generale, la tua decisione su come archiviare e gestire i dati a lungo termine influisce in modo critico sulle prestazioni del sistema. Di conseguenza, devi prima comprendere le caratteristiche attese di scrittura e lettura dei dati nel tuo sistema. Poi, \u00e8 necessario essere in grado di valutare questi parametri e prendere decisioni in base alle valutazioni effettuate. Tuttavia, potrai affrontare efficacemente questo compito solo se comprendi i modelli esistenti di archiviazione dei dati. Questo implica, in linea di principio, una solida conoscenza riguardante <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#database\">la scelta del database<\/a><\/noindex>. <\/p>\n<p>I database possono essere considerati strutture dati caratterizzate da un'eccezionale scalabilit\u00e0 e longevit\u00e0. Pertanto, la conoscenza delle strutture dati ti sar\u00e0 molto utile anche nella scelta di un database specifico. Ad esempio, <noindex><a rel=\"nofollow\" href=\"https:\/\/redis.io\/topics\/data-types-intro\">Redis<\/a><\/noindex> \u00e8 un server di strutture dati che supporta vari tipi di valori. Consente di lavorare con strutture dati come liste e insiemi, e di leggere i dati utilizzando algoritmi noti come <noindex><a rel=\"nofollow\" href=\"https:\/\/redis.io\/topics\/lru-cache\">LRU<\/a><\/noindex>, organizzando tale lavoro in uno stile duraturo e altamente disponibile. <\/p>\n<p><img decoding=\"async\" alt=\"Architettura software e progettazione dei sistemi: panoramica generale e guida alle risorse\" src=\"\/wp-content\/uploads\/2019\/07\/8e30da0e8edd592609466f3c6c6f66d1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Immagine <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> da Unsplash<\/i><\/p>\n<p>Quando avrete una buona comprensione dei vari modelli di archiviazione dei dati, potrete passare a studiare la coerenza e la disponibilit\u00e0 dei dati. Per prima cosa, dovrete apprendere <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#cap-theorem\">il teorema CAP<\/a><\/noindex> almeno a grandi linee, e poi affinare queste conoscenze esaminando pi\u00f9 dettagliatamente i modelli consolidati di <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#consistency-patterns\">coerenza<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#availability-patterns\">disponibilit\u00e0<\/a><\/noindex>. In questo modo, svilupperete una visione pi\u00f9 ampia di questo campo e capirete che la lettura e la scrittura dei dati sono in realt\u00e0 due problemi molto diversi, ciascuno con le sue sfide specifiche. Armati di diversi modelli per garantire la coerenza e la disponibilit\u00e0, sarete in grado di aumentare significativamente le prestazioni del sistema, garantendo nel contempo un'alimentazione continua dei dati alle vostre applicazioni.<\/p>\n<p>Infine, concludendo il discorso sulle questioni relative alla memorizzazione dei dati, \u00e8 importante menzionare anche la memorizzazione nella cache. Dovrebbe essere eseguita simultaneamente sul client e sul server? Quali dati saranno memorizzati nella cache? E perch\u00e9? Come organizzate l'invalidazione della cache? Avverr\u00e0 regolarmente, a intervalli di tempo definiti? Se s\u00ec, con quale frequenza? Suggerisco di iniziare a approfondire questi temi con <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#cache\">la seguente sezione<\/a><\/noindex> del suddetto manuale sulla progettazione dei sistemi. <\/p>\n<p><b>Modelli di comunicazione<\/b><\/p>\n<p>I sistemi sono composti da vari componenti; possono essere vari processi che operano all'interno dello stesso nodo fisico, oppure diverse macchine che agiscono in parti diverse della vostra rete. Alcune di queste risorse all'interno della vostra rete possono essere private, ma altre devono essere pubbliche e accessibili ai consumatori che vi accedono dall'esterno.<\/p>\n<p>\u00c8 necessario garantire la comunicazione tra queste risorse e lo scambio di informazioni all'interno del sistema e con il mondo esterno. Nel contesto della progettazione dei sistemi, ci troviamo ad affrontare un insieme di nuove sfide uniche. Vediamo come possono essere utili <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#asynchronism\">flussi di lavoro asincroni<\/a><\/noindex>, e quali<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#communication\">diversi modelli di comunicazione sono disponibili<\/a><\/noindex>. <\/p>\n<p><img decoding=\"async\" alt=\"Architettura software e progettazione dei sistemi: panoramica generale e guida alle risorse\" src=\"\/wp-content\/uploads\/2019\/07\/e4dc98256b755acf931097d218f8b0dd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Immagine <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> da Unsplash<\/i><\/p>\n<p>Quando si organizza la comunicazione con il mondo esterno, \u00e8 sempre molto importante <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#security\">sicurezza<\/a><\/noindex>, a cui bisogna avvicinarsi con tutta seriet\u00e0 e a cui dedicarsi attivamente. <\/p>\n<p><b>Distribuzione delle connessioni<\/b><\/p>\n<p>Non sono sicuro che trattare questo argomento in una sezione separata sembri giustificato a tutti. Tuttavia, esplicher\u00f2 qui questa concezione, ritenendo che il materiale di questa sezione sia meglio descritto dal termine \"distribuzione delle connessioni\".<\/p>\n<p>I sistemi sono costituiti dalla corretta combinazione di numerosi componenti, e la loro comunicazione reciproca \u00e8 spesso organizzata sulla base di protocolli consolidati, come TCP e UDP. Tuttavia, questi protocolli da soli non sono sempre sufficienti per soddisfare tutte le esigenze dei sistemi moderni, che spesso operano sotto elevato carico e dipendono fortemente dalle necessit\u00e0 degli utenti. \u00c8 frequentemente necessario trovare modalit\u00e0 di distribuzione delle connessioni per gestire tali carichi elevati nel sistema.<\/p>\n<p>Alla base di tale distribuzione si trova un <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DNS\">sistema di nomi di dominio<\/a><\/noindex> (DNS). Questo sistema consente di trasformare il nome di dominio, utilizzando ad esempio algoritmi di round robin ponderato e metodi basati sui tempi di attesa, per aiutare a distribuire il carico. <\/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\">Bilanciamento del carico<\/a><\/noindex> \u00e8 fondamentale e praticamente qualsiasi grande sistema su Internet con cui ci troviamo a dover interagire si trova dietro uno o pi\u00f9 bilanciatori di carico. I bilanciatori di carico aiutano a distribuire le richieste dei clienti su molteplici istanze disponibili. I bilanciatori di carico possono essere sia hardware che software, tuttavia, nella pratica, ci si trova pi\u00f9 spesso ad affrontare quelli software, ad esempio con <noindex><a rel=\"nofollow\" href=\"http:\/\/www.haproxy.org\/\">HAProxy<\/a><\/noindex> e <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\">Proxy inversi<\/a><\/noindex> sono concettualmente molto simili ai bilanciatori di carico, anche se tra i due ci sono una serie di <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer#load-balancer-vs-reverse-proxy\">differenze nette<\/a><\/noindex>. Queste differenze devono essere prese in considerazione quando si progetta un sistema in base alle proprie esigenze.<\/p>\n<p>\u00c8 anche importante essere a conoscenza di <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Content_Delivery_Network\">reti di distribuzione dei contenuti<\/a><\/noindex> (CDN). CDN \u2013 \u00e8 una rete globale distribuita di server proxy che fornisce informazioni dai nodi che sono geograficamente pi\u00f9 vicini a un utente specifico. \u00c8 preferibile utilizzare le reti CDN se si lavora con file statici scritti in JavaScript, CSS e HTML. Inoltre, oggi sono comuni servizi cloud che forniscono gestori di traffico, come <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>, che offrono distribuzione globale e minori ritardi nella gestione dei contenuti dinamici. Tuttavia, questi servizi sono generalmente utili nei casi in cui si lavora con servizi web senza stato. <\/p>\n<p><b>Parliamo della logica commerciale. Strutturare la logica commerciale, i flussi di lavoro e i componenti<\/b><\/p>\n<p>Quindi, abbiamo avuto l'opportunit\u00e0 di discutere vari aspetti infrastrutturali del sistema. \u00c8 probabile che l'utente non si preoccupi di tutti questi elementi del tuo sistema e, sinceramente, non ci pensi nemmeno. Ci\u00f2 che interessa all'utente \u00e8 come interagire con il tuo sistema, quali risultati pu\u00f2 ottenere agendo in un certo modo e come il sistema esegue i comandi degli utenti e gestisce i dati degli utenti.<\/p>\n<p>Come \u00e8 chiaro dal titolo di questo articolo, intendevo parlare di architettura software e progettazione di sistemi. Pertanto, non avevo pianificato di trattare i pattern di progettazione software che descrivono come vengono creati i componenti software. Tuttavia, pi\u00f9 ci penso, pi\u00f9 mi sembra che il confine tra i pattern di progettazione software e i pattern architetturali sia molto sfocato e che queste due concetti siano strettamente legati. Prendiamo, ad esempio, <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/eaaDev\/EventSourcing.html\">la registrazione degli eventi<\/a><\/noindex> (event sourcing). \u00c8 sufficiente adottare questo pattern architetturale affinch\u00e9 influisca praticamente su tutti gli aspetti del tuo sistema: la persistenza dei dati, il livello di coerenza accettato nel tuo sistema, la definizione dei componenti al suo interno, ecc. Pertanto, ho deciso di menzionare alcuni pattern architettonici che riguardano direttamente la logica di business. Anche se in questo articolo si dovr\u00e0 limitare a un semplice elenco, ti consiglio di prenderlo in considerazione e riflettere sulle idee associate a questi pattern. Ecco a te:<\/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)\">Principi SOLID<\/a><\/noindex> <\/li>\n<li>Concetti <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\">Progettazione orientata agli oggetti<\/a><\/noindex>, in particolare, <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/ingeniouslysimple\/aggregates-in-domain-driven-design-5aab3ef9901d\">aggregati<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/ingeniouslysimple\/command-vs-event-in-domain-driven-design-be6c45be52a9\">comandi ed eventi<\/a><\/noindex> <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/267125\/\">Architettura esagonale<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/CQRS.html\">Separazione delle responsabilit\u00e0 tra comandi e query (CQRS)<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/eaaDev\/EventSourcing.html\">Registrazione degli eventi<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/doc.akka.io\/docs\/akka\/2.5\/guide\/actors-intro.html\">Modello ad attori<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/215605\/\">Pattern di progettazione MVC, MVVM e MVP<\/a><\/noindex><\/li>\n<\/ul>\n<p>\n<b>Approcci collaborativi<\/b><\/p>\n<p>\u00c8 estremamente improbabile che tu sia l'unico responsabile del processo di progettazione del sistema in un progetto. Al contrario, \u00e8 molto probabile che tu debba collaborare con colleghi che lavorano sia nel tuo ambito di competenza che oltre. In tal caso, sar\u00e0 necessario valutare le soluzioni tecnologiche scelte insieme ai colleghi, identificare le esigenze aziendali e capire come meglio suddividere i compiti.<\/p>\n<p><img decoding=\"async\" alt=\"Architettura software e progettazione dei sistemi: panoramica generale e guida alle risorse\" src=\"\/wp-content\/uploads\/2019\/07\/ad39e031dcac8e69fafb637603043bfb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Immagine <noindex><a rel=\"nofollow\" href=\"https:\/\/unsplash.com\/photos\/3V8xo5Gbusk?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Kaleidico<\/a><\/noindex> da Unsplash<\/i><\/p>\n<p>Innanzitutto, dovrai sviluppare una rappresentazione precisa e comunemente accettata dell'obiettivo aziendale che stai cercando di raggiungere e quali elementi mobili dovrai affrontare. Le tecniche di modellazione di gruppo, in particolare, <noindex><a rel=\"nofollow\" href=\"https:\/\/techbeacon.com\/devops\/introduction-event-storming-easy-way-achieve-domain-driven-design\">storming di eventi<\/a><\/noindex> (event storming) aiutano notevolmente a velocizzare questo processo e aumentano le tue possibilit\u00e0 di successo. Puoi iniziare questo lavoro prima o dopo aver delineato <noindex><a rel=\"nofollow\" href=\"https:\/\/www.infoq.com\/news\/2015\/02\/service-boundaries-healthcare\/\">i confini dei tuoi servizi<\/a><\/noindex>, per poi approfondirlo man mano che il prodotto matura. Basandoti sul livello di coerenza raggiunto qui, puoi anche formulare <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/UbiquitousLanguage.html\">un linguaggio comune<\/a><\/noindex> per il contesto limitato in cui operi. Quando \u00e8 necessario parlare dell'architettura del tuo sistema, potresti trovare utile <noindex><a rel=\"nofollow\" href=\"https:\/\/c4model.com\/\">il modello C4<\/a><\/noindex>, proposto da <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/simonbrown\">Simon Brown<\/a><\/noindex>, soprattutto quando \u00e8 necessario capire quanto dovrai approfondire i dettagli del problema, visualizzando le cose che desideri comunicare.<\/p>\n<p>Probabilmente ci sar\u00e0 anche un'altra tecnologia matura in questo ambito, altrettanto utile quanto il design orientato agli oggetti. Tuttavia, torniamo comunque alla comprensione dell'area tematica, quindi le conoscenze e l'esperienza nel campo del <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\">design orientato agli oggetti<\/a><\/noindex> ti saranno utili.<br \/>\n<br \/>Fonte: <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.0.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 \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\" \/>\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\/it\/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.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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 \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/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\udd47Architettura del software e progettazione dei sistemi: panoramica generale e guida alle risorse | ProHoster","description":"Salve, colleghi. Oggi vi presentiamo la traduzione dell'articolo di Tugberk Ugurlu, che ha cercato di riassumere i principi di design dei moderni sistemi software in un volume relativamente ridotto. Ecco cosa l'autore comunica su di s\u00e9: poich\u00e9 \u00e8 decisamente impossibile trattare in un hub article un tema cos\u00ec colossale come i pattern architetturali + i pattern di design aggiornati al 2019, consigliamo","canonical_url":"https:\/\/prohoster.info\/it\/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":"it_IT","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 \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","og:url":"https:\/\/prohoster.info\/it\/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\/it\/wp-json\/wp\/v2\/posts\/36518","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=36518"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/36518\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/27331"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=36518"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=36518"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=36518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}