{"id":1043,"date":"2019-05-24T16:21:17","date_gmt":"2019-05-24T14:21:17","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=1043"},"modified":"2021-03-17T12:37:15","modified_gmt":"2021-03-17T11:37:15","slug":"scomporre-unapplicazione-monolitica-like-a-pro-la-nostra-guida-ad-una-transizione-quasi-senza-sforzo","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/it\/scomporre-unapplicazione-monolitica-like-a-pro-la-nostra-guida-ad-una-transizione-quasi-senza-sforzo\/","title":{"rendered":"Scomporre un\u2019applicazione Monolitica like a pro: la nostra guida ad una transizione (quasi) senza sforzo."},"content":{"rendered":"

INTRODUZIONE<\/span><\/h2>\n

Man mano che le applicazioni software tendono a crescere sempre di pi\u00f9, aggiungendo nuove funzionalit\u00e0, definendo logiche sempre pi\u00f9 complesse, molte interazioni e accoppiamenti forti tra le loro componenti, diviene sempre pi\u00f9 difficile gestire il loro sviluppo e la loro manutenzione spingendo quindi le aziende a suddividerle in piccole parti riutilizzabili costruite attorno alle <\/span>business capabilities<\/b>, i microservizi.<\/span><\/p>\n

All\u2019interno di un’architettura a microservizi, ogni componente applicativo esiste e opera in maniera autonoma come un singolo servizio comunicando con gli altri servizi tramite delle API ben definite rispettando il <\/span>Principio di Singola Responsabilit\u00e0<\/b>.<\/span><\/p>\n

Migrare verso un <\/span>ecosistema a microservizi<\/b> non \u00e8 un viaggio semplice ma \u00e8 sicuramente uno che vale la pena affrontare; intraprendere tale viaggio significa dare alla vostra applicazione la possibilit\u00e0 di <\/span>crescere pi\u00f9 velocemente<\/b>, <\/span>ridurre i rischi di modifica del codice<\/b> e gli <\/span>alti costi di manutenzione<\/b> ad essa correlati.\u00a0<\/span><\/p>\n

Immaginate che pi\u00f9 di un gruppo di sviluppatori lavori su un’applicazione monolitica, errori su una logica sticky (con un alto tasso di correlazione) possono potenzialmente bloccare il lavoro degli altri team, in quanto di solito la pipeline di CD\/CI \u00e8 la stessa per tutti i membri del progetto; con un approccio a microservizi ogni team pu\u00f2 lavorare e mantenere il proprio codice.<\/span><\/p>\n

Questo approccio \u00e8 inoltre molto utilizzato nel paradigma SaaS, poich\u00e8 il modello di rilascio <\/span>Software as a Service <\/b>si basa sul centralizzare nel Cloud l\u2019hosting delle applicazioni che vengono accedute tramite Thin Client (senza particolare logica operativa) o pi\u00f9 comunemente tramite Browser Web, perci\u00f2 un ecosistema a microservizi asserve a questo scopo molto bene.<\/span><\/p>\n

\"\"<\/p>\n

Viene data ai vostri team la possibilit\u00e0 di <\/span>crescere in numero<\/b> e di <\/span>dividersi e concentrarsi su ogni singola feature in parallelo<\/b>, diventando pi\u00f9 efficienti; inoltre il <\/span>costo per introdurre un nuovo membro nel team in termini di conoscenza e comprensione del codice \u00e8 notevolmente ridotto<\/b>.<\/span><\/p>\n

Anche i <\/span>costi delle sperimentazioni<\/b> sono notevolmente ridotti, in quanto ogni feature \u00e8 <\/span>atomica<\/b> e quindi i <\/span>cambiamenti non possono danneggiare altre parti dell’applicazione<\/b>. Questo permette ai team di generare <\/span>valore aziendale <\/b>pi\u00f9 velocemente.<\/span><\/p>\n

Ogni microservizio pu\u00f2 essere scritto <\/span>utilizzando diversi framework<\/b> e <\/span>linguaggi di programmazione,<\/b> e pu\u00f2 essere <\/span>distribuito in modo indipendente<\/b>; grazie alla loro natura atomica e al fatto che aderiscono al <\/span>principio di isolamento<\/b>, i microservizi garantiscono <\/span>soluzioni di disaster recovery<\/b> pi\u00f9 semplici e veloci.<\/span><\/p>\n

\"\"<\/p>\n

INIZIAMO IL NOSTRO VIAGGIO<\/span><\/h2>\n

Poich\u00e9 l’argomento \u00e8 molto complesso e vasto, cercheremo di concentrarci su tecniche e consigli generali ben noti e non entreremo nel dettaglio di linguaggi di programmazione o infrastrutture specifiche.<\/span><\/p>\n

Cominciamo dicendo che “micro” nel termine microservizi \u00e8 solo un’<\/span>etichetta<\/b> “non” una <\/span>descrizione<\/b>, nel senso che non c’\u00e8 bisogno di cercare di dividere la propria applicazione in una molteplicit\u00e0 di piccoli (e potenzialmente inutili) servizi sul cloud, ma afferrare l’idea che si “ha davvero bisogno” di trovare e suddividere <\/span>parti ben note del proprio codice capaci di fare operazioni molto specifiche<\/b>, con un <\/span>elevato<\/b> valore<\/b> e con un <\/span>dominio chiaro<\/b> e <\/span>comprensibile<\/b>.\u00a0<\/span><\/p>\n

PREREQUISITI<\/span><\/h2>\n

Anche se lavorare con i microservizi pu\u00f2 essere estremamente interessante per gli sviluppatori, la vostra azienda deve avere un certo grado di preparazione per poter intraprendere questo viaggio di migrazione al paradigma dei microservizi.\u00a0<\/span><\/p>\n

Senza dubbio gli sviluppatori devono avere una chiara comprensione, e idealmente una certa esperienza di lavoro, su tecnologie come Containerizzazione su Docker, Kubernetes ed eventualmente AWS Lambda per ospitare i vostri microservizi.\u00a0<\/span><\/p>\n

Bisogna essere in grado di rendere operativo un servizio nel minor tempo possibile, in modo da poter definire le pipeline di <\/span>Continuous Deployment<\/b> e <\/span>Continuous Integration<\/b>.<\/span><\/p>\n

Infine \u00e8 necessario essere in grado di fornire strumenti di monitoraggio adeguati per ispezionare rapidamente il vostro ecosistema a microservizi (in AWS, ad esempio, un uso intensivo di strumenti come X-Ray, CloudWatch, CloudTrail ed ElasticSearch con Kibana).<\/span><\/p>\n

Questi prerequisiti richiedono che la vostra azienda segua la <\/span>DevOps Culture<\/b>, in cui ogni membro del team deve avere una chiara comprensione sia dei <\/span>compiti ad appannaggio degli sviluppatori<\/b> che dell’<\/span>ambiente operativo su cui il codice andr\u00e0 rilasciato<\/b>.<\/span><\/p>\n

SUDDIVIDERE I LIVELLI APPLICATIVI<\/span><\/h2>\n

Questo \u00e8 di sicuramente il primo passo e probabilmente il pi\u00f9 semplice in termini di comprensione di come pu\u00f2 essere realizzato. Quando si inizia a \u201cspezzare\u201d un monolite un task molto semplice \u00e8 individuare aree che possono essere naturalmente disaccoppiate come ad esempio <\/span>front-end<\/b> e <\/span>back-end<\/b>, perch\u00e9 idealmente il front-end dovrebbe essere visto come un semplice consumatore di API; un esempio \u00e8 dato da un’applicazione sviluppata in Rails: le pagine html sono solitamente renderizzate a partire da <\/span>template .erb<\/b> attualizzati tramite dati <\/span>serviti dal back-end Rails<\/b> e il contenuto \u00e8 altamente accoppiato con esso. Creare una Single Page Application con Angular, ad esempio, e farla comunicare con un back-end <\/span>attraverso le API<\/b>, permette di disaccoppiare naturalmente i due livelli dell’applicazione. Questo processo \u00e8 ovviamente potenzialmente lungo in termini di tempo di sviluppo, ma \u00e8 molto importante, quindi sforzatevi sempre di raggiungerlo e pu\u00f2 essere, in certa misura, anche parallelizzato.<\/span><\/p>\n

Per ora possiamo concludere qui la nostra analisi in quanto abbiamo visto i punti di forza di un approccio a microservizi e come il vostro team e, in generale, la vostra azienda deve essere preparata ad avviare questo lungo ma possibilmente fruttuoso processo. Restate sintonizzati per la seconda parte, in cui inizieremo a descrivere passo dopo passo le strategie per completare la migrazione da Monolite ad un ecosistema a microservizi.<\/span><\/p>\n

A presto con la seconda parte!<\/p>\n

Leggi la seconda parte >><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"

INTRODUZIONE Man mano che le applicazioni software tendono a crescere sempre di pi\u00f9, aggiungendo nuove funzionalit\u00e0, definendo logiche sempre pi\u00f9 […]<\/p>\n","protected":false},"author":6,"featured_media":1021,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[481],"tags":[309,305],"yoast_head":"\nScomporre un\u2019applicazione Monolitica like a pro: la nostra guida ad una transizione (quasi) senza sforzo. - Proud2beCloud Blog<\/title>\n<meta name=\"description\" content=\"Come scomporre un\u2019applicazione Monolitica in microservizi: la guida di beSharp per una transizione senza sforzo.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.besharp.it\/it\/scomporre-unapplicazione-monolitica-like-a-pro-la-nostra-guida-ad-una-transizione-quasi-senza-sforzo\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Come scomporre un\u2019applicazione Monolitica in microservizi\" \/>\n<meta property=\"og:description\" content=\"Come scomporre un\u2019applicazione Monolitica in microservizi: la guida di beSharp per una transizione senza sforzo.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.besharp.it\/it\/scomporre-unapplicazione-monolitica-like-a-pro-la-nostra-guida-ad-una-transizione-quasi-senza-sforzo\/\" \/>\n<meta property=\"og:site_name\" content=\"Proud2beCloud Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-05-24T14:21:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-03-17T11:37:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.besharp.it\/wp-content\/uploads\/2019\/10\/blogharottoilcazzo-19.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1667\" \/>\n\t<meta property=\"og:image:height\" content=\"1251\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Alessandro Gaggia\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Come scomporre un\u2019applicazione Monolitica in microservizi\" \/>\n<meta name=\"twitter:description\" content=\"Come scomporre un\u2019applicazione Monolitica in microservizi: la guida di beSharp per una transizione senza sforzo.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/blog.besharp.it\/wp-content\/uploads\/2019\/10\/blogharottoilcazzo-19.png\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alessandro Gaggia\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.besharp.it\/it\/scomporre-unapplicazione-monolitica-like-a-pro-la-nostra-guida-ad-una-transizione-quasi-senza-sforzo\/\",\"url\":\"https:\/\/blog.besharp.it\/it\/scomporre-unapplicazione-monolitica-like-a-pro-la-nostra-guida-ad-una-transizione-quasi-senza-sforzo\/\",\"name\":\"Scomporre un\u2019applicazione Monolitica like a pro: la nostra guida ad una transizione (quasi) senza sforzo. - Proud2beCloud Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.besharp.it\/it\/#website\"},\"datePublished\":\"2019-05-24T14:21:17+00:00\",\"dateModified\":\"2021-03-17T11:37:15+00:00\",\"author\":{\"@id\":\"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/f27fc12d10867c6ea6e0158ce4dd8924\"},\"description\":\"Come scomporre un\u2019applicazione Monolitica in microservizi: la guida di beSharp per una transizione senza sforzo.\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.besharp.it\/it\/scomporre-unapplicazione-monolitica-like-a-pro-la-nostra-guida-ad-una-transizione-quasi-senza-sforzo\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.besharp.it\/it\/scomporre-unapplicazione-monolitica-like-a-pro-la-nostra-guida-ad-una-transizione-quasi-senza-sforzo\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.besharp.it\/it\/scomporre-unapplicazione-monolitica-like-a-pro-la-nostra-guida-ad-una-transizione-quasi-senza-sforzo\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.besharp.it\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Scomporre un\u2019applicazione Monolitica like a pro: la nostra guida ad una transizione (quasi) senza sforzo.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.besharp.it\/it\/#website\",\"url\":\"https:\/\/blog.besharp.it\/it\/\",\"name\":\"Proud2beCloud Blog\",\"description\":\"il blog di beSharp\",\"alternateName\":\"Proud2beCloud Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.besharp.it\/it\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/f27fc12d10867c6ea6e0158ce4dd8924\",\"name\":\"Alessandro Gaggia\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f58dc28050f26409e22ab60346d06220?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f58dc28050f26409e22ab60346d06220?s=96&d=mm&r=g\",\"caption\":\"Alessandro Gaggia\"},\"description\":\"Head of software development di beSharp, Full-Stack developer, mi occupo di garantire lo stato dell\u2019arte di tutta la nostra codebase. Scrivo codice in quasi ogni linguaggio, ma prediligo Typescript. Respiro Informatica, Game design, Cinema, Fumetti e buona cucina. Disegno per passione!\",\"url\":\"https:\/\/blog.besharp.it\/it\/author\/alessandro-gaggia\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Scomporre un\u2019applicazione Monolitica like a pro: la nostra guida ad una transizione (quasi) senza sforzo. - Proud2beCloud Blog","description":"Come scomporre un\u2019applicazione Monolitica in microservizi: la guida di beSharp per una transizione senza sforzo.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.besharp.it\/it\/scomporre-unapplicazione-monolitica-like-a-pro-la-nostra-guida-ad-una-transizione-quasi-senza-sforzo\/","og_locale":"it_IT","og_type":"article","og_title":"Come scomporre un\u2019applicazione Monolitica in microservizi","og_description":"Come scomporre un\u2019applicazione Monolitica in microservizi: la guida di beSharp per una transizione senza sforzo.","og_url":"https:\/\/blog.besharp.it\/it\/scomporre-unapplicazione-monolitica-like-a-pro-la-nostra-guida-ad-una-transizione-quasi-senza-sforzo\/","og_site_name":"Proud2beCloud Blog","article_published_time":"2019-05-24T14:21:17+00:00","article_modified_time":"2021-03-17T11:37:15+00:00","og_image":[{"width":1667,"height":1251,"url":"https:\/\/blog.besharp.it\/wp-content\/uploads\/2019\/10\/blogharottoilcazzo-19.png","type":"image\/png"}],"author":"Alessandro Gaggia","twitter_card":"summary_large_image","twitter_title":"Come scomporre un\u2019applicazione Monolitica in microservizi","twitter_description":"Come scomporre un\u2019applicazione Monolitica in microservizi: la guida di beSharp per una transizione senza sforzo.","twitter_image":"https:\/\/blog.besharp.it\/wp-content\/uploads\/2019\/10\/blogharottoilcazzo-19.png","twitter_misc":{"Scritto da":"Alessandro Gaggia","Tempo di lettura stimato":"4 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.besharp.it\/it\/scomporre-unapplicazione-monolitica-like-a-pro-la-nostra-guida-ad-una-transizione-quasi-senza-sforzo\/","url":"https:\/\/blog.besharp.it\/it\/scomporre-unapplicazione-monolitica-like-a-pro-la-nostra-guida-ad-una-transizione-quasi-senza-sforzo\/","name":"Scomporre un\u2019applicazione Monolitica like a pro: la nostra guida ad una transizione (quasi) senza sforzo. - Proud2beCloud Blog","isPartOf":{"@id":"https:\/\/blog.besharp.it\/it\/#website"},"datePublished":"2019-05-24T14:21:17+00:00","dateModified":"2021-03-17T11:37:15+00:00","author":{"@id":"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/f27fc12d10867c6ea6e0158ce4dd8924"},"description":"Come scomporre un\u2019applicazione Monolitica in microservizi: la guida di beSharp per una transizione senza sforzo.","breadcrumb":{"@id":"https:\/\/blog.besharp.it\/it\/scomporre-unapplicazione-monolitica-like-a-pro-la-nostra-guida-ad-una-transizione-quasi-senza-sforzo\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.besharp.it\/it\/scomporre-unapplicazione-monolitica-like-a-pro-la-nostra-guida-ad-una-transizione-quasi-senza-sforzo\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.besharp.it\/it\/scomporre-unapplicazione-monolitica-like-a-pro-la-nostra-guida-ad-una-transizione-quasi-senza-sforzo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.besharp.it\/it\/"},{"@type":"ListItem","position":2,"name":"Scomporre un\u2019applicazione Monolitica like a pro: la nostra guida ad una transizione (quasi) senza sforzo."}]},{"@type":"WebSite","@id":"https:\/\/blog.besharp.it\/it\/#website","url":"https:\/\/blog.besharp.it\/it\/","name":"Proud2beCloud Blog","description":"il blog di beSharp","alternateName":"Proud2beCloud Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.besharp.it\/it\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/f27fc12d10867c6ea6e0158ce4dd8924","name":"Alessandro Gaggia","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/blog.besharp.it\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/f58dc28050f26409e22ab60346d06220?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f58dc28050f26409e22ab60346d06220?s=96&d=mm&r=g","caption":"Alessandro Gaggia"},"description":"Head of software development di beSharp, Full-Stack developer, mi occupo di garantire lo stato dell\u2019arte di tutta la nostra codebase. Scrivo codice in quasi ogni linguaggio, ma prediligo Typescript. Respiro Informatica, Game design, Cinema, Fumetti e buona cucina. Disegno per passione!","url":"https:\/\/blog.besharp.it\/it\/author\/alessandro-gaggia\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/posts\/1043"}],"collection":[{"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/comments?post=1043"}],"version-history":[{"count":0,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/posts\/1043\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/media\/1021"}],"wp:attachment":[{"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/media?parent=1043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/categories?post=1043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.besharp.it\/it\/wp-json\/wp\/v2\/tags?post=1043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}