{"id":24605,"date":"2021-09-23T13:14:08","date_gmt":"2021-09-23T11:14:08","guid":{"rendered":"https:\/\/sixphere.com\/blog\/clean-architectures-and-ddd-a-practical-journey-part-1\/"},"modified":"2025-03-27T16:05:36","modified_gmt":"2025-03-27T15:05:36","slug":"clean-architectures-and-ddd-a-practical-journey-part-1","status":"publish","type":"post","link":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-1\/","title":{"rendered":"Clean Architectures and DDD: A Practical Journey. Part 1"},"content":{"rendered":"\n[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.9.2&#8243; max_width=&#8221;80%&#8221; module_alignment=&#8221;center&#8221; min_height=&#8221;700px&#8221; custom_padding=&#8221;5px||0px||false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;3.25&#8243; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; global_colors_info=&#8221;{}&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;4.9.2&#8243; _dynamic_attributes=&#8221;content&#8221; text_font=&#8221;||||||||&#8221; header_font=&#8221;||||||||&#8221; header_font_size=&#8221;35px&#8221; global_colors_info=&#8221;{}&#8221;]@ET-DC@eyJkeW5hbWljIjp0cnVlLCJjb250ZW50IjoicG9zdF90aXRsZSIsInNldHRpbmdzIjp7ImJlZm9yZSI6IjxoMT4iLCJhZnRlciI6IjwvaDE+IiwiZW5hYmxlX2h0bWwiOiJvZmYifX0=@[\/et_pb_text][et_pb_text _builder_version=&#8221;3.27.4&#8243; _dynamic_attributes=&#8221;content&#8221; text_font=&#8221;||||||||&#8221; text_text_color=&#8221;#e09900&#8243; custom_margin=&#8221;-30px|||||&#8221; global_colors_info=&#8221;{}&#8221;]@ET-DC@eyJkeW5hbWljIjp0cnVlLCJjb250ZW50IjoicG9zdF90YWdzIiwic2V0dGluZ3MiOnsiYmVmb3JlIjoiIiwiYWZ0ZXIiOiIiLCJsaW5rX3RvX3Rlcm1fcGFnZSI6Im9mZiIsInNlcGFyYXRvciI6IiB8ICIsImNhdGVnb3J5X3R5cGUiOiJwb3N0X3RhZyIsImVuYWJsZV9odG1sIjoib2ZmIn19@[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.9.2&#8243; custom_margin=&#8221;0px||0px||false|false&#8221; custom_padding=&#8221;0px||0px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;0px|||&#8221; global_colors_info=&#8221;{}&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;4.10.8&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;||0px||false|false&#8221; global_colors_info=&#8221;{}&#8221;]<p>When tackling <a href=\"https:\/\/sixphere.com\/en\/software-development-and-technology\/\"><span style=\"text-decoration: underline;\">a new software project<\/span><\/a> involving multiple <em>stakeholders<\/em>, various components or third-party systems, or aiming to implement large business workflows essentially, a project with a high level of complexity the same question arises: What design strategy should be adopted? What business language should be used? What technological architecture patterns should be applied?  <\/p>\n<p>The answers to these questions should always be based on the analysis of aspects such as the required maintainability, the level of integration, scalability, or simply the implementation cost. However, one key aspect <strong>is often overlooked: the language<\/strong>. This is nothing more than the mechanism or point of connection that should allow the link between the business world to be digitized and the final digital product. In other words, the aspect that will determine success.  <\/p>\n<p>At what point does the concept of <strong>clean architectures and DDD<\/strong> (<em>Domain-Driven Design<\/em>) come into play? How do they help work on and optimize this key aspect? To begin, this article will address basic architectural concepts.  <\/p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.10.8&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;||0px||false|false&#8221; global_colors_info=&#8221;{}&#8221;]<h3>Clean Architectures and the Magic Hexagon<\/h3>\nThe hexagonal architecture is based on the following fundamental principles and objectives:\n<ul>\n\t<li>Explicitly and decisively separate the user, business, and server layers.<\/li>\n\t<li>Derive and push the dependencies from the user and server layers towards the business logic.<\/li>\n\t<li>Isolate and make each layer as independent as possible, eliminating improper couplings and giving each component a very specific responsibility.<\/li>\n<\/ul>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/puntazo.sixphere.com\/wp-content\/uploads\/2021\/09\/4c56a51a-964d-4546-b8e0-0e658535e87c.png&#8221; alt=&#8221;Hexagonal architecture diagram&#8221; title_text=&#8221;Hexagonal architecture diagram&#8221; _builder_version=&#8221;4.10.8&#8243; _module_preset=&#8221;default&#8221; width=&#8221;70%&#8221; width_tablet=&#8221;70%&#8221; width_phone=&#8221;100%&#8221; width_last_edited=&#8221;on|desktop&#8221; module_alignment=&#8221;center&#8221; custom_margin=&#8221;0px||0px||false|false&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.10.8&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;||0px||false|false&#8221; global_colors_info=&#8221;{}&#8221;]<p>From a practical point of view, this architectural principle is based on an idea as old as it is effective: <strong>divide and conquer<\/strong>. Separating or breaking the problem into independent pieces will not only make it easier to understand the overall problem, but it will also simplify the implementation of the solution and its subsequent maintenance. On the other hand, it paves the way for greater extensibility and scalability.  <\/p>\n<p>Would you like to dive deeper into this architectural principle? <span style=\"text-decoration: underline;\"><a href=\"https:\/\/blog.octo.com\/en\/hexagonal-architecture-three-principles-and-an-implementation-example\/\">This article will be very helpful<\/a><\/span>. Let\u2019s explore briefly and concisely each of the main components of hexagonal architecture. <\/p>\n<h3>Presentation layer<\/h3>\n<p>It is simply the <strong>final user interface<\/strong>. Broadly speaking, it is responsible for displaying information to the user, interpreting their commands, and triggering the relevant business actions by communicating with the other involved layers. <\/p>\n<p>It is important to highlight that, at times and quite frequently, the user or external actor is identified as a human being. Nothing could be further from the truth. <strong>The end user can be any other entity<\/strong>: a machine, <strong>an IoT device<\/strong>, another computer system, etc. This is a crucial point to consider when designing this layer.  <\/p>\n<h3>Application layer<\/h3>\n<p>It defines the tasks that the <em>software <\/em>must perform and directs the expressive domain objects to <strong>solve the problems<\/strong>. The tasks handled by this layer are significant for the business or necessary for interacting with the application layers of other systems. <\/p>\n<p>This layer remains &#8220;thin.&#8221; It does not contain business rules or knowledge; instead, it simply <strong>coordinates tasks and delegates the work<\/strong> to the domain object collaborations in the next layer. It does not have state that reflects the business situation, but it may have state that reflects the progress of a task for the user or the program.  <\/p>\n<h3>Domain layer<\/h3>\n<p>Also called the model layer. It is the component of the architecture <strong>responsible for representing business concepts<\/strong>, information about the business situation, and business rules. The state that reflects the company&#8217;s situation through its digital system is controlled and used here, although the technical details of its storage are delegated to the infrastructure.  <\/p>\n<p>In short, it is the component that <strong>implements the company\u2019s workflows<\/strong> or production processes using a language very close to the business domain.<\/p>\n<h3>Infrastructure layer<\/h3>\n<p>This layer provides the <strong>generic technical capabilities<\/strong> that support the upper layers: message sending for the application, persistence for the domain, rendering <em>widgets <\/em>for the UI, etc. It is also responsible for the connection with external systems\/agents outside our domain. <\/p>\n<p>The infrastructure layer can also support the pattern of interactions between the four layers through an architectural framework and is also referred to as the<strong> anticorruption layer<\/strong> because it prevents the business layers from being &#8220;contaminated&#8221; with elements that are actually external to it.<\/p>\n<p>Would you like more information? <span style=\"text-decoration: underline;\"><a href=\"https:\/\/netflixtechblog.com\/ready-for-changes-with-hexagonal-architecture-b315ec967749\">Take a look at this post<\/a><\/span>.<\/p>\n<p><em><strong>In the next chapter of this series<\/strong>, a real-world problem will be presented along with the design of the solution, applying this and other principles.<\/em><\/p>[\/et_pb_text][et_pb_button button_url=&#8221;https:\/\/sixphere.com\/blog\/arquitecturas-limpias-ddd-parte-2\/&#8221; button_text=&#8221;Clean architectures and DDD: A practical journey. Part 2 &#8221; button_alignment=&#8221;center&#8221; _builder_version=&#8221;4.11.2&#8243; custom_button=&#8221;on&#8221; button_text_size=&#8221;16px&#8221; button_text_color=&#8221;#ffaf87&#8243; button_font=&#8221;||||||||&#8221; custom_margin=&#8221;||20px||false|false&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;][\/et_pb_button][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.9.4&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;rgba(224,43,32,0.61)&#8221; background_enable_image=&#8221;off&#8221; background_size=&#8221;contain&#8221; background_position=&#8221;bottom_left&#8221; custom_margin=&#8221;30px||30px||false|false&#8221; custom_padding=&#8221;20px||20px||false|false&#8221; background_last_edited=&#8221;on|desktop&#8221; background_enable_image_tablet=&#8221;off&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.9.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.9.7&#8243; _module_preset=&#8221;default&#8221; header_font=&#8221;Oswald|300|||||||&#8221; header_text_align=&#8221;center&#8221; header_text_color=&#8221;#FFFFFF&#8221; header_2_font=&#8221;Oswald|300|||||||&#8221; header_2_text_align=&#8221;center&#8221; header_2_text_color=&#8221;#FFFFFF&#8221; custom_padding=&#8221;0px|40px||40px|false|false&#8221; global_colors_info=&#8221;{}&#8221;]<h2 style=\"font-size: 30px;\">Want to take the first step in digitalization? Call us with no obligation, and we&#8217;ll design your Minimum Viable Product. <\/h2>[\/et_pb_text][et_pb_button button_url=&#8221;https:\/\/meetings.hubspot.com\/jesus-maria-jurado&#8221; url_new_window=&#8221;on&#8221; button_text=&#8221;Schedule a meeting with us&#8221; button_alignment=&#8221;center&#8221; _builder_version=&#8221;4.9.2&#8243; _module_preset=&#8221;default&#8221; custom_button=&#8221;on&#8221; button_text_size=&#8221;16px&#8221; button_text_color=&#8221;#FFFFFF&#8221; button_bg_color=&#8221;#543855&#8243; button_border_width=&#8221;0px&#8221; button_letter_spacing=&#8221;0px&#8221; button_font=&#8221;Roboto Condensed|300||on|||||&#8221; button_use_icon=&#8221;off&#8221; custom_padding=&#8221;10px||10px||false|false&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_button][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; module_class=&#8221;more-related-blogs-section&#8221; _builder_version=&#8221;4.9.2&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;rgba(147,149,151,0.1)&#8221; use_background_color_gradient=&#8221;on&#8221; background_color_gradient_start=&#8221;rgba(147,149,151,0.1)&#8221; background_color_gradient_end=&#8221;#ffffff&#8221; custom_margin=&#8221;||0px||false|false&#8221; custom_padding=&#8221;80px||0px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.9.2&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;0px||0px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.9.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.9.2&#8243; text_font=&#8221;Roboto||||||||&#8221; text_font_size=&#8221;40px&#8221; header_font=&#8221;||||||||&#8221; header_text_align=&#8221;right&#8221; header_3_font=&#8221;|600|||||||&#8221; header_3_text_align=&#8221;left&#8221; header_3_font_size=&#8221;40px&#8221; header_3_line_height=&#8221;1.1em&#8221; header_4_font=&#8221;|700||on|||||&#8221; header_4_text_color=&#8221;#255d83&#8243; header_4_font_size=&#8221;13px&#8221; header_4_letter_spacing=&#8221;2px&#8221; header_4_line_height=&#8221;1.8em&#8221; custom_margin=&#8221;-14px||10px||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;]<h3 style=\"font-size: 40px\">Here you have <span style=\"color: #ffa327;\">more<\/span><\/h3>[\/et_pb_text][dsm_button button_one_text=&#8221;All blogs&#8221; button_one_url=&#8221;https:\/\/sixphere.com\/en\/sixphere-world-blogs-news\/&#8221; _builder_version=&#8221;4.9.2&#8243; _module_preset=&#8221;default&#8221; custom_button_one=&#8221;on&#8221; button_one_text_size=&#8221;16px&#8221; button_one_text_color=&#8221;#FFFFFF&#8221; button_one_bg_color=&#8221;#543855&#8243; button_one_border_width=&#8221;0px&#8221; button_one_font=&#8221;Roboto|300|||||||&#8221; button_one_use_icon=&#8221;off&#8221; custom_button_two=&#8221;on&#8221; button_two_text_size=&#8221;16px&#8221; button_two_text_color=&#8221;#FFFFFF&#8221; button_two_bg_color=&#8221;#ffa327&#8243; button_two_border_width=&#8221;0px&#8221; button_two_font=&#8221;Roboto|300|||||||&#8221; button_two_use_icon=&#8221;off&#8221; custom_margin=&#8221;30px||70px||false|false&#8221; global_colors_info=&#8221;{}&#8221;][\/dsm_button][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.9.2&#8243; _module_preset=&#8221;default&#8221; width_tablet=&#8221;&#8221; width_phone=&#8221;100%&#8221; width_last_edited=&#8221;on|phone&#8221; custom_padding=&#8221;0px||0px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.7.7&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_blog fullwidth=&#8221;off&#8221; posts_number=&#8221;3&#8243; include_categories=&#8221;current&#8221; meta_date=&#8221;j F Y&#8221; excerpt_length=&#8221;150&#8243; show_more=&#8221;on&#8221; show_author=&#8221;off&#8221; show_categories=&#8221;off&#8221; show_pagination=&#8221;off&#8221; _builder_version=&#8221;4.9.2&#8243; header_level=&#8221;h4&#8243; header_font=&#8221;||||||||&#8221; header_text_align=&#8221;left&#8221; header_font_size=&#8221;24px&#8221; header_line_height=&#8221;1.2em&#8221; body_font=&#8221;Roboto Condensed|300|||||||&#8221; body_text_align=&#8221;left&#8221; body_font_size=&#8221;16px&#8221; meta_font=&#8221;Roboto Condensed||||||||&#8221; meta_text_align=&#8221;left&#8221; read_more_font=&#8221;||||||||&#8221; read_more_text_color=&#8221;#ffffff&#8221; module_alignment=&#8221;center&#8221; custom_css_read_more=&#8221;background-color: #ffa327;||border: none !important;||margin-top: 40px;&#8221; border_width_all=&#8221;0px&#8221; box_shadow_style=&#8221;preset1&#8243; box_shadow_blur=&#8221;8px&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_blog][\/et_pb_column][\/et_pb_row][\/et_pb_section]\n","protected":false},"excerpt":{"rendered":"<p>What is Domain-Driven Design and the principle of clean architectures? In this series of posts, we will explain what they consist of, why we like them, and how to apply them. To start, in this article, we will define basic concepts about layered architecture.  <\/p>\n","protected":false},"author":5,"featured_media":23887,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","content-type":"","footnotes":""},"categories":[185],"tags":[187,188,186],"class_list":["post-24605","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology-innovation","tag-architecture","tag-ddd-en","tag-development"],"acf":{"cuerpo":"<p>When tackling <a href=\"https:\/\/sixphere.com\/software-tecnologia-innovacion\/\"><span style=\"text-decoration: underline;\">a new software project<\/span><\/a> involving multiple <em>stakeholders<\/em>, various components or third-party systems, or aiming to implement large business workflows essentially, a project with a high level of complexity the same question arises: What design strategy should be adopted? What business language should be used? What technological architecture patterns should be applied?  <\/p>\n<p>The answers to these questions should always be based on the analysis of aspects such as the required maintainability, the level of integration, scalability, or simply the implementation cost. However, one key aspect <strong>is often overlooked: the language<\/strong>. This is nothing more than the mechanism or point of connection that should allow the link between the business world to be digitized and the final digital product. In other words, the aspect that will determine success.  <\/p>\n<p>At what point does the concept of <strong>clean architectures and DDD<\/strong> (<em>Domain-Driven Design<\/em>) come into play? How do they help work on and optimize this key aspect? To begin, this article will address basic architectural concepts.  <\/p><h3>Clean Architectures and the Magic Hexagon<\/h3>\nThe hexagonal architecture is based on the following fundamental principles and objectives:\n<ul>\n\t<li>Explicitly and decisively separate the user, business, and server layers.<\/li>\n\t<li>Derive and push the dependencies from the user and server layers towards the business logic.<\/li>\n\t<li>Isolate and make each layer as independent as possible, eliminating improper couplings and giving each component a very specific responsibility.<\/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=\"{}\"><p>From a practical point of view, this architectural principle is based on an idea as old as it is effective: <strong>divide and conquer<\/strong>. Separating or breaking the problem into independent pieces will not only make it easier to understand the overall problem, but it will also simplify the implementation of the solution and its subsequent maintenance. On the other hand, it paves the way for greater extensibility and scalability.  <\/p>\n<p>Would you like to dive deeper into this architectural principle? <span style=\"text-decoration: underline;\"><a href=\"https:\/\/blog.octo.com\/en\/hexagonal-architecture-three-principles-and-an-implementation-example\/\">This article will be very helpful<\/a><\/span>. Let\u2019s explore briefly and concisely each of the main components of hexagonal architecture. <\/p>\n<h3>Presentation layer<\/h3>\n<p>It is simply the <strong>final user interface<\/strong>. Broadly speaking, it is responsible for displaying information to the user, interpreting their commands, and triggering the relevant business actions by communicating with the other involved layers. <\/p>\n<p>It is important to highlight that, at times and quite frequently, the user or external actor is identified as a human being. Nothing could be further from the truth. <strong>The end user can be any other entity<\/strong>: a machine, <strong>an IoT device<\/strong>, another computer system, etc. This is a crucial point to consider when designing this layer.  <\/p>\n<h3>Application layer<\/h3>\n<p>It defines the tasks that the <em>software <\/em>must perform and directs the expressive domain objects to <strong>solve the problems<\/strong>. The tasks handled by this layer are significant for the business or necessary for interacting with the application layers of other systems. <\/p>\n<p>This layer remains \"thin.\" It does not contain business rules or knowledge; instead, it simply <strong>coordinates tasks and delegates the work<\/strong> to the domain object collaborations in the next layer. It does not have state that reflects the business situation, but it may have state that reflects the progress of a task for the user or the program.  <\/p>\n<h3>Domain layer<\/h3>\n<p>Also called the model layer. It is the component of the architecture <strong>responsible for representing business concepts<\/strong>, information about the business situation, and business rules. The state that reflects the company's situation through its digital system is controlled and used here, although the technical details of its storage are delegated to the infrastructure.  <\/p>\n<p>In short, it is the component that <strong>implements the company\u2019s workflows<\/strong> or production processes using a language very close to the business domain.<\/p>\n<h3>Infrastructure layer<\/h3>\n<p>This layer provides the <strong>generic technical capabilities<\/strong> that support the upper layers: message sending for the application, persistence for the domain, rendering <em>widgets <\/em>for the UI, etc. It is also responsible for the connection with external systems\/agents outside our domain. <\/p>\n<p>The infrastructure layer can also support the pattern of interactions between the four layers through an architectural framework and is also referred to as the<strong> anticorruption layer<\/strong> because it prevents the business layers from being \"contaminated\" with elements that are actually external to it.<\/p>\n<p>Would you like more information? <span style=\"text-decoration: underline;\"><a href=\"https:\/\/netflixtechblog.com\/ready-for-changes-with-hexagonal-architecture-b315ec967749\">Take a look at this post<\/a><\/span>.<\/p>\n<p><em><strong>In the next chapter of this series<\/strong>, a real-world problem will be presented along with the design of the solution, applying this and other principles.<\/em><\/p>","clasificacion":"Most read"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Clean Architectures and DDD: A Practical Journey. Part 1 - Innovaci\u00f3n que conecta tu empresa - Sixphere Technologies<\/title>\n<meta name=\"description\" content=\"What is Domain-Driven Design and the principle of clean architectures and DDD? We will explain what it is, why we like it, and how to apply it.\" \/>\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-1\/\" \/>\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 1 - Innovaci\u00f3n que conecta tu empresa - Sixphere Technologies\" \/>\n<meta property=\"og:description\" content=\"What is Domain-Driven Design and the principle of clean architectures and DDD? We will explain what it is, why we like it, and how to apply it.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Innovaci\u00f3n que conecta tu empresa - Sixphere Technologies\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/6phere\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-23T11:14:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-27T15:05:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/09\/pexels-gdtography-911758-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1281\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Fernando Jim\u00e9nez\" \/>\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=\"Fernando Jim\u00e9nez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 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-1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-1\\\/\"},\"author\":{\"name\":\"Fernando Jim\u00e9nez\",\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/#\\\/schema\\\/person\\\/928bf3051ad6fedf62cab46c4cc6415e\"},\"headline\":\"Clean Architectures and DDD: A Practical Journey. Part 1\",\"datePublished\":\"2021-09-23T11:14:08+00:00\",\"dateModified\":\"2025-03-27T15:05:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-1\\\/\"},\"wordCount\":1693,\"publisher\":{\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/sixphere.com\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/pexels-gdtography-911758-1.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-1\\\/\",\"url\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-1\\\/\",\"name\":\"Clean Architectures and DDD: A Practical Journey. Part 1 - Innovaci\u00f3n que conecta tu empresa - Sixphere Technologies\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-1\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/sixphere.com\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/pexels-gdtography-911758-1.jpg\",\"datePublished\":\"2021-09-23T11:14:08+00:00\",\"dateModified\":\"2025-03-27T15:05:36+00:00\",\"description\":\"What is Domain-Driven Design and the principle of clean architectures and DDD? We will explain what it is, why we like it, and how to apply it.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-1\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-1\\\/#primaryimage\",\"url\":\"https:\\\/\\\/sixphere.com\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/pexels-gdtography-911758-1.jpg\",\"contentUrl\":\"https:\\\/\\\/sixphere.com\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/pexels-gdtography-911758-1.jpg\",\"width\":1920,\"height\":1281,\"caption\":\"Arquitecturas limpias y DDD\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/clean-architectures-and-ddd-a-practical-journey-part-1\\\/#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 1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sixphere.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/sixphere.com\\\/en\\\/\",\"name\":\"Sixphere Technologies\",\"description\":\"Construimos tecnolog\u00eda de innovaci\u00f3n que conecta tu empresa de forma eficiente, \u00fatil y escalable con IA, datos, software e integraci\u00f3n.\",\"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\\\/928bf3051ad6fedf62cab46c4cc6415e\",\"name\":\"Fernando Jim\u00e9nez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b0c47a456afb851dd6c0e8678e7a7e1b8e25ed33c75d311192fe980d3e162751?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b0c47a456afb851dd6c0e8678e7a7e1b8e25ed33c75d311192fe980d3e162751?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b0c47a456afb851dd6c0e8678e7a7e1b8e25ed33c75d311192fe980d3e162751?s=96&d=mm&r=g\",\"caption\":\"Fernando Jim\u00e9nez\"},\"url\":\"https:\\\/\\\/sixphere.com\\\/en\\\/blog\\\/author\\\/fernando-jimenez\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Clean Architectures and DDD: A Practical Journey. Part 1 - Innovaci\u00f3n que conecta tu empresa - Sixphere Technologies","description":"What is Domain-Driven Design and the principle of clean architectures and DDD? We will explain what it is, why we like it, and how to apply it.","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-1\/","og_locale":"en_US","og_type":"article","og_title":"Clean Architectures and DDD: A Practical Journey. Part 1 - Innovaci\u00f3n que conecta tu empresa - Sixphere Technologies","og_description":"What is Domain-Driven Design and the principle of clean architectures and DDD? We will explain what it is, why we like it, and how to apply it.","og_url":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-1\/","og_site_name":"Innovaci\u00f3n que conecta tu empresa - Sixphere Technologies","article_publisher":"https:\/\/www.facebook.com\/6phere\/","article_published_time":"2021-09-23T11:14:08+00:00","article_modified_time":"2025-03-27T15:05:36+00:00","og_image":[{"width":1920,"height":1281,"url":"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/09\/pexels-gdtography-911758-1.jpg","type":"image\/jpeg"}],"author":"Fernando Jim\u00e9nez","twitter_card":"summary_large_image","twitter_creator":"@6phere","twitter_site":"@6phere","twitter_misc":{"Written by":"Fernando Jim\u00e9nez","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-1\/#article","isPartOf":{"@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-1\/"},"author":{"name":"Fernando Jim\u00e9nez","@id":"https:\/\/sixphere.com\/en\/#\/schema\/person\/928bf3051ad6fedf62cab46c4cc6415e"},"headline":"Clean Architectures and DDD: A Practical Journey. Part 1","datePublished":"2021-09-23T11:14:08+00:00","dateModified":"2025-03-27T15:05:36+00:00","mainEntityOfPage":{"@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-1\/"},"wordCount":1693,"publisher":{"@id":"https:\/\/sixphere.com\/en\/#organization"},"image":{"@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/09\/pexels-gdtography-911758-1.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-1\/","url":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-1\/","name":"Clean Architectures and DDD: A Practical Journey. Part 1 - Innovaci\u00f3n que conecta tu empresa - Sixphere Technologies","isPartOf":{"@id":"https:\/\/sixphere.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-1\/#primaryimage"},"image":{"@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/09\/pexels-gdtography-911758-1.jpg","datePublished":"2021-09-23T11:14:08+00:00","dateModified":"2025-03-27T15:05:36+00:00","description":"What is Domain-Driven Design and the principle of clean architectures and DDD? We will explain what it is, why we like it, and how to apply it.","breadcrumb":{"@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-1\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-1\/#primaryimage","url":"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/09\/pexels-gdtography-911758-1.jpg","contentUrl":"https:\/\/sixphere.com\/wp-content\/uploads\/2021\/09\/pexels-gdtography-911758-1.jpg","width":1920,"height":1281,"caption":"Arquitecturas limpias y DDD"},{"@type":"BreadcrumbList","@id":"https:\/\/sixphere.com\/en\/blog\/clean-architectures-and-ddd-a-practical-journey-part-1\/#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 1"}]},{"@type":"WebSite","@id":"https:\/\/sixphere.com\/en\/#website","url":"https:\/\/sixphere.com\/en\/","name":"Sixphere Technologies","description":"Construimos tecnolog\u00eda de innovaci\u00f3n que conecta tu empresa de forma eficiente, \u00fatil y escalable con IA, datos, software e integraci\u00f3n.","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\/928bf3051ad6fedf62cab46c4cc6415e","name":"Fernando Jim\u00e9nez","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/b0c47a456afb851dd6c0e8678e7a7e1b8e25ed33c75d311192fe980d3e162751?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b0c47a456afb851dd6c0e8678e7a7e1b8e25ed33c75d311192fe980d3e162751?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b0c47a456afb851dd6c0e8678e7a7e1b8e25ed33c75d311192fe980d3e162751?s=96&d=mm&r=g","caption":"Fernando Jim\u00e9nez"},"url":"https:\/\/sixphere.com\/en\/blog\/author\/fernando-jimenez\/"}]}},"_links":{"self":[{"href":"https:\/\/sixphere.com\/en\/wp-json\/wp\/v2\/posts\/24605","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\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/sixphere.com\/en\/wp-json\/wp\/v2\/comments?post=24605"}],"version-history":[{"count":0,"href":"https:\/\/sixphere.com\/en\/wp-json\/wp\/v2\/posts\/24605\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sixphere.com\/en\/wp-json\/wp\/v2\/media\/23887"}],"wp:attachment":[{"href":"https:\/\/sixphere.com\/en\/wp-json\/wp\/v2\/media?parent=24605"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sixphere.com\/en\/wp-json\/wp\/v2\/categories?post=24605"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sixphere.com\/en\/wp-json\/wp\/v2\/tags?post=24605"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}