Talks
Speakers
Events
Topics
Sign in
Home
Talks
Speakers
Events
Topics
Leaderboard
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
The general part of any web application is business logic. Unforchanotly, it's really hard to find a framework with specific rules and explanations how to work with it. In hanami, we care about long-term maintenance that's why it's really important to us how to work with business logic. In my talk, I'll share my ideas how to store and work with business logic in hanami apps. We will talk about hanami, dry and some architecture ideas, like event sourcing. This talk will be interesting for any developers. If you work with other frameworks you can take these ideas and my it to your project. RubyKaigi 2018 https://rubykaigi.org/2018/presentations/anton_davydov
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
# Summary of "Architecture of Hanami Applications" In this presentation at RubyKaigi 2018, Anton Davydov discusses the architecture of Hanami applications, emphasizing the significance of maintaining business logic for long-term maintenance. Davydov highlights the challenges in finding a framework that provides specific guidelines for managing business logic, making a case for the advantages of Hanami. ## Key Points Discussed: - **Maintenance Challenges**: The talk focuses on maintenance problems in web applications, as they often encompass management, performance, and maintainability issues. - **Good Architecture**: Davydov suggests that good architecture should prioritize isolation, controlled logic, and avoid global state. He emphasizes that these elements are crucial for adding or refactoring features with ease. - **Functional Objects**: He promotes using functional objects (like dry transactions) for maintaining state by eliminating global state and facilitating easier testing. - **Dependency Injection**: Essential for providing flexibility in functional objects, dependency injection enables testing different scenarios easily by substituting dependencies. - **DRY Containers**: Containers help manage dependencies efficiently, promoting better performance and easier testing by allowing instance memoization. - **Separation of Business Logic**: Emphasizes that business logic should be separated within service objects and models for better maintainability, drawing contrasts with Rails' approach, which sometimes conflates responsibilities within models. - **Domain-Driven Design (DDD)**: Discusses using DDD for structuring applications where each domain can cater to distinct business values, allowing for cleaner communication between services. - **Event Sourcing**: Introduces event sourcing as a method of capturing events rather than traditional data storage. This allows applications to react to events and simplifies management of business logic across complex systems. ## Examples & Illustrations: - Davydov shares anecdotes from his experiences with Rails applications where shared business logic led to complexity, contrasting this with Hanami’s ability to manage similar business logic across applications seamlessly. - He explains the Dry system for better dependency management and introduces repositories in Hanami and their advantages over Rails' ActiveRecord. ## Conclusions and Takeaways: - The importance of maintainability in large web applications. - The need for clear separation of concerns and isolation within business logic management. - A focus on utilizing modern patterns and practices like dependency injection, functional objects, and event sourcing to address common architectural challenges in web development. - Davydov encourages developers to explore further resources for detailed understanding and invites questions for deeper discussion.
Suggest modifications
Cancel