Talks
Speakers
Events
Topics
Sign in
Home
Talks
Speakers
Events
Topics
Leaderboard
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
Rails models are simple, but your domain’s models might not be as simple as Rails would like them to be. Modeling large, complex domains "the Rails way” can cause some serious pain. Ruby and Rails are supposed to make developers happy. Let's not allow “the Rails way” and complex domains to take the “happy” out of ruby development. Join me as I’ll walk through a set of easy to implement Domain Driven Design (DDD) pointers. The goal is to make sure your model’s business logic stay under control no matter how complex your domain is or gets. Your application will be able to sustain steady growth and dramatically reduce business rule related defects, all the while, staying easy to grok. I'll walk you through: How communicating the domain properly will make an imprint on your codebase and product. How creating boundaries around clusters of models will make your code easier to understand, manage, and interact with. How immutable objects eliminate unnecessary complexities. How data store access expresses the domain's intentions. How to represent natural business transactions between models. Help us caption & translate this video! http://amara.org/v/F2y1/
Date
Summarized using AI?
If this talk's summary was generated by AI, please check this box. A "Summarized using AI" badge will be displayed in the summary tab to indicate that the summary was generated using AI.
Show "Summarized using AI" badge on summary page
Summary
Markdown supported
In the video titled "Build Complex Domains in Rails," Mike AbiEzzi, a software consultant at Quick Left, discusses strategies for effectively modeling complex domains using Domain-Driven Design (DDD) principles within Ruby on Rails applications. The presentation highlights the challenges faced when scaling Rails applications, particularly when the complexity and the team size increase. AbiEzzi emphasizes the importance of clear communication and a shared understanding of the domain among team members, which is essential for creating maintainable software. Key points covered in the video include: - **Understanding Domain-Driven Design**: DDD focuses on creating a model that accurately represents the business domain, facilitating better communication between developers and domain experts. - **Defining the Domain**: The video uses the iOS App Store as a hypothetical domain, illustrating how to refine the terminology and understand various elements such as apps, sellers (developers and companies), releases, and reviews. - **Establishing Ubiquitous Language**: It’s crucial for all team members to use consistent terminology to avoid confusion and ensure clarity in development and communication. - **Relationships in the Domain**: AbiEzzi discusses the importance of identifying and simplifying relationships between models, ensuring only necessary connections are maintained. - **Aggregates**: These are crucial in managing complexity, as they encapsulate related entities and control their behavior. For example, the video outlines how to manage app releases through a method called 'submit_release', demonstrating how aggregates function in practice. - **Data Access and Scopes**: Using Rails scopes to give names to specific queries clarifies intent and expresses domain behaviors, leading to better practices in querying data. - **Value Objects**: Differentiating between entities and value objects helps in managing domain complexity, with value objects being immutable and simplifying designs. - **Domain Services**: These are necessary for handling operations involving multiple aggregates, providing a mechanism for complex processes to occur without tightly coupling components. In conclusion, the talk emphasizes refining your domain iteratively, ensuring sound communication, and strategically applying DDD principles to streamline your Rails applications. The benefit of having a clear structure allows the application to grow sustainably while minimizing defects related to business logic. Overall, the presentation serves as a practical guide for developers aiming to apply DDD in their Rails applications, providing actionable insights into managing complexity in software development.
Suggest modifications
Cancel