Summary of [DEVFEST Lille 2022] - L’architecture Hexagonale à la rescousse

This is an AI generated summary. There may be inaccuracies. · The green links below are Amazon affiliate links where summarize.tech may earn a commission.
Summarize another video · Purchase summarize.tech Premium

00:00:00 - 00:50:00

In the DEVFEST Lille 2022 video titled "[DEVFEST Lille 2022] - L’architecture Hexagonale à la rescousse," speakers discuss their experiences implementing the Hexagonal Architecture in various software development projects. Nassim Bouazza from Norauto shares how this architecture helped them manage a complex setup involving commerce and workshop systems, enabling seamless user experiences and handling the convergence of Norauto and another entity. Another speaker discusses the benefits of Hexagonal Architecture in a vehicle management project, allowing for limited code changes during transitions and avoiding dependencies between services. The architecture was also highlighted as a solution for managing complications in long-term projects and maintaining a well-structured project. The Hexagonal Architecture separates the application from the infrastructure and external services, promoting easier testing, maintenance, and deployment. Its principles include explicit separation of the application and adapters, ensuring the application is isolated and only sees itself, and the inversion of control between the application and infrastructure components.

  • 00:00:00 In this section, Nassim Bouazza from Norauto speaks about how the Hexagonal Architecture has been instrumental in their refactoring project. Norauto, a group that employs over 460 collaborators across 15 countries, was previously using a monolithic system for commerce and another for the workshop. This complex setup required intermediaries to ensure a seamless user experience. Their objective was to enable clients to start and complete their journeys directly on the Norauto platform, whether it be through e-commerce or a workshop. The convergence of Norauto and a different entity, REFERENCE STAR OR, necessitated the deployment of the same information system for both entities. Additionally, they aimed to develop new business offerings and partnerships. To manage this transition and the coexistence of three systems, they adopted the Hexagonal Architecture. This architecture helped them handle the transition, better manage their technical debt, and mitigate risks. Norauto's teams, consisting of Java developers, cloud experts, and more, implemented the architecture, enabling them to connect the legacy systems with the new ones and create a more efficient and seamless user experience.
  • 00:05:00 In this section of the DEVFEST Lille 2022 video, the speaker discusses their experience implementing Hexagonal Architecture in a project involving vehicle management in Portugal and Spain. The team aimed to minimize risks while transforming the existing system and rationalize development. Hexagonal Architecture proved to be a lifesaver as it allowed them to limit code changes during transitions and avoid dependencies between services. The speaker explains how they started with a three-tier architecture and transformed it into a hexagonal one, using a vehicle management application and a workshop service as examples. They highlight the challenges of managing entities and avoiding coupling between services and databases. The speaker also mentions that maintaining a well-structured project is not a guarantee against issues and that bypassing certain parts of the system due to deadlines can lead to problems over time. They also warn against relying on overly performant but difficult-to-use libraries and bypassing infrastructure layers, which can create entropy and lead to logic duplication in different parts of the system.
  • 00:10:00 In this section, the speaker discusses the complications they encounter in long-term projects and how the Hexagonal Architecture comes to the rescue. After six months, projects can become complicated, and after a year, they may be labeled as legacy. The codebase can become spaghetti, making testing difficult and costly. Additionally, the use of multiple databases for different services can lead to performance issues and the need to write complex rules to access them. The speaker then introduces the Hexagonal Architecture, created by Alistair Cockburn in 2005, as a solution to these problems. The architecture proposes a framework to avoid certain dependencies and make applications more maintainable. The speaker then explains the difference between the traditional and Hexagonal Architecture, with the latter having explicit separations between modules, including the user interface, application, and domain layers, as well as the addition of the server side and external services layers.
  • 00:15:00 In this section of the DEVFEST Lille 2022 video titled "[DEVFEST Lille 2022] - L’architecture Hexagonale à la rescousse," the speaker discusses the importance of the Hexagonal Architecture in software development. The architecture separates the application from the infrastructure and external services, allowing for easier testing, maintenance, and deployment. The application's core business rules are located in the application layer, which should not depend on any external components. This inversion of control allows for the easy replacement of infrastructure components, such as databases, without affecting the application or business rules. The Hexagonal Architecture also promotes a symmetric design, allowing for the application to drive the interaction with the server, and services to be deployed and executed directly. While the concept may seem complex, it is natural for developers to work on entire layers, and the inversion of dependency between the application and server-side components is an intuitive concept. The speaker uses the example of building an application for vehicle management to illustrate how the application defines its server-side part and uses infrastructure layers to expose the functionality to the external world. The key principles of the Hexagonal Architecture are the explicit separation of the application and adapters, ensuring the application is isolated and only sees itself, and the inversion of control between the application and infrastructure components.
  • 00:20:00 In this section of the DEVFEST Lille 2022 video titled "[DEVFEST Lille 2022] - L’architecture Hexagonale à la rescousse," the speaker discusses the second principle of Hexagonal Architecture, which states that the application should not know anything about the infrastructure and dependencies should point towards the center. The speaker explains this concept through a demo, using the example of an application that has been divided into three modules: user interface, application, and server. He emphasizes the importance of inversion of control and demonstrates how a layer application interacts with another layer, such as a server or database, using the example of a vehicle repair application. The speaker then explains how to invert the dependency so that the application is isolated from the infrastructure. He concludes by stating that the objective of Hexagonal Architecture is to make the application independent of the infrastructure and defines a vehicle class to handle the creation and management of vehicles without needing to know how it is implemented.
  • 00:25:00 In this section of the DEVFEST Lille 2022 video titled "[DEVFEST Lille 2022] - L’architecture Hexagonale à la rescousse," the speaker discusses implementing the Hexagonal Architecture in a vehicle management system. He explains that they have defined a port for vehicle management and are now working on implementing it. The speaker demonstrates defining an adapter in Postgre to implement the vehicle port and adds a dependency injection layer between the entities to go faster. The ultimate goal is inversion of control, which allows the speaker to write code without worrying about the implementation details. The speaker mentions that there are teams using the same pattern with different frameworks and encourages exchanging ideas. The speaker created a vehicle management system in France and later created another one, and when trying to repair the older one, he realized that he couldn't directly access the layers, resulting in strong isolation and decoupling between the application's different modules. The speaker concludes by discussing how the Hexagonal Architecture helps in managing multiple systems, such as Norauto's three systems, by minimizing the impact of transitions between them. The speaker then proceeds to demonstrate a concrete use case of the Hexagonal Architecture in an application, where they externalize the workshop service, and the application calls the external service to handle repairs. The code remains the same, but the implementation changes by externalizing the service.
  • 00:30:00 In this section of the DevFest Lille 2022 video titled "[DEVFEST Lille 2022] - L’architecture Hexagonale à la rescousse," the speaker discusses how they manage repair services for vehicles using Hexagonal Architecture. They explain how they define a port for their application to request vehicle repairs and how they handle multiple workshops. The speaker adds a code snippet to their implementation to fix a vehicle by first retrieving their vehicle and then the implementation capable of repairing it. They use a filter to determine which implementation can repair a specific vehicle. The speaker then demonstrates how they can repair a vehicle in France using Norauto's implementation and how they can attempt to repair a vehicle in Germany using another implementation. They emphasize that they have no impact on the externalized services and that their role is limited to managing workshops. The speaker also mentions that they can create a new implementation for a workshop in Great Britain without touching any existing code. They conclude by creating a new module called "gb workshop" and taking the same dependencies as a host adapter.
  • 00:35:00 In this section of the DEVFEST Lille 2022 video titled "[DEVFEST Lille 2022] - L’architecture Hexagonale à la rescousse," the speaker discusses implementing a new external service dependency using the Hexagonal Architecture. They explain how they integrate the new dependency using a bootloader, which allows them to package and manage the entire system. The speaker also mentions that there are different ways to do this and that they choose to integrate the new dependency directly. They emphasize the importance of managing dependencies and dynamically loading new implementations to effectively handle various implementations. The speaker then shares their experience of managing multiple implementations, such as workshops, offers, and commerce, and how the Hexagonal Architecture helps them master their transitions and risks while keeping their business logic untouched. They also mention the challenges of learning the new architecture and the importance of rationalizing developments. The speaker concludes by acknowledging that the Hexagonal Architecture can also introduce difficulties, such as a steeper learning curve and the need for more entities and ideas, but emphasizes that it allows for better separation of concerns and easier testing and maintenance.
  • 00:40:00 In this section, the speaker discusses the importance of understanding the business domain and the different layers of an application, specifically in the context of the Hexagonal Architecture. They mention how they encountered issues when using separate islands for application and data layers, leading to the need for a more integrated approach. The speaker emphasizes the importance of having a good understanding of the business and the different parts of the application and data layers to avoid coupling them. They also mention how investing more time in design upfront and using mappers to lighten the mapping between different entities has helped them. The speaker also mentions that testing was a major motivation for creating the Hexagonal Architecture, specifically unit testing and integration testing. They give an example of how a modification to the business rules might require different actions for different centers, and how they had to add a new service to handle this. Overall, the speaker emphasizes the importance of a good understanding of the business and the different layers of an application to create a successful architecture.
  • 00:45:00 In this section of the DEVFEST Lille 2022 presentation titled "L’architecture Hexagonale à la rescousse," the speaker discusses how adding a vehicle center to their application led to a change in their Quartz (QDR) layer without affecting their business logic. The speaker also explains how this architecture allows for externalizing the infrastructure and creating libraries for data retrieval, which leads to rationalizing development and reducing the need to consume different things in various places. However, the speaker acknowledges the need to manage mappings between parties, especially when dealing with one-to-one or many-to-one relationships. Using a concrete example of a command that involves products, delivery, and invoicing, the speaker raises the question of whether it's better to keep the entire command or break it down into smaller parts for better consistency and easier data retrieval. The speaker also mentions the possibility of having different contexts for a command, leading to smaller and more manageable objects.
  • 00:50:00 In this section of the DEVFEST Lille 2022 video titled "[DEVFEST Lille 2022] - L’architecture Hexagonale à la rescousse," Nassim discusses the use of Hexagonal Architecture and the benefits of using a multi-module approach with Maven. He clarifies that the multi-module setup was not solely for avoiding class usage in controllers but also for enforcing rules and adhering to principles. Although it's possible to achieve a single project with Artisan or Java 11, the preference is for the multi-module approach. The primary objective is to respect the architecture's principles and apply the decoupling structure. Nassim concludes by thanking the audience for their time and expressing his intention to attend future conferences.

Copyright © 2024 Summarize, LLC. All rights reserved. · Terms of Service · Privacy Policy · As an Amazon Associate, summarize.tech earns from qualifying purchases.