{"id":24606,"date":"2021-10-18T17:04:32","date_gmt":"2021-10-18T15:04:32","guid":{"rendered":"https:\/\/sixphere.com\/blog\/clean-architectures-and-ddd-a-practical-journey-part-2\/"},"modified":"2025-04-11T11:13:46","modified_gmt":"2025-04-11T09:13:46","slug":"clean-architectures-and-ddd-a-practical-journey-part-2","status":"publish","type":"post","link":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-2\/","title":{"rendered":"Clean architectures and DDD: A practical journey. Part 2"},"content":{"rendered":"\n<div class=\"et_d4_element et_pb_section et_pb_section_0  et_pb_css_mix_blend_mode et_section_regular et_block_section\" >\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_d4_element et_pb_row et_pb_row_0  et_pb_css_mix_blend_mode et_block_row\">\n\t\t\t\t<div class=\"et_d4_element et_pb_column_4_4 et_pb_column et_pb_column_0  et_pb_css_mix_blend_mode et-last-child et_block_column\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_0  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><h1><\/h1><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_1  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div><div class=\"et_d4_element et_pb_row et_pb_row_1  et_pb_css_mix_blend_mode et_block_row\">\n\t\t\t\t<div class=\"et_d4_element et_pb_column_4_4 et_pb_column et_pb_column_1  et_pb_css_mix_blend_mode et-last-child et_block_column\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_2  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><p><span style=\"text-decoration: underline;\"><a href=\"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-1\/\">In the previous post of this series on clean architectures and DDD<\/a><\/span>, we introduced the basic concepts of this architecture and discussed the layered design philosophy, its elements, fundamental characteristics, and, of course, the advantages of its use.<\/p>\n<p>At this point, it is worth asking <strong>how to take action<\/strong>. In other words, given a functional problem or a use case to implement, how do we apply DDD? Throughout this and the following posts in the series, we will cover the following points:  <\/p>\n<ul>\n<li>Approach to a real functional problem.<\/li>\n<li>Application and use of ubiquitous language.<\/li>\n<li>Strategic design of the solution.<\/li>\n<li>Tactical design and implementation.<\/li>\n<\/ul><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_d4_element et_pb_image et_pb_image_0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<span class=\"et_pb_image_wrap \"><img loading=\"lazy\" decoding=\"async\" width=\"1400\" height=\"1008\" src=\"https:\/\/puntazo.sixphere.com\/wp-content\/uploads\/2021\/09\/4c56a51a-964d-4546-b8e0-0e658535e87c.png\" alt=\"Hexagonal architecture diagram\" title=\"Hexagonal architecture diagram\" srcset=\"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/09\/4c56a51a-964d-4546-b8e0-0e658535e87c.png 1400w, https:\/\/sixphere.com\/wp-content\/uploads\/2021\/09\/4c56a51a-964d-4546-b8e0-0e658535e87c-1280x922.png 1280w, https:\/\/sixphere.com\/wp-content\/uploads\/2021\/09\/4c56a51a-964d-4546-b8e0-0e658535e87c-980x706.png 980w, https:\/\/sixphere.com\/wp-content\/uploads\/2021\/09\/4c56a51a-964d-4546-b8e0-0e658535e87c-480x346.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 1400px, 100vw\" class=\"wp-image-18617\" \/><\/span>\n\t\t\t<\/div><div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_3  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><h3>Problem: Control of operations in manufacturing<\/h3>\n<p>Let's take as an example <strong>a characteristic digitization problem in a manufacturing company<\/strong> and its production flow, where operators must perform certain tasks to complete a work order that ultimately enables the manufacturing of a product.<\/p>\n<p>The usual way operators work is as follows:<\/p>\n<ul>\n<li>For each work order they are given, they take one or more of the operations they need to perform, based on their knowledge and certifications, and begin working on them.<\/li>\n<li>They mark the task as assigned to the operator and in progress, so that no one else takes it again.<\/li>\n<li>Once the task is completed, they mark it as finished and return to the beginning of the process.<\/li>\n<\/ul>\n<p>It is important to note, <strong>as a restriction<\/strong>, that operations can only be in one state at a time; that is, they are either to be done, in progress, or finished. In summary, their flow is as follows: <\/p><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_d4_element et_pb_image et_pb_image_1\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<span class=\"et_pb_image_wrap \"><img loading=\"lazy\" decoding=\"async\" width=\"631\" height=\"209\" src=\"https:\/\/puntazo.sixphere.com\/wp-content\/uploads\/2021\/10\/dd0f0494-b9aa-46e8-baf5-2dd94a3b1f82.png\" alt=\"Simple workflow for operation management\" title=\"Simple workflow for operation management\" srcset=\"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/10\/dd0f0494-b9aa-46e8-baf5-2dd94a3b1f82.png 631w, https:\/\/sixphere.com\/wp-content\/uploads\/2021\/10\/dd0f0494-b9aa-46e8-baf5-2dd94a3b1f82-480x159.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 631px, 100vw\" class=\"wp-image-18618\" \/><\/span>\n\t\t\t<\/div><div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_4  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><p>Let's see how we can implement this problem!<\/p>\n<h3>Our ally, the ubiquitous language. Business concepts <\/h3>\n<blockquote>\n<p data-renderer-start-pos=\"2\">The use of language on a project is subtle but all-important [\u2026] to create a supple, knowledge-rich design calls for a versatile, shared team language, and a lively experimentation with language that seldom happens on software projects.<\/p>\n<p>&nbsp;<\/p>\n<p data-renderer-start-pos=\"241\">Eric Evans - <em data-renderer-mark=\"true\">Domain-driven design<\/em>. pp.23 - 24. <\/p>\n<\/blockquote>\n<p><strong>One of the most important parts of DDD is the language<\/strong>. From the team sessions (development team and domain experts, of course), a shared language must emerge that explains the model unambiguously. To achieve this, special attention must be paid to what the domain experts communicate to us.  <\/p>\n<p>For this particular example, we will take the previous explanation as the information we have from the domain (let's imagine that it was an expert who provided it to us) and extract, in a brief manner, the most important concepts and entities:<\/p>\n<ul>\n<li><b>Operator<\/b>: A technical user who performs the operations. Each operator has skills that will allow them to execute a specific operation or not.  <\/li>\n<li><b>Order<\/b>: A work order is the set of operations that one or more operators must carry out to produce a good or service, using certain consumable resources. <\/li>\n<li><b>Operation<\/b>: Operations are the smallest unit of work that an operator must perform to complete a work order. All operations belong to a specific order, must be executed by operators with the necessary skills, and are changed in status during the operator's workflow. They can be in one of three different states: TODO, DOING, and DONE.   <\/li>\n<\/ul><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_5  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><h3>Strategic Design: the moment of truth<\/h3>\n<p>During the strategic design phase, the development team, together with domain experts, must define the <strong><em>bounded contexts<\/em><\/strong>, the ubiquitous language, and the <strong><em>context maps<\/em><\/strong> that explain the domain of the problem.<\/p>\n<p>To do this, it is recommended to follow, among other <a href=\"https:\/\/www.youtube.com\/watch?v=mLXQIYEwK24\"><span style=\"text-decoration: underline;\">techniques, <em>Event Storming<\/em><\/span><\/a>. With this technique, we can define the behavior within our domain, identify the elements involved, and understand how they are related to each other. All this information will later help determine the <strong><em>building blocks<\/em><\/strong> of our <em>software <\/em>project.  <\/p>\n<p>Continuing with the proposed example, in the following image, you can see a <strong>model of the state change of operations<\/strong>.<\/p><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_d4_element et_pb_image et_pb_image_2\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<span class=\"et_pb_image_wrap \"><img loading=\"lazy\" decoding=\"async\" width=\"1329\" height=\"346\" src=\"https:\/\/puntazo.sixphere.com\/wp-content\/uploads\/2021\/10\/37002449-2301-4f9b-913e-be6e3cd3585e.png\" alt=\"Complete flow diagram of the operations system\" title=\"Complete flow diagram of the operations system\" srcset=\"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/10\/37002449-2301-4f9b-913e-be6e3cd3585e.png 1329w, https:\/\/sixphere.com\/wp-content\/uploads\/2021\/10\/37002449-2301-4f9b-913e-be6e3cd3585e-1280x333.png 1280w, https:\/\/sixphere.com\/wp-content\/uploads\/2021\/10\/37002449-2301-4f9b-913e-be6e3cd3585e-980x255.png 980w, https:\/\/sixphere.com\/wp-content\/uploads\/2021\/10\/37002449-2301-4f9b-913e-be6e3cd3585e-480x125.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 1329px, 100vw\" class=\"wp-image-18619\" \/><\/span>\n\t\t\t<\/div><div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_6  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><p>From this image and its analysis, and following the <em>Event Storming<\/em> nomenclature, enough domain information can be gathered to make a first implementation. But we will leave that for the next post. <\/p>\n\n<p><em><strong>In the next chapter of this series<\/strong>, the tactical design and implementation of the solution will be carried out.<\/em><\/p><\/div>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div><div class=\"et_d4_element et_pb_row et_pb_row_2  et_pb_css_mix_blend_mode et_block_row\">\n\t\t\t\t<div class=\"et_d4_element et_pb_column_4_4 et_pb_column et_pb_column_2  et_pb_css_mix_blend_mode et-last-child et_block_column\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_7  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><h2 style=\"font-size: 30px;\">Want to take the first step in digitalization? Call us with no obligation, and we'll design your Minimum Viable Product. <\/h2><\/div>\n\t\t\t<\/div><div class=\"et_pb_button_module_wrapper et_pb_button_0_wrapper et_pb_button_alignment_center et_pb_module \">\n\t\t\t\t<a class=\"et_pb_button et_d4_element et_pb_button_0 et_pb_bg_layout_light et_block_module\" href=\"https:\/\/meetings.hubspot.com\/jesus-maria-jurado\" target=\"_blank\">Schedule a meeting with us<\/a>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div><div class=\"et_d4_element et_pb_section et_pb_section_1 more-related-blogs-section et_pb_with_background  et_pb_css_mix_blend_mode et_section_regular et_block_section\" >\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_d4_element et_pb_row et_pb_row_3  et_pb_css_mix_blend_mode et_block_row\">\n\t\t\t\t<div class=\"et_d4_element et_pb_column_4_4 et_pb_column et_pb_column_3  et_pb_css_mix_blend_mode et-last-child et_block_column\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_8  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><h3 style=\"font-size: 40px\">Here you have <span style=\"color: #ffa327;\">more<\/span><\/h3><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_d4_element dsm_button dsm_button_0 et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module_inner\">\n\t\t\t\t\t<div class=\"et_pb_button_module_wrappers dsm_button_0_wrapper  et_pb_module\">\n\t\t\t\t<a class=\"et_pb_button et_pb_button_one et_pb_bg_layout_light dsm-none \"  href=\"https:\/\/sixphere.com\/en\/sixphere-world-blogs-news\/\" data-dsm-lightbox-id=\"dsm_button_one_lightbox dsm_button_0\">All blogs<\/a>\n\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div><div class=\"et_d4_element et_pb_row et_pb_row_4  et_pb_css_mix_blend_mode et_block_row\">\n\t\t\t\t<div class=\"et_d4_element et_pb_column_4_4 et_pb_column et_pb_column_4  et_pb_css_mix_blend_mode et-last-child et_block_column\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_with_border et_pb_module et_d4_element et_pb_blog_0  et_pb_css_mix_blend_mode et_pb_blog_grid_wrapper et_pb_bg_layout_light\">\n\t\t\t\t\t<div class=\"et_pb_blog_grid clearfix \">\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"et_pb_ajax_pagination_container\">\n\t\t\t\t\t\t<div class=\"et_pb_salvattore_content\" data-columns>\n\t\t\t<article id=\"post-25657\" class=\"et_pb_post clearfix et_pb_blog_item_0_0 post-25657 post type-post status-publish format-standard has-post-thumbnail hentry category-automation-iiot category-ia-machine-learning-en category-sin-categoria category-technology-innovation tag-digital-transformation tag-edge-iot-en tag-machine-learning-en\">\n\n\t\t\t\t<div class=\"et_pb_image_container\"><a href=\"https:\/\/sixphere.com\/en\/blog\/from-pixels-to-action-how-we-developed-the-brain-of-an-autonomous-rover-with-embedded-computer-vision\/\" class=\"entry-featured-image-url\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/sixphere.com\/wp-content\/uploads\/2025\/10\/rover-400x250.png\" alt=\"From pixels to action: how we developed the brain of an autonomous rover with embedded computer vision\" class=\"\" srcset=\"https:\/\/sixphere.com\/wp-content\/uploads\/2025\/10\/rover-e1760106930778.png 479w, https:\/\/sixphere.com\/wp-content\/uploads\/2025\/10\/rover-400x250.png 480w \" sizes=\"(max-width:479px) 479px, 100vw \"  width=\"400\" height=\"250\" \/><\/a><\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h4 class=\"entry-title\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/sixphere.com\/en\/blog\/from-pixels-to-action-how-we-developed-the-brain-of-an-autonomous-rover-with-embedded-computer-vision\/\">From pixels to action: how we developed the brain of an autonomous rover with embedded computer vision<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<\/h4>\n\t\t\t\t\n\t\t\t\t\t<p class=\"post-meta\"><span class=\"published\">10 October 2025<\/span><\/p><div class=\"post-content\"><div class=\"post-content-inner\"><p>Our team faced the challenge of developing the complete brain for an autonomous rover, a system that required visual perception and real-time decision-making on low-power hardware. This case study is a technical deep dive into our process: from the implementation of the Mask R-CNN segmentation model for accurate object identification, to the acceleration of performance on a Raspberry Pi using a Coral TPU accelerator. Discover how we overcame the challenges of model optimization and quantization in TensorFlow to deliver a robust and efficient Edge AI solution for intelligent automation.  <\/p>\n<\/div><a href=\"https:\/\/sixphere.com\/en\/blog\/from-pixels-to-action-how-we-developed-the-brain-of-an-autonomous-rover-with-embedded-computer-vision\/\" class=\"more-link\">read more<\/a><\/div>\t\t\t\n\t\t\t<\/article>\n\t\t\t\t\n\t\t\t<article id=\"post-24559\" class=\"et_pb_post clearfix et_pb_blog_item_0_1 post-24559 post type-post status-publish format-standard has-post-thumbnail hentry category-digitalization category-paperless-document-management category-production tag-document-management tag-industry-4-0 tag-paperless-en\">\n\n\t\t\t\t<div class=\"et_pb_image_container\"><a href=\"https:\/\/sixphere.com\/en\/blog\/json-schema-and-its-role-in-document-digitalization\/\" class=\"entry-featured-image-url\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/sixphere.com\/wp-content\/uploads\/2024\/12\/pexels-tima-miroshnichenko-5717310-1-400x250.jpg\" alt=\"JSON Schema and its role in document digitalization\" class=\"\" srcset=\"https:\/\/sixphere.com\/wp-content\/uploads\/2024\/12\/pexels-tima-miroshnichenko-5717310-1-scaled.jpg 479w, https:\/\/sixphere.com\/wp-content\/uploads\/2024\/12\/pexels-tima-miroshnichenko-5717310-1-400x250.jpg 480w \" sizes=\"(max-width:479px) 479px, 100vw \"  width=\"400\" height=\"250\" \/><\/a><\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h4 class=\"entry-title\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/sixphere.com\/en\/blog\/json-schema-and-its-role-in-document-digitalization\/\">JSON Schema and its role in document digitalization<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<\/h4>\n\t\t\t\t\n\t\t\t\t\t<p class=\"post-meta\"><span class=\"published\">2 December 2024<\/span><\/p><div class=\"post-content\"><div class=\"post-content-inner\"><p>In the industrial sector, all manufacturing processes and items are documented. In this blog, we present the benefits of using the JSON Schema standard and the power of this technology when integrated with the Formly library to visualize and manage paperless documentation, eliminating large volumes of physical paper. <\/p>\n<\/div><a href=\"https:\/\/sixphere.com\/en\/blog\/json-schema-and-its-role-in-document-digitalization\/\" class=\"more-link\">read more<\/a><\/div>\t\t\t\n\t\t\t<\/article>\n\t\t\t\t\n\t\t\t<article id=\"post-24615\" class=\"et_pb_post clearfix et_pb_blog_item_0_2 post-24615 post type-post status-publish format-standard has-post-thumbnail hentry category-digitalization category-production tag-digital-transformation tag-industry-4-0\">\n\n\t\t\t\t<div class=\"et_pb_image_container\"><a href=\"https:\/\/sixphere.com\/en\/blog\/digitalization-of-processes-key-phases-and-tasks\/\" class=\"entry-featured-image-url\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/02\/SIXPHERE-5-herramientas-para-responsables-de-una-planta-industrial-400x250.jpg\" alt=\"Digitalization of processes: key phases and tasks\" class=\"\" srcset=\"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/02\/SIXPHERE-5-herramientas-para-responsables-de-una-planta-industrial.jpg 479w, https:\/\/sixphere.com\/wp-content\/uploads\/2021\/02\/SIXPHERE-5-herramientas-para-responsables-de-una-planta-industrial-400x250.jpg 480w \" sizes=\"(max-width:479px) 479px, 100vw \"  width=\"400\" height=\"250\" \/><\/a><\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h4 class=\"entry-title\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/sixphere.com\/en\/blog\/digitalization-of-processes-key-phases-and-tasks\/\">Digitalization of processes: key phases and tasks<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<\/h4>\n\t\t\t\t\n\t\t\t\t\t<p class=\"post-meta\"><span class=\"published\">22 May 2024<\/span><\/p><div class=\"post-content\"><div class=\"post-content-inner\"><p>The digitalization of production processes in a manufacturing industry is a complex task that requires meticulous planning and precise execution. Each phase of the project is crucial to ensure a successful and sustainable transformation. <\/p>\n<\/div><a href=\"https:\/\/sixphere.com\/en\/blog\/digitalization-of-processes-key-phases-and-tasks\/\" class=\"more-link\">read more<\/a><\/div>\t\t\t\n\t\t\t<\/article>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div> \n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n","protected":false},"excerpt":{"rendered":"<p>What is Domain-Driven Design and the principle of clean architectures? In this series of posts, we explain what it is, why we like it, and how to apply it. In this new post, we get to work modeling a specific functionality following the DDD philosophy.  <\/p>\n","protected":false},"author":8,"featured_media":23886,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[185],"tags":[187,188,186],"class_list":["post-24606","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology-innovation","tag-architecture","tag-ddd-en","tag-development"],"acf":{"cuerpo":"<p><span style=\"text-decoration: underline;\"><a href=\"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-1\/\">In the previous post of this series on clean architectures and DDD<\/a><\/span>, we introduced the basic concepts of this architecture and discussed the layered design philosophy, its elements, fundamental characteristics, and, of course, the advantages of its use.<\/p>\n<p>At this point, it is worth asking <strong>how to take action<\/strong>. In other words, given a functional problem or a use case to implement, how do we apply DDD? Throughout this and the following posts in the series, we will cover the following points:  <\/p>\n<ul>\n<li>Approach to a real functional problem.<\/li>\n<li>Application and use of ubiquitous language.<\/li>\n<li>Strategic design of the solution.<\/li>\n<li>Tactical design and implementation.<\/li>\n<\/ul><img src=\"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/09\/4c56a51a-964d-4546-b8e0-0e658535e87c.png\" alt=\"Hexagonal architecture diagram\" title_text=\"Diagrama de arquitectura hexagonal\" _builder_version=\"4.10.8\" _module_preset=\"default\" width=\"70%\" width_tablet=\"70%\" width_phone=\"100%\" width_last_edited=\"on|desktop\" module_alignment=\"center\" custom_margin=\"0px||0px||false|false\" global_colors_info=\"{}\"><h3>Problem: Control of operations in manufacturing<\/h3>\n<p>Let's take as an example <strong>a characteristic digitization problem in a manufacturing<\/strong> company and its production flow, where operators must perform certain tasks to complete a work order that ultimately enables the manufacturing of a product.<\/p>\n<p>The usual way operators work is as follows:<\/p>\n<ul>\n<li>For each work order they are given, they take one or more of the operations they need to perform, based on their knowledge and certifications, and begin working on them.<\/li>\n<li>They mark the task as assigned to the operator and in progress, so that no one else takes it again.<\/li>\n<li>Once the task is completed, they mark it as finished and return to the beginning of the process.<\/li>\n<\/ul>\n<p>It is important to note, <strong>as a restriction<\/strong>, that operations can only be in one state at a time; that is, they are either to be done, in progress, or finished. In summary, their flow is as follows: <\/p><img src=\"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/10\/dd0f0494-b9aa-46e8-baf5-2dd94a3b1f82.png\" alt=\"Simple workflow for operation management\" title_text=\"Flujo simple de gesti\u00f3n de operaciones\" _builder_version=\"4.11.2\" _module_preset=\"default\" width=\"70%\" width_tablet=\"70%\" width_phone=\"100%\" width_last_edited=\"on|desktop\" module_alignment=\"center\" custom_margin=\"0px||0px||false|false\" global_colors_info=\"{}\"><p>Let's see how we can implement this problem!<\/p>\n<h3>Our ally, the ubiquitous language. Business concepts <\/h3>\n<blockquote>\n<p data-renderer-start-pos=\"2\">The use of language on a project is subtle but all-important [\u2026] to create a supple, knowledge-rich design calls for a versatile, shared team language, and a lively experimentation with language that seldom happens on software projects.<\/p>\n<p>\u00a0<\/p>\n<p data-renderer-start-pos=\"241\">Eric Evans - <em data-renderer-mark=\"true\">Domain-driven design<\/em>. pp.23 - 24. <\/p>\n<\/blockquote>\n<p><strong>One of the most important parts of DDD is the language<\/strong>. From the team sessions (development team and domain experts, of course), a shared language must emerge that explains the model unambiguously. To achieve this, special attention must be paid to what the domain experts communicate to us.  <\/p>\n<p>For this particular example, we will take the previous explanation as the information we have from the domain (let's imagine that it was an expert who provided it to us) and extract, in a brief manner, the most important concepts and entities:<\/p>\n<ul>\n<li><b>Operator<\/b>: A technical user who performs the operations. Each operator has skills that will allow them to execute a specific operation or not.  <\/li>\n<li><b>Order<\/b>: A work order is the set of operations that one or more operators must carry out to produce a good or service, using certain consumable resources. <\/li>\n<li><b>Operation<\/b>: Operations are the smallest unit of work that an operator must perform to complete a work order. All operations belong to a specific order, must be executed by operators with the necessary skills, and are changed in status during the operator's workflow. They can be in one of three different states: TODO, DOING, and DONE.   <\/li>\n<\/ul><h3>Strategic Design: the moment of truth<\/h3>\n<p>During the strategic design phase, the development team, together with domain experts, must define the <strong><em>bounded contexts<\/em><\/strong>, the ubiquitous language, and the <strong><em>context maps<\/em><\/strong> that explain the domain of the problem.<\/p>\n<p>To do this, it is recommended to follow, among other <a href=\"https:\/\/www.youtube.com\/watch?v=mLXQIYEwK24\"><span style=\"text-decoration: underline;\">techniques, <em>Event Storming<\/em><\/span><\/a>. With this technique, we can define the behavior within our domain, identify the elements involved, and understand how they are related to each other. All this information will later help determine the <strong><em>building blocks<\/em><\/strong> of our <em>software <\/em>project.  <\/p>\n<p>Continuing with the proposed example, in the following image, you can see a <strong>model of the state change of operations<\/strong>.<\/p><img src=\"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/10\/37002449-2301-4f9b-913e-be6e3cd3585e.png\" alt=\"Complete flow diagram of the operations system\" title_text=\"Diagrama de flujo completo del sistema de operaciones\" _builder_version=\"4.11.2\" _module_preset=\"default\" width=\"100%\" width_tablet=\"100%\" width_phone=\"100%\" width_last_edited=\"on|desktop\" module_alignment=\"center\" custom_margin=\"20px||20px||false|false\" global_colors_info=\"{}\"><p>From this image and its analysis, and following the <em>Event Storming<\/em> nomenclature, enough domain information can be gathered to make a first implementation. But we will leave that for the next post. <\/p>\n\n<p><em><strong>In the next chapter of this series<\/strong>, the tactical design and implementation of the solution will be carried out.<\/em><\/p>","clasificacion":"Most read"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Clean architectures and DDD: A practical journey. Part 2 - Sixphere - Innovaci\u00f3n que conecta<\/title>\n<meta name=\"description\" content=\"How can a functionality be modeled following the DDD architecture principle? We will tell you where to start and what strategy to follow.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Clean architectures and DDD: A practical journey. Part 2 - Sixphere - Innovaci\u00f3n que conecta\" \/>\n<meta property=\"og:description\" content=\"How can a functionality be modeled following the DDD architecture principle? We will tell you where to start and what strategy to follow.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Sixphere - Innovaci\u00f3n que conecta\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/6phere\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-18T15:04:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-11T09:13:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/10\/pexels-igor-starkov-1117452.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1397\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Luis Candelario\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@6phere\" \/>\n<meta name=\"twitter:site\" content=\"@6phere\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Luis Candelario\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-2\\\/\"},\"author\":{\"name\":\"Luis Candelario\",\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/#\\\/schema\\\/person\\\/2efa1d63eee7023c411ecd5bcf1ac214\"},\"headline\":\"Clean architectures and DDD: A practical journey. Part 2\",\"datePublished\":\"2021-10-18T15:04:32+00:00\",\"dateModified\":\"2025-04-11T09:13:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-2\\\/\"},\"wordCount\":1767,\"publisher\":{\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/sixphere.com\\\/wp-content\\\/uploads\\\/2021\\\/10\\\/pexels-igor-starkov-1117452.jpg\",\"keywords\":[\"Architecture\",\"DDD\",\"Development\"],\"articleSection\":[\"Technology &amp; Innovation\"],\"inLanguage\":\"en-US\"},{\"@type\":[\"WebPage\",\"ItemPage\"],\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-2\\\/\",\"url\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-2\\\/\",\"name\":\"Clean architectures and DDD: A practical journey. Part 2 - Sixphere - Innovaci\u00f3n que conecta\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/sixphere.com\\\/wp-content\\\/uploads\\\/2021\\\/10\\\/pexels-igor-starkov-1117452.jpg\",\"datePublished\":\"2021-10-18T15:04:32+00:00\",\"dateModified\":\"2025-04-11T09:13:46+00:00\",\"description\":\"How can a functionality be modeled following the DDD architecture principle? We will tell you where to start and what strategy to follow.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-2\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/sixphere.com\\\/wp-content\\\/uploads\\\/2021\\\/10\\\/pexels-igor-starkov-1117452.jpg\",\"contentUrl\":\"https:\\\/\\\/sixphere.com\\\/wp-content\\\/uploads\\\/2021\\\/10\\\/pexels-igor-starkov-1117452.jpg\",\"width\":1920,\"height\":1397,\"caption\":\"Arquitecturas limpias y DDD\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/sixphere.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Clean architectures and DDD: A practical journey. Part 2\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/sixphere.com\\\/en\\\/\",\"name\":\"Sixphere Technologies\",\"description\":\"Construimos soluciones digitales y sistemas data-driven asistidos por IA para hacer que las cosas pasen.\",\"publisher\":{\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/sixphere.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/#organization\",\"name\":\"Sixphere Technologies\",\"url\":\"https:\\\/\\\/sixphere.com\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/sixphere.com\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/sixphere-isopo-main.jpg\",\"contentUrl\":\"https:\\\/\\\/sixphere.com\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/sixphere-isopo-main.jpg\",\"width\":750,\"height\":600,\"caption\":\"Sixphere Technologies\"},\"image\":{\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/6phere\\\/\",\"https:\\\/\\\/x.com\\\/6phere\",\"https:\\\/\\\/es.linkedin.com\\\/company\\\/sixphere\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/#\\\/schema\\\/person\\\/2efa1d63eee7023c411ecd5bcf1ac214\",\"name\":\"Luis Candelario\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5171d692a79e49412ec263394f8d1a8be0844814c557aea36bcee0b4acde4830?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5171d692a79e49412ec263394f8d1a8be0844814c557aea36bcee0b4acde4830?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5171d692a79e49412ec263394f8d1a8be0844814c557aea36bcee0b4acde4830?s=96&d=mm&r=g\",\"caption\":\"Luis Candelario\"},\"url\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/author\\\/luis-candelario\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Clean architectures and DDD: A practical journey. Part 2 - Sixphere - Innovaci\u00f3n que conecta","description":"How can a functionality be modeled following the DDD architecture principle? We will tell you where to start and what strategy to follow.","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:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-2\/","og_locale":"en_US","og_type":"article","og_title":"Clean architectures and DDD: A practical journey. Part 2 - Sixphere - Innovaci\u00f3n que conecta","og_description":"How can a functionality be modeled following the DDD architecture principle? We will tell you where to start and what strategy to follow.","og_url":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-2\/","og_site_name":"Sixphere - Innovaci\u00f3n que conecta","article_publisher":"https:\/\/www.facebook.com\/6phere\/","article_published_time":"2021-10-18T15:04:32+00:00","article_modified_time":"2025-04-11T09:13:46+00:00","og_image":[{"width":1920,"height":1397,"url":"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/10\/pexels-igor-starkov-1117452.jpg","type":"image\/jpeg"}],"author":"Luis Candelario","twitter_card":"summary_large_image","twitter_creator":"@6phere","twitter_site":"@6phere","twitter_misc":{"Written by":"Luis Candelario","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-2\/#article","isPartOf":{"@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-2\/"},"author":{"name":"Luis Candelario","@id":"https:\/\/sixphere.com\/en\/#\/schema\/person\/2efa1d63eee7023c411ecd5bcf1ac214"},"headline":"Clean architectures and DDD: A practical journey. Part 2","datePublished":"2021-10-18T15:04:32+00:00","dateModified":"2025-04-11T09:13:46+00:00","mainEntityOfPage":{"@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-2\/"},"wordCount":1767,"publisher":{"@id":"https:\/\/sixphere.com\/en\/#organization"},"image":{"@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-2\/#primaryimage"},"thumbnailUrl":"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/10\/pexels-igor-starkov-1117452.jpg","keywords":["Architecture","DDD","Development"],"articleSection":["Technology &amp; Innovation"],"inLanguage":"en-US"},{"@type":["WebPage","ItemPage"],"@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-2\/","url":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-2\/","name":"Clean architectures and DDD: A practical journey. Part 2 - Sixphere - Innovaci\u00f3n que conecta","isPartOf":{"@id":"https:\/\/sixphere.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-2\/#primaryimage"},"image":{"@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-2\/#primaryimage"},"thumbnailUrl":"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/10\/pexels-igor-starkov-1117452.jpg","datePublished":"2021-10-18T15:04:32+00:00","dateModified":"2025-04-11T09:13:46+00:00","description":"How can a functionality be modeled following the DDD architecture principle? We will tell you where to start and what strategy to follow.","breadcrumb":{"@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-2\/#primaryimage","url":"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/10\/pexels-igor-starkov-1117452.jpg","contentUrl":"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/10\/pexels-igor-starkov-1117452.jpg","width":1920,"height":1397,"caption":"Arquitecturas limpias y DDD"},{"@type":"BreadcrumbList","@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/sixphere.com\/en\/"},{"@type":"ListItem","position":2,"name":"Clean architectures and DDD: A practical journey. Part 2"}]},{"@type":"WebSite","@id":"https:\/\/sixphere.com\/en\/#website","url":"https:\/\/sixphere.com\/en\/","name":"Sixphere Technologies","description":"Construimos soluciones digitales y sistemas data-driven asistidos por IA para hacer que las cosas pasen.","publisher":{"@id":"https:\/\/sixphere.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sixphere.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/sixphere.com\/en\/#organization","name":"Sixphere Technologies","url":"https:\/\/sixphere.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sixphere.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/sixphere.com\/wp-content\/uploads\/2023\/12\/sixphere-isopo-main.jpg","contentUrl":"https:\/\/sixphere.com\/wp-content\/uploads\/2023\/12\/sixphere-isopo-main.jpg","width":750,"height":600,"caption":"Sixphere Technologies"},"image":{"@id":"https:\/\/sixphere.com\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/6phere\/","https:\/\/x.com\/6phere","https:\/\/es.linkedin.com\/company\/sixphere"]},{"@type":"Person","@id":"https:\/\/sixphere.com\/en\/#\/schema\/person\/2efa1d63eee7023c411ecd5bcf1ac214","name":"Luis Candelario","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5171d692a79e49412ec263394f8d1a8be0844814c557aea36bcee0b4acde4830?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5171d692a79e49412ec263394f8d1a8be0844814c557aea36bcee0b4acde4830?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5171d692a79e49412ec263394f8d1a8be0844814c557aea36bcee0b4acde4830?s=96&d=mm&r=g","caption":"Luis Candelario"},"url":"https:\/\/sixphere.com\/en\/blog\/author\/luis-candelario\/"}]}},"_links":{"self":[{"href":"https:\/\/sixphere.com\/en\/wp-json\/wp\/v2\/posts\/24606","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sixphere.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sixphere.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sixphere.com\/en\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/sixphere.com\/en\/wp-json\/wp\/v2\/comments?post=24606"}],"version-history":[{"count":0,"href":"https:\/\/sixphere.com\/en\/wp-json\/wp\/v2\/posts\/24606\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sixphere.com\/en\/wp-json\/wp\/v2\/media\/23886"}],"wp:attachment":[{"href":"https:\/\/sixphere.com\/en\/wp-json\/wp\/v2\/media?parent=24606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sixphere.com\/en\/wp-json\/wp\/v2\/categories?post=24606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sixphere.com\/en\/wp-json\/wp\/v2\/tags?post=24606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}