{"id":8488,"date":"2016-06-23T11:27:31","date_gmt":"2016-06-23T11:27:31","guid":{"rendered":"https:\/\/dev.railscarma.com\/splitting-monolithic-rails-application-to-microservices\/"},"modified":"2024-01-10T13:26:50","modified_gmt":"2024-01-10T13:26:50","slug":"suddivisione-dellapplicazione-monolitica-in-microservizi","status":"publish","type":"post","link":"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/suddivisione-dellapplicazione-monolitica-in-microservizi\/","title":{"rendered":"Suddivisione dell&#039;applicazione con binari monolitici in microservizi"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"8488\" class=\"elementor elementor-8488\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3507359 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3507359\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6457faa4\" data-id=\"6457faa4\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-738def73 elementor-widget elementor-widget-text-editor\" data-id=\"738def73\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Man mano che un&#039;azienda diventa pi\u00f9 grande, richiede pi\u00f9 funzionalit\u00e0 e quindi non puoi fare a meno di aggiungere nuovi modelli\/controller all&#039;applicazione Rails esistente e talvolta diventa un monolite. Se ti trovi di fronte a un&#039;applicazione monolitica che \u00e8 diventata non manutenibile e difficile da implementare, devi conoscere alcuni modi per gestirla. Se il tuo team deve percorrere migliaia di righe per comprendere il progetto e apportare alcune modifiche, \u00e8 tempo di dividerle.<\/p>\n<p><strong>Quando dividere l&#039;applicazione<\/strong><\/p>\n<ul>\n<li>Quando i test durano pi\u00f9 di 20 minuti.<\/li>\n<li>I modelli sono cresciuti fino a diverse centinaia o migliaia.<\/li>\n<li>Funzionalit\u00e0 indipendente.<\/li>\n<li>Quando gli sviluppatori non possono lavorare in modo indipendente per sviluppare\/distribuire i propri moduli.<\/li>\n<\/ul>\n<p><strong>Diversi modi per dividere l&#039;applicazione monolitica<\/strong><\/p>\n<ul>\n<li>Utilizzo dei microservizi.<\/li>\n<li>Utilizzando tecnologie &quot;pi\u00f9 veloci&quot;.<\/li>\n<li>Aggiungi un sacco di server.<\/li>\n<\/ul>\n<p><strong>Cos&#039;\u00e8 il microservizio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/strong>I microservizi rappresentano un modo strategico per scomporre un grande progetto in parti pi\u00f9 piccole e pi\u00f9 gestibili. Un microservizio \u00e8 una funzionalit\u00e0 dell&#039;applicazione rifattorizzata nella propria base di codice, che comunica con altri microservizi tramite un protocollo standard. A tale scopo, dividi innanzitutto i requisiti aziendali in gruppi correlati come logica di gestione degli utenti, logica pubblicitaria e interfaccia utente Web.<\/p>\n<p><strong>Perch\u00e9 microservizi<\/strong><br>\nLa prima forza che ha portato all\u2019aumento dei microservizi \u00e8 stata una reazione contro la normale architettura monolitica. Mentre un&#039;app monolitica \u00e8 un grande programma con molte responsabilit\u00e0, le applicazioni basate su microservizi sono composte da programmi pi\u00f9 piccoli, ciascuno con una singola responsabilit\u00e0. Ci\u00f2 consente ai team di sviluppatori di lavorare in modo indipendente su diversi servizi. Il disaccoppiamento intrinseco incoraggia anche programmi pi\u00f9 piccoli, pi\u00f9 semplici e pi\u00f9 facili da comprendere, in modo che i nuovi sviluppatori possano iniziare a contribuire pi\u00f9 rapidamente. Infine, poich\u00e9 nessun singolo programma rappresenta l&#039;intera applicazione, i servizi possono cambiare direzione senza costi ingenti. Se diventa disponibile una nuova tecnologia che abbia pi\u00f9 senso per un particolare servizio, \u00e8 possibile riscrivere proprio quel servizio. Allo stesso modo, poich\u00e9 i microservizi comunicano in linguaggi diversi, un&#039;applicazione pu\u00f2 essere composta da diverse piattaforme: Ruby, Java, PHP, Node, Go, ecc. senza alcun problema.<\/p>\n<p><strong>Vantaggi<\/strong><\/p>\n<ul>\n<li>I moduli possono essere riutilizzati.<\/li>\n<li>La distribuzione avviene senza intoppi, indipendentemente dall&#039;intera grande applicazione.<\/li>\n<li>Funzionalit\u00e0 facili da aggiungere.<\/li>\n<li>Riduce il tempo di test per testare un modulo anzich\u00e9 tutti.<\/li>\n<li>Le grandi applicazioni tendono ad essere pi\u00f9 difficili da mantenere rispetto a quelle piccole.<\/li>\n<li>Avere una serie di piccole applicazioni ci consente di concentrarci sul lavoro su parti isolate.<\/li>\n<li>Potremmo avere pi\u00f9 possibilit\u00e0 di non danneggiare altre parti dell&#039;applicazione.<\/li>\n<li>Affidabilit\u00e0 e tolleranza ai guasti.<\/li>\n<li>Facile da migrare o aggiornare.<\/li>\n<li>Diversit\u00e0 tecnologica.<\/li>\n<li>Se una singola funzione dell&#039;applicazione non funziona, l&#039;intera applicazione non si interrompe.<\/li>\n<li>Rende pi\u00f9 semplice per un nuovo sviluppatore comprendere la funzionalit\u00e0 di un servizio.<\/li>\n<\/ul>\n<p><strong>Svantaggi<\/strong><br>\nBecause everything is now an independent service, you have to handle requests carefully travelling between your modules. There can be a scenario where any of services may not be responding.<br>\nMultiple databases and transaction management can be painful.<br>\nProductivity will be less till the microservice base is set.<\/p>\n<p><strong>Microservizi monolitici vs<\/strong><br>\nIl diagramma seguente mostra la differenza tra l&#039;app monolitica tradizionale e i microservizi in termini di risorse umane, tempo, manutenzione e complessit\u00e0 di gestione delle applicazioni.<\/p>\n<p><a href=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2024\/01\/image.jpg\"><img decoding=\"async\" class=\"aligncenter wp-image-8490 size-full\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2024\/01\/image.jpg\" alt=\"Immagine\" width=\"510\" height=\"366\"><\/a><\/p>\n<p><strong>Come impostare i microservizi<\/strong><br>\nIl modo strategico per ridurre l&#039;applicazione monolitica \u00e8 dividere i livelli come presentazione, logica aziendale e livelli di accesso ai dati. Una tipica applicazione aziendale \u00e8 costituita da almeno tre diversi tipi di componenti:<\/p>\n<ul>\n<li>Presentation layer \u2013 Components that handle HTTP requests and implement either a (REST) API or an<br>\nHTML-based web UI. In an application that has a sophisticated user interface.<\/li>\n<li>Livello della logica aziendale: componenti che costituiscono il nucleo dell&#039;applicazione in cui vengono implementate le regole aziendali.<\/li>\n<li>Livello di accesso ai dati: componenti che hanno accesso ai componenti dell&#039;infrastruttura come database e broker di messaggi.<\/li>\n<\/ul>\n<p>RailsCarma ha implementato le applicazioni Ruby on Rails sin dalle sue fasi nascenti per lo sviluppo, la formazione, l&#039;implementazione e il contributo alla comunit\u00e0 Rails. Attraverso competenze tecniche affidabili e un eccellente servizio clienti combinati per offrire un&#039;esperienza piacevole ai clienti, RailsCarma fornisce servizi end-to-end <a href=\"https:\/\/www.railscarma.com\/it\/\" target=\"_blank\" rel=\"noopener noreferrer\">Sviluppo di Ruby on Rails,<\/a>consulenza, architettura, gestione ed estensione ad aziende di tutto il mondo. <a href=\"\/it\/contattaci\/\">Contattaci per saperne di pi\u00f9<\/a>.&nbsp;<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-67c83d69 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"67c83d69\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3f364d4b\" data-id=\"3f364d4b\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-29906495 elementor-widget elementor-widget-heading\" data-id=\"29906495\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Iscriviti per gli ultimi aggiornamenti<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2142425b elementor-widget elementor-widget-shortcode\" data-id=\"2142425b\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t\t\t\t<script type=\"text\/javascript\">\n\t\t\t\t\t\tvar gCaptchaSibWidget;\n                        var onloadSibCallbackInvisible = function () {\n\n                            var element = document.getElementsByClassName('sib-default-btn');\n                            var countInvisible = 0;\n                            var indexArray = [];\n                            jQuery('.sib-default-btn').each(function (index, el) {\n                                if ((jQuery(el).attr('id') == \"invisible\")) {\n                                    indexArray[countInvisible] = index;\n                                    countInvisible++\n                                }\n                            });\n\n                            jQuery('.invi-recaptcha').each(function (index, el) {\n                                grecaptcha.render(element[indexArray[index]], {\n                                    'sitekey': jQuery(el).attr('data-sitekey'),\n                                    'callback': sibVerifyCallback,\n                                });\n                            });\n                        };\n\t\t\t\t\t<\/script>\n\t\t\t\t\t                <script src=\"https:\/\/www.google.com\/recaptcha\/api.js?onload=onloadSibCallbackInvisible&render=explicit\" async defer><\/script>\n\t\t\t\t\n\t\t\t<form id=\"sib_signup_form_1\" method=\"post\" class=\"sib_signup_form\" action=\"\">\n\t\t\t\t<div class=\"sib_loader\" style=\"display:none;\"><img\n\t\t\t\t\t\t\tsrc=\"https:\/\/www.railscarma.com\/wp-includes\/images\/spinner.gif\" alt=\"caricatore\"><\/div>\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_action\" value=\"subscribe_form_submit\">\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_id\" value=\"1\">\n                <input type=\"hidden\" name=\"sib_form_alert_notice\" value=\"Please fill out this field\">\n                <input type=\"hidden\" name=\"sib_form_invalid_email_notice\" value=\"Your email address is invalid\">\n                <input type=\"hidden\" name=\"sib_security\" value=\"297ab9f1f5\">\n\t\t\t\t<div class=\"sib_signup_box_inside_1\">\n\t\t\t\t\t<div style=\"\/*display:none*\/\" class=\"sib_msg_disp\">\n\t\t\t\t\t<\/div>\n                                            <div id=\"sib_captcha_invisible\" class=\"invi-recaptcha\" data-sitekey=\"6LdikOAaAAAAAJ6SWrrKVQrtw7TQpQAEnv0HS0G3\"><\/div>\n                    \t\t\t\t\t<p class=\"sib-email-area\">\r\n    <label class=\"sib-email-area\"><\/label>\r\n    <input type=\"email\" class=\"sib-email-area\" name=\"email\" required=\"required\" placeholder=\"Indirizzo e-mail\">\r\n<\/p>\r\n<p class=\"sib-NAME-area\">\r\n    <label class=\"sib-NAME-area\"><\/label>\r\n    <input type=\"text\" class=\"sib-NAME-area\" name=\"NAME\" placeholder=\"Nome\">\r\n<\/p>\r\n<p>\r\n    <input type=\"submit\" id=\"invisible\" class=\"sib-default-btn\" value=\"sottoscrivi\">\r\n<\/p>\t\t\t\t<\/div>\n\t\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"it\"\/><\/form>\n\t\t\t<style>\n\t\t\t\tform#sib_signup_form_1 p.sib-alert-message {\n    padding: 6px 12px;\n    margin-bottom: 20px;\n    border: 1px solid transparent;\n    border-radius: 4px;\n    -webkit-box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n}\nform#sib_signup_form_1 p.sib-alert-message-error {\n    background-color: #f2dede;\n    border-color: #ebccd1;\n    color: #a94442;\n}\nform#sib_signup_form_1 p.sib-alert-message-success {\n    background-color: #dff0d8;\n    border-color: #d6e9c6;\n    color: #3c763d;\n}\nform#sib_signup_form_1 p.sib-alert-message-warning {\n    background-color: #fcf8e3;\n    border-color: #faebcc;\n    color: #8a6d3b;\n}\n\t\t\t<\/style>\n\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t  <div class=\"related-post slider\">\r\n        <div class=\"headline\">Articoli correlati<\/div>\r\n    <div class=\"post-list owl-carousel\">\r\n\r\n            <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Gemma Kaminari\" href=\"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/gemma-di-kaminari\/?related_post_from=37277\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"gemma di Kaminari\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Gemma Kaminari\" href=\"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/gemma-di-kaminari\/?related_post_from=37277\">\r\n        Gemma Kaminari  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Perch\u00e9 assumere sviluppatori Ruby on Rails nel 2026?\" href=\"https:\/\/www.railscarma.com\/it\/blog\/roro\/perche-assumere-sviluppatori-di-ruby-on-rails\/?related_post_from=30627\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"perch\u00e9 assumere sviluppatori di Ruby on Rails nel 2022\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Perch\u00e9 assumere sviluppatori Ruby on Rails nel 2026?\" href=\"https:\/\/www.railscarma.com\/it\/blog\/roro\/perche-assumere-sviluppatori-di-ruby-on-rails\/?related_post_from=30627\">\r\n        Perch\u00e9 assumere sviluppatori Ruby on Rails nel 2026?  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Scraping dei dati nelle rotaie mediante elaborazione CSV\" href=\"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/raschiamento-dei-dati-nei-binari-mediante-lelaborazione-di-csv\/?related_post_from=31591\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/09\/DATA-SCRAPING-IN-RAILS-BY-PROCESSING-CSV.png\" class=\"attachment-full size-full wp-post-image\" alt=\"\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/09\/DATA-SCRAPING-IN-RAILS-BY-PROCESSING-CSV.png 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/09\/DATA-SCRAPING-IN-RAILS-BY-PROCESSING-CSV-300x113.png 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/09\/DATA-SCRAPING-IN-RAILS-BY-PROCESSING-CSV-768x288.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Scraping dei dati nelle rotaie mediante elaborazione CSV\" href=\"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/raschiamento-dei-dati-nei-binari-mediante-lelaborazione-di-csv\/?related_post_from=31591\">\r\n        Scraping dei dati nelle rotaie mediante elaborazione CSV  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Effettua chiamate vocali tramite le applicazioni Web Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/effettuare-chiamate-vocali-tramite-le-applicazioni-web-ruby-on-rails\/?related_post_from=31309\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/07\/MAKE-VOICE-CALLS-THROUGH-RUBY-ON-RAILS-WEB-APPLICATIONS.png\" class=\"attachment-full size-full wp-post-image\" alt=\"\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/07\/MAKE-VOICE-CALLS-THROUGH-RUBY-ON-RAILS-WEB-APPLICATIONS.png 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/07\/MAKE-VOICE-CALLS-THROUGH-RUBY-ON-RAILS-WEB-APPLICATIONS-300x113.png 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/07\/MAKE-VOICE-CALLS-THROUGH-RUBY-ON-RAILS-WEB-APPLICATIONS-768x288.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Effettua chiamate vocali tramite le applicazioni Web Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/effettuare-chiamate-vocali-tramite-le-applicazioni-web-ruby-on-rails\/?related_post_from=31309\">\r\n        Effettua chiamate vocali tramite le applicazioni Web Ruby on Rails  <\/a>\r\n\r\n        <\/div>\r\n      \r\n  <\/div>\r\n\r\n  <script>\r\n      <\/script>\r\n  <style>\r\n    .related-post {}\r\n\r\n    .related-post .post-list {\r\n      text-align: left;\r\n          }\r\n\r\n    .related-post .post-list .item {\r\n      margin: 10px;\r\n      padding: 10px;\r\n          }\r\n\r\n    .related-post .headline {\r\n      font-size: 14px !important;\r\n      color: #999999 !important;\r\n          }\r\n\r\n    .related-post .post-list .item .post_thumb {\r\n      max-height: 220px;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n          }\r\n\r\n    .related-post .post-list .item .post_title {\r\n      font-size: 14px;\r\n      color: #000000;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .post-list .item .post_excerpt {\r\n      font-size: 12px;\r\n      color: #3f3f3f;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .owl-dots .owl-dot {\r\n          }\r\n\r\n      <\/style>\r\n      <script>\r\n      jQuery(document).ready(function($) {\r\n        $(\".related-post .post-list\").owlCarousel({\r\n          items: 2,\r\n          responsiveClass: true,\r\n          responsive: {\r\n            0: {\r\n              items: 1,\r\n            },\r\n            768: {\r\n              items: 2,\r\n            },\r\n            1200: {\r\n              items: 2,\r\n            }\r\n          },\r\n                      rewind: true,\r\n                                loop: true,\r\n                                center: false,\r\n                                autoplay: true,\r\n            autoplayHoverPause: true,\r\n                                nav: true,\r\n            navSpeed: 1000,\r\n            navText: ['<i class=\"fas fa-chevron-left\"><\/i>', '<i class=\"fas fa-chevron-right\"><\/i>'],\r\n                                dots: false,\r\n            dotsSpeed: 1200,\r\n                                                    rtl: false,\r\n          \r\n        });\r\n      });\r\n    <\/script>\r\n  <\/div>","protected":false},"excerpt":{"rendered":"<p>As a business gets bigger, they require more functionalities and thus you can\u2019t help but add new models\/controller to the existing Rails application and sometimes it becomes a monolith. If you are facing a monolith application which has become unmaintainable and difficult to deploy, you need to know some ways to manage it. If your &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.railscarma.com\/it\/blog\/third-party-api-integration-solutions-in-ruby-on-rails\/\"> <span class=\"screen-reader-text\">Soluzioni di integrazione API di terze parti in Ruby on Rails<\/span> Leggi altro \"<\/a><\/p>","protected":false},"author":1,"featured_media":31897,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[384],"tags":[492,676,389,379,427,486,383,677],"class_list":["post-8488","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical-articles","tag-ruby-on-rails-application","tag-microservices","tag-rails","tag-rails-application","tag-railscarma","tag-ruby-on-rails-application-development","tag-ruby-on-rails-development","tag-splitting-monolithic-rails-application"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Splitting Monolithic Rails Application to Microservices<\/title>\n<meta name=\"description\" content=\"As a business gets bigger, they require more functionalities and thus you can\u2019t help but add new models\/controller to the existing Rails application and\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/suddivisione-dellapplicazione-monolitica-in-microservizi\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Splitting Monolithic Rails Application to Microservices\" \/>\n<meta property=\"og:description\" content=\"As a business gets bigger, they require more functionalities and thus you can\u2019t help but add new models\/controller to the existing Rails application and\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/suddivisione-dellapplicazione-monolitica-in-microservizi\/\" \/>\n<meta property=\"og:site_name\" content=\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/RailsCarma\/\" \/>\n<meta property=\"article:published_time\" content=\"2016-06-23T11:27:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-10T13:26:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/Splitting-monolithic-rails-application-to-microservices.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@railscarma\" \/>\n<meta name=\"twitter:site\" content=\"@railscarma\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\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\":\"Article\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\"},\"headline\":\"Splitting Monolithic Rails Application to Microservices\",\"datePublished\":\"2016-06-23T11:27:31+00:00\",\"dateModified\":\"2024-01-10T13:26:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/\"},\"wordCount\":824,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/Splitting-monolithic-rails-application-to-microservices.jpg\",\"keywords\":[\"Articles on ruby on rails application\",\"microservices\",\"rails\",\"rails application\",\"railscarma\",\"ruby on rails application development\",\"ruby on rails development\",\"Splitting Monolithic Rails Application\"],\"articleSection\":[\"Technical Articles\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/\",\"url\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/\",\"name\":\"Splitting Monolithic Rails Application to Microservices\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/Splitting-monolithic-rails-application-to-microservices.jpg\",\"datePublished\":\"2016-06-23T11:27:31+00:00\",\"dateModified\":\"2024-01-10T13:26:50+00:00\",\"description\":\"As a business gets bigger, they require more functionalities and thus you can\u2019t help but add new models\/controller to the existing Rails application and\",\"breadcrumb\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/#primaryimage\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/Splitting-monolithic-rails-application-to-microservices.jpg\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/Splitting-monolithic-rails-application-to-microservices.jpg\",\"width\":800,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.railscarma.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Splitting Monolithic Rails Application to Microservices\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.railscarma.com\/#website\",\"url\":\"https:\/\/www.railscarma.com\/\",\"name\":\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\",\"description\":\"RailsCarma is a Ruby on Rails Development Company in Bangalore. We specialize in Offshore Ruby on Rails Development based out in USA and India. Hire experienced Ruby on Rails developers for the ultimate Web Experience.\",\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.railscarma.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.railscarma.com\/#organization\",\"name\":\"RailsCarma\",\"url\":\"https:\/\/www.railscarma.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"width\":200,\"height\":46,\"caption\":\"RailsCarma\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/RailsCarma\/\",\"https:\/\/x.com\/railscarma\",\"https:\/\/www.linkedin.com\/company\/railscarma\/\",\"https:\/\/myspace.com\/railscarma\",\"https:\/\/in.pinterest.com\/railscarma\/\",\"https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Suddivisione dell&#039;applicazione con binari monolitici in microservizi","description":"Man mano che un&#039;azienda diventa pi\u00f9 grande, richiede pi\u00f9 funzionalit\u00e0 e quindi non puoi fare a meno di aggiungere nuovi modelli\/controller all&#039;applicazione Rails esistente e","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:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/suddivisione-dellapplicazione-monolitica-in-microservizi\/","og_locale":"it_IT","og_type":"article","og_title":"Splitting Monolithic Rails Application to Microservices","og_description":"As a business gets bigger, they require more functionalities and thus you can\u2019t help but add new models\/controller to the existing Rails application and","og_url":"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/suddivisione-dellapplicazione-monolitica-in-microservizi\/","og_site_name":"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","article_publisher":"https:\/\/www.facebook.com\/RailsCarma\/","article_published_time":"2016-06-23T11:27:31+00:00","article_modified_time":"2024-01-10T13:26:50+00:00","og_image":[{"width":800,"height":300,"url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/Splitting-monolithic-rails-application-to-microservices.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_creator":"@railscarma","twitter_site":"@railscarma","twitter_misc":{"Scritto da":"admin","Tempo di lettura stimato":"4 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/#article","isPartOf":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/"},"author":{"name":"admin","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21"},"headline":"Splitting Monolithic Rails Application to Microservices","datePublished":"2016-06-23T11:27:31+00:00","dateModified":"2024-01-10T13:26:50+00:00","mainEntityOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/"},"wordCount":824,"commentCount":0,"publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/Splitting-monolithic-rails-application-to-microservices.jpg","keywords":["Articles on ruby on rails application","microservices","rails","rails application","railscarma","ruby on rails application development","ruby on rails development","Splitting Monolithic Rails Application"],"articleSection":["Technical Articles"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/","url":"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/","name":"Suddivisione dell&#039;applicazione con binari monolitici in microservizi","isPartOf":{"@id":"https:\/\/www.railscarma.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/#primaryimage"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/Splitting-monolithic-rails-application-to-microservices.jpg","datePublished":"2016-06-23T11:27:31+00:00","dateModified":"2024-01-10T13:26:50+00:00","description":"Man mano che un&#039;azienda diventa pi\u00f9 grande, richiede pi\u00f9 funzionalit\u00e0 e quindi non puoi fare a meno di aggiungere nuovi modelli\/controller all&#039;applicazione Rails esistente e","breadcrumb":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/#primaryimage","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/Splitting-monolithic-rails-application-to-microservices.jpg","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/Splitting-monolithic-rails-application-to-microservices.jpg","width":800,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/splitting-monolithic-rails-application-to-microservices\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.railscarma.com\/"},{"@type":"ListItem","position":2,"name":"Splitting Monolithic Rails Application to Microservices"}]},{"@type":"WebSite","@id":"https:\/\/www.railscarma.com\/#website","url":"https:\/\/www.railscarma.com\/","name":"RailsCarma - Societ\u00e0 di sviluppo Ruby on Rails specializzata nello sviluppo offshore","description":"RailsCarma \u00e8 una societ\u00e0 di sviluppo Ruby on Rails a Bangalore. Siamo specializzati nello sviluppo offshore di Ruby on Rails con sede negli Stati Uniti e in India. Assumi sviluppatori esperti di Ruby on Rails per la migliore esperienza Web.","publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.railscarma.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/www.railscarma.com\/#organization","name":"RailsCarma","url":"https:\/\/www.railscarma.com\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","width":200,"height":46,"caption":"RailsCarma"},"image":{"@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/RailsCarma\/","https:\/\/x.com\/railscarma","https:\/\/www.linkedin.com\/company\/railscarma\/","https:\/\/myspace.com\/railscarma","https:\/\/in.pinterest.com\/railscarma\/","https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg"]},{"@type":"Person","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21","name":"amministratore","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/"]}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/posts\/8488","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/comments?post=8488"}],"version-history":[{"count":0,"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/posts\/8488\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/media\/31897"}],"wp:attachment":[{"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/media?parent=8488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/categories?post=8488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/tags?post=8488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}