{"id":11899,"date":"2016-07-27T15:02:01","date_gmt":"2016-07-27T13:02:01","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=11899"},"modified":"2016-07-27T15:02:01","modified_gmt":"2016-07-27T13:02:01","slug":"microservizi-per-logiche-applicative-di-grandi-dimensioni","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/microservizi-per-logiche-applicative-di-grandi-dimensioni\/","title":{"rendered":"Microservizi per logiche applicative di grandi dimensioni"},"content":{"rendered":"<p>Una delle tendenze che si sta affermando in campo di progettazione software \u00e8 basata sui cosiddetti <strong>microservices<\/strong>: moduli\u00a0software di dimensioni ridotte che offrono una funzionalit\u00e0 specifica, non fine a s\u00e8 stessa ma calata in una\u00a0logica applicativa di grandi dimensioni.<\/p>\n<p>L&#8217;evoluzione software, in buona parte basata su programmazione orientata agli oggetti, ha portato alla creazione di piattaforme applicative di dimensioni notevoli che incarnano progetti molto grandi e, a volte, l&#8217;intera produzione di un&#8217;azienda. Tali applicazioni, spesso definite <em>monolitiche<\/em> in quanto<em>\u00a0<\/em>costituite da un corpo unico, presentano col tempo degli svantaggi:<\/p>\n<ul>\n<li>una complessa organizzazione del lavoro: distribuzione degli incarichi, formazione dei team, gestione delle responsabilit\u00e0;<\/li>\n<li>spesso l&#8217;intera piattaforma \u00e8 basata su un&#8217;unica tecnologia &#8211; ad esempio, interamente fatta in Java o in .NET, etc. &#8211; con lo svantaggio che alcune funzionalit\u00e0 potrebbero essere sviluppate meglio con altri linguaggi;<\/li>\n<li>difficolt\u00e0 nello sviluppo e nella manutenzione;<\/li>\n<li>pianificazione dei test molto complessa.<\/li>\n<\/ul>\n<p>La diffusione dei <strong>microservizi<\/strong> ha portato in tante aziende non solo la nascita di nuove piattaforme software cos\u00ec concepite ma anche la migrazione graduale di prodotti monolitici verso una struttura pi\u00f9 modulare.<\/p>\n<p>Tanto per chiarirci le idee, proviamo ad immaginare una piattaforma online costituita non da un motore unico ma da tanti piccoli servizi scritti in linguaggi diversi, ognuno autonomo come sviluppo, manutenzione e test, che dialogano tra loro in Rete. Ad esempio, potrebbero occuparsi uno di login degli utenti, uno dello storage di file, altri di elaborazioni, altri ancora della produzione di reportistica. Inoltre, possiamo legittimamente supporli scritti ognuno nel linguaggio che gli si addice: alcuni basati su Node,js, altri in Java, alcuni in .NET (perch\u00e8, ad esempio, devono interagire con prodotti Microsoft), altri in Ruby, Python e cos\u00ec via.<\/p>\n<p>Anche la formazione dei team di sviluppo potrebbe essere pi\u00f9 comoda con gruppi molto ristretti di sviluppatori che si occupano anche di un singolo microservizio.<\/p>\n<p>Ci sono anche altri vantaggi come la possibilit\u00e0 di ridondare e scalare singoli microservizi che ne hanno bisogno per\u00a0essere pi\u00f9 reattivi mentre con un&#8217;applicazione monolitica si dovrebbe agire\u00a0a livello globale.<\/p>\n<p>Ovviamente anche i microservizi pongono alcuni problemi: devono necessariamente comunicare tra loro quindi ognuno deve avere il proprio strato di API da contattare, facilitano i test singoli ma si deve progettare bene dei test complessivi che mettono alla prova\u00a0la piattaforma tutta insieme, le attivit\u00e0 pi\u00f9 complesse toccano spesso pi\u00f9 microservizi quindi \u00e8 necessario pianificarne la suddivisione e decidere a quale team assegnarlo.<\/p>\n<p>Secondo il parere di molti esperti, sembra proprio che i microservizi siano pronti ad invadere il mondo e l&#8217;adozione di questa mentalit\u00e0 di progettazione da parte di grandi realt\u00e0 dell&#8217;informatica appare come una conferma.<\/p>\n<p>Stiamo a vedere cosa succede: noi continueremo a tenervi aggiornati!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Una delle tendenze che si sta affermando in campo di progettazione software \u00e8 basata sui cosiddetti microservices:&#8230;<\/p>\n","protected":false},"author":561,"featured_media":12260,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[534],"tags":[1242,1713,4,1595,1711],"class_list":["post-11899","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","tag-api","tag-microservices","tag-programmazione","tag-programmazione-web","tag-web-services"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/11899","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/561"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=11899"}],"version-history":[{"count":4,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/11899\/revisions"}],"predecessor-version":[{"id":12258,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/11899\/revisions\/12258"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media\/12260"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=11899"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=11899"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=11899"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}