{"id":95403,"date":"2020-09-28T19:43:15","date_gmt":"2020-09-28T17:43:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3"},"modified":"2020-09-28T19:43:15","modified_gmt":"2020-09-28T17:43:15","slug":"vybor-arhitekturnogo-stilya-chast-3","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","title":{"rendered":"Scelta dello stile architettonico (parte 3)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Ciao, Habr. Oggi continuo la mia serie di pubblicazioni che ho scritto appositamente per il lancio del nuovo corso. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\">\u00abSoftware Architect\u00bb<\/a><\/noindex>.<\/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 informativo. In questa serie di articoli, propongo di analizzare gli stili architettonici pi\u00f9 popolari per la creazione di applicazioni e rispondere alla domanda su quale stile architettonico sia preferibile in ciascun caso. Durante la mia esposizione cercher\u00f2 di elaborare una catena logica che spiega l'evoluzione degli stili architettonici dai monoliti ai microservizi. <\/p>\n<p>L'ultima volta abbiamo parlato dei vari tipi di monoliti e dell'uso dei componenti per costruirli, sia dei componenti di assemblaggio che dei componenti di distribuzione. Abbiamo esaminato l'architettura orientata ai servizi.<\/p>\n<p>Ora definiamo finalmente le principali caratteristiche dell'architettura a microservizi. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Relazione tra architetture<\/h2>\n<p>\n\u00c8 necessario comprendere che, basandosi sui dati contenuti nei precedenti articoli, qualsiasi servizio \u00e8 un componente, ma non ogni servizio \u00e8 un microservizio. <\/p>\n<h2>Caratteristiche dell'architettura a microservizi<\/h2>\n<p>\nLe principali caratteristiche dell'architettura a microservizi sono:<\/p>\n<ul>\n<li>Organizzazione attorno alle capacit\u00e0 aziendali (Organized around Business Capabilities)<\/li>\n<li>Prodotti, non progetti (Products not Projects)<\/li>\n<li>Punti di ingresso intelligenti e tubi stupidi (Smart endpoints and dumb pipes)<\/li>\n<li>Governance decentralizzata (Decentralized Governance)<\/li>\n<li>Gestione decentralizzata dei dati (Decentralized Data Management)<\/li>\n<li>Automazione dell'infrastruttura (Infrastructure Automation)<\/li>\n<li>Progettazione per il fallimento (Design for failure)<\/li>\n<li>Architettura con sviluppo evolutivo (Evolutionary Design)<\/li>\n<\/ul>\n<p>\nIl primo punto deriva dall'architettura orientata ai servizi, perch\u00e9 i microservizi sono un caso particolare dei servizi. Gli altri punti meritano un'analisi separata.<\/p>\n<h2>Organizzazione attorno alle capacit\u00e0 aziendali (Organized around Business Capabilities)<\/h2>\n<p>\nOra \u00e8 necessario ricordare la legge di Conway: le organizzazioni che creano sistemi organizzano la loro architettura in maniera che rifletta la struttura delle interazioni all'interno di queste organizzazioni. Un esempio \u00e8 la creazione di un compilatore: un team di sette persone ha sviluppato un compilatore a sette passaggi, mentre un team di cinque ha realizzato uno a cinque passaggi.<\/p>\n<p>Se parliamo di monoliti e microservizi, se lo sviluppo \u00e8 organizzato in base a dipartimenti funzionali (backend, frontend, database administrator), risulta un classico monolite. <\/p>\n<p>Per ottenere microservizi, i team devono essere organizzati attorno alle capacit\u00e0 aziendali (team ordini, spedizioni, catalogo). Tale organizzazione consentir\u00e0 ai team di concentrarsi sulla creazione di parti specifiche dell'applicazione.<\/p>\n<h2>Prodotti, non progetti (Products not Projects)<\/h2>\n<p>\nL'approccio progettuale in cui il team trasferisce la funzionalit\u00e0 sviluppata ad altri team nel caso di architettura a microservizi non \u00e8 affatto adeguato. Il team deve supportare il sistema per tutta la durata del suo ciclo di vita. Amazon, uno dei leader nell'implementazione dei microservizi, ha dichiarato: \u00abcostruisci un prodotto e lo avvii tu\u00bb (\u00abyou build, you run it\u00bb). L'approccio prodotto consente al team di percepire le esigenze del business. <\/p>\n<h2>Punti di ingresso intelligenti e tubi stupidi (Smart endpoints and dumb pipes)<\/h2>\n<p>\nL'architettura SOA ha posto grande attenzione ai canali di comunicazione, in particolare all'Enterprise Service Bus (servizio di bus aziendale). Questo porta spesso a una Erroneous Spaghetti Box, cio\u00e8 la complessit\u00e0 del monolite si riversa nella complessit\u00e0 delle interazioni tra servizi. Nell'architettura microservizi vengono utilizzati solo metodi semplici di interazione.<\/p>\n<h2>Governance decentralizzata (Decentralized Governance)<\/h2>\n<p>\nLe decisioni chiave sui microservizi devono essere prese dalle persone che realmente sviluppano i microservizi. Qui con decisioni chiave si intende la scelta<br \/>\ndei linguaggi di programmazione, della metodologia di distribuzione, dei contratti delle interfacce pubbliche, ecc. <\/p>\n<h2>Gestione decentralizzata dei dati (Decentralized Data Management)<\/h2>\n<p>\nL'approccio standard, in cui l'applicazione si basa su un unico database, non pu\u00f2 tenere conto delle specificit\u00e0 di ciascun servizio specifico. L'MSA prevede una gestione decentralizzata dei dati, fino all'uso di diverse tecnologie.<\/p>\n<h2>Automazione dell'infrastruttura (Infrastructure Automation)<\/h2>\n<p>\nL'MSA supporta i processi di distribuzione e fornitura continua. Questo \u00e8 possibile solo attraverso l'automazione dei processi. A questo punto, distribuire un gran numero di servizi non sembra pi\u00f9 cos\u00ec spaventoso. Il processo di distribuzione deve diventare noioso. Il secondo aspetto \u00e8 legato alla gestione dei servizi in un ambiente di prodotto. Senza automazione, la gestione dei processi avviati in diversi ambienti operativi diventa impossibile.<\/p>\n<h2>Progettazione per il fallimento (Design for failure)<\/h2>\n<p>\nNumerosi servizi MSA sono soggetti a guasti. Tuttavia, la gestione degli errori in un sistema distribuito \u00e8 un compito tutt'altro che banale. L'architettura delle applicazioni deve essere resistente a tali guasti. Rebecca Parsons ritiene molto importante che non utilizziamo nemmeno l'interazione intra-processo tra i servizi; invece, per la comunicazione ci affidiamo all'HTTP, che non \u00e8 nemmeno lontanamente cos\u00ec affidabile.<\/p>\n<h2>Architettura con sviluppo evolutivo (Evolutionary Design)<\/h2>\n<p>\nL'architettura di un sistema MSA deve svilupparsi in modo evolutivo. \u00c8 preferibile limitare le modifiche necessarie ai confini di un singolo servizio. \u00c8 necessario considerare anche l'impatto sugli altri servizi. L'approccio tradizionale consiste nel cercare di risolvere questo problema attraverso la gestione delle versioni, ma l'MSA prevede di utilizzare la gestione delle versioni come<br \/>\nultima risorsa.<\/p>\n<h2>Conclusione<\/h2>\n<p>\nDopo quanto detto, possiamo definire cosa siano i microservizi. L'architettura a microservizi \u00e8 un approccio allo sviluppo di un'applicazione separata come un insieme di piccoli servizi, ognuno dei quali opera nel proprio processo e interagisce tramite meccanismi leggeri, spesso utilizzando interfacce API HTTP. Questi servizi sono costruiti su opportunit\u00e0 di business e possono essere implementati indipendentemente mediante un meccanismo di<br \/>\ndistribuzione completamente automatizzato. Esiste un livello minimo di gestione centralizzata di questi servizi, che possono essere scritti in diversi linguaggi di programmazione e utilizzare varie tecnologie di archiviazione dei dati.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\"><img decoding=\"async\" alt=\"Scelta dello stile architettonico (parte 3)\" src=\"\/wp-content\/uploads\/2020\/09\/f9ffd06c83921f64818842327c09108e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><i><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/519456\/\">Leggere la parte 2<\/a><\/noindex><\/i><br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/520870\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e \u0441\u0435\u0440\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043a \u0441\u0442\u0430\u0440\u0442\u0443 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb. \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 \u0432\u043e\u043f\u0440\u043e\u0441 \u043a\u043e\u0433\u0434\u0430 \u043a\u0430\u043a\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":95404,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-95403","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440.\" \/>\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-3\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.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 3) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3\" \/>\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-09-28T17:43:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-28T17:43:15+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 3) | ProHoster","description":"Ciao, Habr.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","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 3) | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","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-09-28T17:43:15+00:00","article:modified_time":"2020-09-28T17:43:15+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"95403","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 11:06:26","updated":"2022-10-01 11:38:49","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\/95403","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=95403"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/95403\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/95404"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=95403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=95403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=95403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}