Guidelines for Organising a Comprehensive Hanami Application

Hello Everyone :hugs:,

I’m now using Hanami to work on a large-scale application, and as the codebase expands, I’m searching for tips on how to keep things tidy and structured. I have specific enquiries about the best methods for scaling a Hanami application in terms of performance optimisation and architecture:

Modular Architecture: One of the reasons I choose Hanami is because of its modular design. Managing the dependencies between the modules is getting harder for me as the number of modules rises.

  • Which techniques have you found work well to maintain the separation of modules while enabling the essential interaction?
  • Is it possible to handle inter-module dependencies in a standard manner without creating tight coupling? :thinking:

Services and Repositories: What is the organisational structure of your repositories and service objects? I worry that some services are becoming too big. Is it better to divide them up into more manageable classes or to keep everything under one service object? :thinking:

Testing and CI Pipelines: In a larger application, are there any particular testing techniques that function well with Hanami? How individuals handle test performance and integration with continuous integration pipelines particularly interests me.

Database Efficiency: Database performance is becoming an issue as my app grows. What suggestions do you have for managing huge datasets in the Hanami context? Any advice on caching techniques or database query optimization? :thinking:

https://discourse.hanamirb.org/t/structuring-and-wiring-repositories-in-hanami-2-1/gcp

I’m interested in hearing about your opinions and experiences. Thanks in advance for your help and support.

1 Like