{"id":15267,"date":"2021-06-30T12:49:52","date_gmt":"2021-06-30T10:49:52","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/?p=15267"},"modified":"2023-06-07T17:59:06","modified_gmt":"2023-06-07T15:59:06","slug":"microservices-transition-with-hexagonal-architecture","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/","title":{"rendered":"How to Transition from Monolithic Systems to Microservices with Hexagonal Architecture"},"content":{"rendered":"\n<p>In March 2020, two of the biggest telecom companies active in Italy, WIND and TRE merged into <strong>WINDTRE<\/strong>. As a result, the new company needed to be reorganized on several fronts, including in relation to <strong>software<\/strong>.&nbsp;<\/p>\n\n\n\n<p>The original companies used different technologies, approaches and legacy systems that needed to be integrated within a more complex single system.<\/p>\n\n\n\n<p>The additional need for a <strong>redefinition of the entire software architecture<\/strong> aimed to provide a new system that could improve ease of maintainability and allow for robust system integration in the short and medium term.&nbsp;<\/p>\n\n\n\n<p>The company therefore transitioned from several software systems based on <strong>monolithic architectures <\/strong>to a new system based on <a href=\"https:\/\/www.codemotion.com\/magazine\/dev-hub\/frontend-dev\/microservice-architecture-front-end\/\" target=\"_blank\" rel=\"noopener\">microservices<\/a>. The aim was to provide a <strong>unified user interface<\/strong> with a couple of ambitious goals:&nbsp;<\/p>\n\n\n\n<p>First, WINDTRE needed to provide users with a unified service despite continuing to use different legacy technologies \u2018under the hood\u2019. That meant reusing both companies&#8217; original software code bases. Second, the new system needed to support a <strong>progressive integration of new unifying technologies <\/strong>that would end up replacing the old systems to form a unique software suite.<\/p>\n\n\n\n<p>To address these challenges, the WINDTRE team leveraged an interesting architectural paradigm that fit perfectly with the need for a modular, microservices-based approach. This paradigm &#8211; <strong>hexagonal architecture<\/strong> &#8211; allows solid, modern, and effective systems to be built at the same time as merging heterogeneous technologies and legacy systems.<\/p>\n\n\n\n<p>For those who may be interested, WINDTRE is on the lookout for experienced JAVA 8, GO, JAVASCRIPT, NODE.JS or REACT.JS developers. Potential candidates should accept their <a href=\"https:\/\/codemo.me\/2T5kahk\" class=\"ek-link\">Software Developer Coding Challenge<\/a>. The winner will be further evaluated by the company, and will also receive a prize of \u20ac500 worth of Amazon vouchers.<\/p>\n\n\n\t\t\t\t<div class=\"wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-faf70449 wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-undefined uagb-block-0502f56c     \"\n\t\t\t\t\tdata-scroll= \"1\"\n\t\t\t\t\tdata-offset= \"30\"\n\t\t\t\t\tstyle=\"\"\n\t\t\t\t>\n\t\t\t\t<div class=\"uagb-toc__wrap\">\n\t\t\t\t\t\t<div class=\"uagb-toc__title\">\n\t\t\t\t\t\t\tTable Of Contents\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"uagb-toc__list-wrap \">\n\t\t\t\t\t\t<ol class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#monolithic-applications-vs-microservices\" class=\"uagb-toc-link__trigger\">Monolithic applications vs. microservices<\/a><li class=\"uagb-toc__list\"><a href=\"#hexagonal-architecture\" class=\"uagb-toc-link__trigger\">Hexagonal Architecture<\/a><ul class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#advantages-of-hexagonal-architecture\" class=\"uagb-toc-link__trigger\">Advantages of hexagonal architecture<\/a><\/li><\/ul><\/li><li class=\"uagb-toc__list\"><a href=\"#lambada-putting-hexagonal-architecture-into-practice\" class=\"uagb-toc-link__trigger\">Lambada: putting hexagonal architecture into practice<\/a><li class=\"uagb-toc__list\"><a href=\"#conclusions\" class=\"uagb-toc-link__trigger\">Conclusions<\/a><\/ul><\/ol>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\n\n\n<h2 class=\"wp-block-heading\" id=\"h-monolithic-applications-vs-microservices\">Monolithic applications vs. microservices<\/h2>\n\n\n\n<p>Before going into detail about the work WINDTRE has done, it is worth clarifying the differences between monolithic and microservices-based applications.<\/p>\n\n\n\n<p><strong>Monolithic applications<\/strong> represent the traditional way of building software. Applications are divided into several modules, such as a database, a front-end and a back-end. The latter is usually the foundation of the application, in which data and visualizations represent the communication aspect and most of the core business logic is implemented. This monolith is <strong>a single logical executable<\/strong> that governs the whole application\u2019s logic.<\/p>\n\n\n\n<p>Monolithic applications have the advantage of having relatively <strong>simple structures<\/strong> (given the low number of modules), but present several disadvantages. For instance, altering any part&nbsp; of the system creates a need to re-build and deploy the whole application, irrespective of the size of the changes.&nbsp;<\/p>\n\n\n\n<p>This has implications for the <strong>development cycle<\/strong>, where new releases need to be scheduled according to a (usually) rigid schedule. Reuse of code is also often limited across monolithic applications.&nbsp;<\/p>\n\n\n\n<p>Other drawbacks include <strong>low scalability<\/strong> and several constraints relating to the software stack used to build the application.<\/p>\n\n\n\n<p>Luckily, we can now solve many &#8211; if not all &#8211; of these issues by relying on <strong>microservices<\/strong>. A microservice is a single module that implements specific capabilities; these are also made available to other modules via <a href=\"https:\/\/www.codemotion.com\/magazine\/tag\/api\/\" class=\"ek-link\">Application Programming Interfaces (APIs<\/a>). Each microservice usually encapsulates a particular business capability and might use specific technologies. These are completely hidden from the other modules by the only available interface, which is represented by the APIs.<\/p>\n\n\n\n<p>Microservices offer several advantages: <strong>modular <\/strong>by nature, they are consequently good for <strong>high scalability<\/strong> and for <strong>code reuse<\/strong>. Introducing a change to a single microservice does not require restarting an entire system: the restart can be limited to a single module, allowing a more agile management of the development cycle.<\/p>\n\n\n\n<p>However, there are some drawbacks to this model. <strong>Microservices orchestration <\/strong>is one of them. Many microservices demand the implementation of specific logics that can properly govern integration. Additionally, communication among microservices may introduce <strong>latency,<\/strong> which can be a problem in some contexts.<\/p>\n\n\n\n<p>Solving <strong>microservices integration <\/strong>may be not straightforward. This is especially true when demand for such a solution arises from a process connected to transitioning from monolith to microservices. The use of a specific architecture to orchestrate microservices will significantly ease this process.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-hexagonal-architecture\">Hexagonal Architecture<\/h2>\n\n\n\n<p>As previously mentioned, WINDTRE\u2019s integration needs demanded the combination of different technologies, including different data sources and management tools.&nbsp; In the future, legacy systems would need to be replaced without affecting the UX.<\/p>\n\n\n\n<p>To implement the required logic, the WINDTRE team opted for <strong>hexagonal architecture<\/strong>. As this model suggests, they used it to create loosely-coupled application components, interconnected through <strong>adapters<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/zjJyH82c8GLmDobwzZK5iB685_1bE9L_JOA_s3jpjzeAPeaoRppEwhONwprETsf_LX012xT9PEKvaKdynuEXhVWbRolDGyGYRQ2b1XkbcwysIqt1eWQWj_g5AFE2cNw0uXz7-dIr\" alt=\"A diagram representing the hexagonal architecture model\"\/><figcaption class=\"wp-element-caption\"><em>The hexagonal architecture model<\/em>.<\/figcaption><\/figure>\n\n\n\n<p>This produced a scheme in which the core business logic is protected from external interactions through specific adapters, thereby avoiding direct interaction.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/rC85MvYEnOGvhmfVxRwnEPT91FOKIKm2jMT2xklcEmNzbFyDPpasmL_ZzzsZOw_96PqdHL5j_t7zcc-HbrEejiDWPVaE2gLit7gkEZ2pgsoUYogEvc9m_VEbGj0tbqBn5nLHzkwX\" alt=\"A diagram representing how business logic is encapsulated in the context of hexagonal architecture.\"\/><figcaption class=\"wp-element-caption\"><em>Basic structure showing how business logic is encapsulated in the context of hexagonal architecture<\/em>.<\/figcaption><\/figure>\n\n\n\n<p>Implementing this basic concept involves creating one set of microservices for the business logic, and another set for the adapters, orchestrating each hexagonal microservices subset as a single logic unit.&nbsp;<\/p>\n\n\n\n<p>One alternative is to encapsulate the business logic and adapters in a single microservice, so that the logic unit matches the service. Here, it is important to ensure that the \u2018inside\u2019 (represented in the previous figure) remains independent of the \u2018outside\u2019, so that any replacement of the core logic is still workable.<\/p>\n\n\n\n<p>The following image shows how logic units can communicate with each other by implementing the concepts described above.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/4Vuk9X13ou2CpJSndFnsf_KodEHcpyTaqvd611e0gsgaWMDaVsx78mi7ebII8TktEXNxDgvK4sGeFL2YbJBFhsmHEOyPG-tnZMG6nRLXKzTrnA0rjlw-mOy3xvXiIdp1kCckxFHG\" alt=\"Diagram depicting microservices' communication.\"\/><figcaption class=\"wp-element-caption\"><em>Diagram depicting microservices&#8217; communication.<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"gb-headline gb-headline-545c8821 gb-headline-text\">Advantages of hexagonal architecture<\/h3>\n\n\n\n<p>The WINDTRE team realised that an hexagonal architecture offered <strong>two major advantages<\/strong>.&nbsp;<\/p>\n\n\n\n<p>First, the possibility of isolating the core business logic from the interface (adapters), allowing easy replacement of modules without impact on the system as a whole.&nbsp;<\/p>\n\n\n\n<p>Considering the initial requirements of their heterogeneous systems, and the necessity of merging them, this operation perfectly matched the demands arising from a corporate merger.<\/p>\n\n\n\n<p>Another significant advantage of such an architectural choice is <strong>testing<\/strong>. Since each logic unit is independent, designing a set of tests for a single hexagon becomes easy, whether for the adapters or the core features. Case testing is crucial for effective <a href=\"https:\/\/www.codemotion.com\/magazine\/dev-hub\/backend-dev\/troubleshooting-debugging-microservices\/\" class=\"ek-link\">troubleshooting and debugging of microservices<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-lambada-putting-hexagonal-architecture-into-practice\">Lambada: putting hexagonal architecture into practice<\/h2>\n\n\n\n<p>Following their analysis, WINDTRE has subsequently used hexagonal architecture for microservices in many projects, including \u2018<strong>Lambada\u2019<\/strong>. This amusingly-named endeavour required implementation of what is described above with an additional lambda integration.<\/p>\n\n\n\n<p>Basically, Lambada is a <strong>Java Spring container that acts as an orchestrator<\/strong>. It provides several micro-functionalities, implemented as <strong>Lambdas<\/strong>. In addition, Lambada makes it possible to implement more complex features as separate microservices, which are queried via HTTP when necessary. Such microservices are implemented singly as hexagons, containing a core business logic that communicates only with the adapters, which in turn provide the interface for other services, including the Lambada orchestrator.<\/p>\n\n\n\n<p>Lambada is particularly interesting because it reduces system complexity by decreasing the number of microservices to just those that are strictly necessary, thus reducing the number of complex features to be implemented as Lambdas. This positively impacts maintainability, since it <strong>reduces troubleshooting<\/strong> quite significantly by limiting the number of independent services to be tested and monitored.<\/p>\n\n\n\n<p>Another advantage is the ability to release and deploy specific modules (or microservices) without having to stop the orchestrator, thus offering an agile approach to the development cycle.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusions\">Conclusions<\/h2>\n\n\n\n<p>Transitioning from a monolithic architecture to microservices requires splitting several functionalities into logic-separated modules, and encapsulating those modules in microservices. As shown above, micro-functionalities allow this to be achieved through lambda functions and a tailor-made solution such as Lambada.&nbsp;<\/p>\n\n\n\n<p>In this case, the hexagonal architecture proved particularly effective in separating the business logic represented by legacy technologies (to be replaced in the near future) from the communication interface.<\/p>\n\n\n\n<p>This clever approach provided <strong>flexibility<\/strong>, <strong>modularity<\/strong> and the chance to replace any module with a newer one while keeping the application running.<\/p>\n\n\n\n<p>The WINDTRE case study offers an incredible insight into how a monolith-to-microservices transition is feasible even when combined with a complex merger if those responsible are open to investigating and exploring creative solutions.<\/p>\n\n\n\n<p>We hope you have enjoyed this article. If you want to get in touch with WINDTRE and are an experienced software developer, have a go at their <a href=\"https:\/\/codemo.me\/2T5kahk\" class=\"ek-link\">Software Developer Coding Challenge<\/a>. WINDTRE is hiring; this coding challenge is an opportunity for you to demonstrate your skills and also win a prize of \u20ac500 worth of Amazon vouchers.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In March 2020, two of the biggest telecom companies active in Italy, WIND and TRE merged into WINDTRE. As a result, the new company needed to be reorganized on several fronts, including in relation to software.&nbsp; The original companies used different technologies, approaches and legacy systems that needed to be integrated within a more complex&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/\">Read more<\/a><\/p>\n","protected":false},"author":3,"featured_media":15278,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":5,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[3355],"tags":[7192,7085],"collections":[],"class_list":{"0":"post-15267","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-microservices","8":"tag-api","9":"tag-service-oriented-architecture","10":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to Transition from Monolithic Systems to Microservices with Hexagonal Architecture - Codemotion Magazine<\/title>\n<meta name=\"description\" content=\"Learn how to transition from monolith to microservices, merge several technologies and maintain UX and UI unaltered with this case study.\" \/>\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.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Transition from Monolithic Systems to Microservices with Hexagonal Architecture\" \/>\n<meta property=\"og:description\" content=\"Learn how to transition from monolith to microservices, merge several technologies and maintain UX and UI unaltered with this case study.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-06-30T10:49:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-07T15:59:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Vito Gentile\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ViGentile\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vito Gentile\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/\"},\"author\":{\"name\":\"Vito Gentile\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/f9c99d8dfb99900d709bb8199225d313\"},\"headline\":\"How to Transition from Monolithic Systems to Microservices with Hexagonal Architecture\",\"datePublished\":\"2021-06-30T10:49:52+00:00\",\"dateModified\":\"2023-06-07T15:59:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/\"},\"wordCount\":1386,\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture.jpg\",\"keywords\":[\"API\",\"Service Oriented Architecture\"],\"articleSection\":[\"Microservices\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/\",\"name\":\"How to Transition from Monolithic Systems to Microservices with Hexagonal Architecture - Codemotion Magazine\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture.jpg\",\"datePublished\":\"2021-06-30T10:49:52+00:00\",\"dateModified\":\"2023-06-07T15:59:06+00:00\",\"description\":\"Learn how to transition from monolith to microservices, merge several technologies and maintain UX and UI unaltered with this case study.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/#primaryimage\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture.jpg\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture.jpg\",\"width\":1200,\"height\":628,\"caption\":\"How to Transition from Monolithic Systems to Microservices with Hexagonal Architecture\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Microservices\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/microservices\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to Transition from Monolithic Systems to Microservices with Hexagonal Architecture\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Codemotion.Italy\/\",\"https:\/\/x.com\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/f9c99d8dfb99900d709bb8199225d313\",\"name\":\"Vito Gentile\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ebcb5b885a4f1669578d08a55deb81064893c07c1b35b7b36eb059cce730ae90?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ebcb5b885a4f1669578d08a55deb81064893c07c1b35b7b36eb059cce730ae90?s=96&d=mm&r=g\",\"caption\":\"Vito Gentile\"},\"description\":\"I\u2019m a data scientist, tech writer, software developer with experience in mobile, web (full-stack) and Python programming, and former researcher with interests in human-computer interaction. I thus have a multi-faceted experience in the area of software development, and that\u2019s why I love my job(s)!\",\"sameAs\":[\"https:\/\/vitogentile.it\",\"https:\/\/www.linkedin.com\/in\/vitogentile\/en\",\"https:\/\/x.com\/ViGentile\"],\"url\":\"https:\/\/www.codemotion.com\/magazine\/author\/vito-gentile\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Transition from Monolithic Systems to Microservices with Hexagonal Architecture - Codemotion Magazine","description":"Learn how to transition from monolith to microservices, merge several technologies and maintain UX and UI unaltered with this case study.","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.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/","og_locale":"en_US","og_type":"article","og_title":"How to Transition from Monolithic Systems to Microservices with Hexagonal Architecture","og_description":"Learn how to transition from monolith to microservices, merge several technologies and maintain UX and UI unaltered with this case study.","og_url":"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2021-06-30T10:49:52+00:00","article_modified_time":"2023-06-07T15:59:06+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture.jpg","type":"image\/jpeg"}],"author":"Vito Gentile","twitter_card":"summary_large_image","twitter_creator":"@ViGentile","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Vito Gentile","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/"},"author":{"name":"Vito Gentile","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/f9c99d8dfb99900d709bb8199225d313"},"headline":"How to Transition from Monolithic Systems to Microservices with Hexagonal Architecture","datePublished":"2021-06-30T10:49:52+00:00","dateModified":"2023-06-07T15:59:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/"},"wordCount":1386,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture.jpg","keywords":["API","Service Oriented Architecture"],"articleSection":["Microservices"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/","url":"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/","name":"How to Transition from Monolithic Systems to Microservices with Hexagonal Architecture - Codemotion Magazine","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture.jpg","datePublished":"2021-06-30T10:49:52+00:00","dateModified":"2023-06-07T15:59:06+00:00","description":"Learn how to transition from monolith to microservices, merge several technologies and maintain UX and UI unaltered with this case study.","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture.jpg","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture.jpg","width":1200,"height":628,"caption":"How to Transition from Monolithic Systems to Microservices with Hexagonal Architecture"},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/microservices\/microservices-transition-with-hexagonal-architecture\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Microservices","item":"https:\/\/www.codemotion.com\/magazine\/microservices\/"},{"@type":"ListItem","position":3,"name":"How to Transition from Monolithic Systems to Microservices with Hexagonal Architecture"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/f9c99d8dfb99900d709bb8199225d313","name":"Vito Gentile","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ebcb5b885a4f1669578d08a55deb81064893c07c1b35b7b36eb059cce730ae90?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ebcb5b885a4f1669578d08a55deb81064893c07c1b35b7b36eb059cce730ae90?s=96&d=mm&r=g","caption":"Vito Gentile"},"description":"I\u2019m a data scientist, tech writer, software developer with experience in mobile, web (full-stack) and Python programming, and former researcher with interests in human-computer interaction. I thus have a multi-faceted experience in the area of software development, and that\u2019s why I love my job(s)!","sameAs":["https:\/\/vitogentile.it","https:\/\/www.linkedin.com\/in\/vitogentile\/en","https:\/\/x.com\/ViGentile"],"url":"https:\/\/www.codemotion.com\/magazine\/author\/vito-gentile\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture-600x400.jpg","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture-600x600.jpg","author_info":{"display_name":"Vito Gentile","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/vito-gentile\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture.jpg",1200,628,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture-150x150.jpg",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture-300x157.jpg",300,157,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture-768x402.jpg",768,402,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture-1024x536.jpg",1024,536,true],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture.jpg",1200,628,false],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture.jpg",1200,628,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture.jpg",100,52,false],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture-180x128.jpg",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture-896x504.jpg",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture-400x225.jpg",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture-600x400.jpg",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/How-to-Transition-from-Monolithic-Systems-to-Microservices-with-Hexagonal-Architecture-600x600.jpg",600,600,true]},"uagb_author_info":{"display_name":"Vito Gentile","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/vito-gentile\/"},"uagb_comment_info":0,"uagb_excerpt":"In March 2020, two of the biggest telecom companies active in Italy, WIND and TRE merged into WINDTRE. As a result, the new company needed to be reorganized on several fronts, including in relation to software.&nbsp; The original companies used different technologies, approaches and legacy systems that needed to be integrated within a more complex&#8230;&hellip;","lang":"en","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/15267","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=15267"}],"version-history":[{"count":6,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/15267\/revisions"}],"predecessor-version":[{"id":21250,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/15267\/revisions\/21250"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/15278"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=15267"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=15267"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=15267"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=15267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}