Is there an Aggregate per-request or 1 fat aggregate per piece of domain?
My software has an Experiment as the central Entity which contains lots of details about how scientist does what he does. Basically 99% of the functionality happens within the Experiment and there could be thousands of objects stored in it. I have difficulties understanding Aggregates and mapping them to my domain: To me it seems like this Experiment object is the Aggregate because it contains all other objects and if something changes - it may propagate to other objects within the same Experiment. So Experiment seems like the right object to keep all the invariants and constraints. But then it means the whole app's logic is stored within 1 huge Aggregate So in DDD do we create a special class per type of request (which is going to reference Experiment) and call it an Aggregate? Then we'll have hundreds of such Aggregates. Or do we treat things like Experiment as an Aggregate and put everything there? UPDATE: after years of thinking about this, my conclusion is that DDD (well, the Aggregate idea) is simply not suited for complex projects.

My software has an Experiment as the central Entity which contains lots of details about how scientist does what he does. Basically 99% of the functionality happens within the Experiment and there could be thousands of objects stored in it. I have difficulties understanding Aggregates and mapping them to my domain:
- To me it seems like this Experiment object is the Aggregate because it contains all other objects and if something changes - it may propagate to other objects within the same Experiment. So Experiment seems like the right object to keep all the invariants and constraints.
- But then it means the whole app's logic is stored within 1 huge Aggregate
So in DDD do we create a special class per type of request (which is going to reference Experiment) and call it an Aggregate? Then we'll have hundreds of such Aggregates. Or do we treat things like Experiment as an Aggregate and put everything there?
UPDATE: after years of thinking about this, my conclusion is that DDD (well, the Aggregate idea) is simply not suited for complex projects.