{"id":92810,"date":"2020-08-31T07:42:09","date_gmt":"2020-08-31T05:42:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1"},"modified":"2020-08-31T07:42:09","modified_gmt":"2020-08-31T05:42:09","slug":"vybor-arhitekturnogo-stilya-chast-1","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1","title":{"rendered":"Scelta dello stile architettonico (parte 1)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Ciao, Habr. Proprio ora, OTUS ha aperto le iscrizioni per un nuovo ciclo di corsi. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/5RTk\/\">\u00abSoftware Architect\u00bb<\/a><\/noindex>In vista dell'inizio del corso, voglio condividere con voi il mio articolo originale.<\/i><\/b><\/p>\n<p><\/p>\n<h2>Introduzione<\/h2>\n<p>\nLa scelta dello stile architettonico \u00e8 una delle decisioni tecniche fondamentali nella costruzione di un sistema informatico. In questa serie di articoli, propongo di analizzare gli stili architettonici pi\u00f9 popolari per la costruzione delle applicazioni e rispondere alla domanda su quale stile architettonico sia il pi\u00f9 preferibile in ciascun caso. Nel corso dell'esposizione cercher\u00f2 di tracciare il filo logico che spiega lo sviluppo degli stili architettonici dai monoliti ai microservizi. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Un po' di storia<\/h2>\n<p>\nSe provate a chiedere agli sviluppatori: \u00abA cosa servono i microservizi?\u00bb, otterrete risposte molto diverse. Sentirete che i microservizi migliorano la scalabilit\u00e0, semplificano la comprensione del codice, migliorano la resilienza, a volte si sente dire che permettono di \u00abripulire il codice\u00bb. Rivolgiamoci alla storia per capire quale obiettivo ha perseguito l'emergere dei microservizi.<\/p>\n<p>In breve, i microservizi, come li intendiamo oggi, sono emersi nel seguente modo: nel 2011, James Lewis, analizzando il lavoro di diverse aziende, ha notato l'emergere di un nuovo paradigma \u00abmicro-app\u00bb, che ha ottimizzato l'SOA in termini di accelerazione del deployment dei servizi. Poco dopo, nel 2012, durante un summit architettonico, il paradigma \u00e8 stato rinominato in microservizio. Pertanto, l'obiettivo iniziale dell'implementazione dei microservizi era il miglioramento del famigerato <b>time to market<\/b>.<\/p>\n<p>Nel 2015, i microservizi erano sulla cresta dell'onda. Secondo alcune ricerche, nessuna conferenza si svolgeva senza una relazione sui microservizi. In effetti, alcune conferenze erano dedicate esclusivamente ai microservizi. Oggi molti progetti iniziano gi\u00e0 con questo stile architettonico, e se un progetto contiene tonnellate di codice legacy, \u00e8 probabile che stia avvenendo una migrazione attiva verso i microservizi.<\/p>\n<p>Nonostante quanto sopra, ancora un numero limitato di sviluppatori riesce a definire il concetto di 'microservizio'. Ma di questo parleremo pi\u00f9 avanti...<\/p>\n<h2>Monolite<\/h2>\n<p>\nLo stile architettonico opposto a quello dei microservizi \u00e8 il monolite (o 'tutto in uno'). Non ha molto senso spiegare cos'\u00e8 un monolite, quindi proceder\u00f2 immediatamente a elencare gli svantaggi di questo stile architettonico che hanno portato allo sviluppo di stili architettonici alternativi: dimensione, interdipendenza, distribuzione, scalabilit\u00e0, affidabilit\u00e0 e rigidit\u00e0. Di seguito, propongo di esaminare ciascuno di questi svantaggi separatamente.<\/p>\n<h3>Dimension<\/h3>\n<p>\nIl monolite \u00e8 molto grande. Comunica generalmente con un'ampia base di dati. L'applicazione diventa cos\u00ec complessa che \u00e8 difficile da comprendere per un singolo sviluppatore. Solo coloro che hanno trascorso molto tempo a lavorare su questo codice possono gestire bene il monolite, mentre i neofiti possono impiegare molto tempo nel tentativo di capirlo, senza la certezza di riuscirci. Di solito, c'\u00e8 sempre un 'senior' condizionale che conosce abbastanza bene il monolite e corregge i nuovi sviluppatori per un anno o anche pi\u00f9. Ovviamente, un tale senior rappresenta un singolo punto di fallimento, e la sua partenza pu\u00f2 portare alla rovina del monolite. <\/p>\n<h3>Coesione<\/h3>\n<p>\nIl monolite \u00e8 descritto come un 'grande gomitolo di fango' (big ball of mud), e apportare modifiche in esso pu\u00f2 avere conseguenze imprevedibili. Cambiando una parte, si potrebbero rovinare altre aree del monolite (si tratta di 'grattarsi un orecchio e far cadere il resto'). Questo \u00e8 dovuto al fatto che i componenti nel monolite hanno relazioni molto complesse e, soprattutto, non ovvie.<\/p>\n<h3>Distribuzione<\/h3>\n<p>\nIl deployment di un monolite, a causa delle complesse interconnessioni tra i suoi componenti, \u00e8 un processo lungo con il suo rituale. Questo rituale di solito non \u00e8 standardizzato in modo definitivo e viene trasmesso \"da bocca a bocca\". <\/p>\n<h3>Scalabilit\u00e0<\/h3>\n<p>\nI moduli del monolite possono avere esigenze di risorse in conflitto, il che richiede di cercare un compromesso in termini di hardware. Immaginate un monolite composto dai servizi A e B. Il servizio A \u00e8 esigente in termini di spazio su disco, mentre il servizio B lo \u00e8 in termini di memoria. In questo caso, o la macchina su cui viene installato il monolite deve soddisfare i requisiti di entrambi i servizi, oppure sar\u00e0 necessario disattivare manualmente uno dei servizi.<\/p>\n<p>Un altro esempio (pi\u00f9 classico): il servizio A \u00e8 molto pi\u00f9 popolare del servizio B, quindi volete avere 100 istanze del servizio A e 10 del servizio B. Anche qui ci sono due opzioni: o deployiamo 100 monoliti completi, oppure su alcuni di essi sar\u00e0 necessario disattivare manualmente i servizi B. <\/p>\n<h3>Affidabilit\u00e0<\/h3>\n<p>\nPoich\u00e9 tutti i servizi sono integrati, se il monolite fallisce, falliscono tutti i servizi contemporaneamente. In realt\u00e0, forse non \u00e8 cos\u00ec male; almeno non ci saranno guasti parziali in un sistema distribuito. D'altra parte, a causa di un errore in una funzionalit\u00e0 utilizzata dallo 0,001% degli utenti, puoi perdere tutti gli utenti del tuo sistema. <\/p>\n<h3>Rigidit\u00e0<\/h3>\n<p>\nA causa delle dimensioni del monolite, \u00e8 difficile adottare nuove tecnologie. Di conseguenza, diventa una sfida mantenere quello che potremmo definire il senior. La stack tecnologica scelta all'inizio del progetto pu\u00f2 diventare un ostacolo allo sviluppo del prodotto. <\/p>\n<h2>Conclusione<\/h2>\n<p>\nLa prossima volta parleremo di come le persone hanno tentato di risolvere i problemi evidenziati passando a componenti e SOA.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/5RTk\/\"><img decoding=\"async\" alt=\"Scelta dello stile architettonico (parte 1)\" src=\"\/wp-content\/uploads\/2020\/08\/d1582a83ad9cf8722a035dfd9a212aa5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<blockquote>\n<h4>Leggi di pi\u00f9:<\/h4>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/504144\/\">Perch\u00e9 SQL Server non garantisce l'ordinamento dei risultati senza ORDER BY<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/508206\/\">Architettura per sviluppatori e administrator: quali competenze sono necessarie per chi?<\/a><\/noindex><\/li>\n<\/ul>\n<\/blockquote>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/516880\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb. \u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430 \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u0441\u0432\u043e\u0435\u0439 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0412\u044b\u0431\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043e\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0449\u0438\u0445 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043f\u0440\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0441\u0442\u0438\u043b\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92811,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92810","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1\" \/>\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\u0412\u044b\u0431\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f (\u0447\u0430\u0441\u0442\u044c 1) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-31T05:42:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-31T05:42:09+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Scelta dello stile architettonico (parte 1) | ProHoster","description":"Ciao, Habr. Al momento, OTUS ha aperto le iscrizioni per un nuovo ciclo del corso \"Software Architect\".","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1","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\u0412\u044b\u0431\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f (\u0447\u0430\u0441\u0442\u044c 1) | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-31T05:42:09+00:00","article:modified_time":"2020-08-31T05:42:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92810","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:00:37","updated":"2022-10-03 23:14:42","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/92810","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=92810"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/92810\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/92811"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=92810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=92810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=92810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}