Details Patterns
The problem of presenting a detailed view of an item in the system is a common one. The user or the system needs to interact with a single item at once, with a focus on the details of the item. This section details the patterns that can be used to address this problem.
Attributes
The attributes to consider when deciding for a pattern to implement a solution to a specific problem are:
- Addressing: How to address the item in the system? Use only its identifier or any other unique attribute? Is it necessary to retrieve multiple items at once?
- Consistency: How to ensure that the item is consistent? How to handle concurrency issues?
- Performance: How to retrieve the item? How to ensure that the item is retrieved in a timely manner?
- Evolution: How to evolve the construction of the item? How to fix any bugs or issues without breaking the system?
- Denormalization: Is it necessary to denormalize the item? How to ensure that the item is up-to-date?
For each attributes we need to consider the following questions:
- How complex actually is the attribute? Do not try to design a solution for a problem that does not exist.
- How much value the system will get from the attribute? Do not incur in technical debt for a feature that is not used.
- How open to evolution the attribute is? Do not design a solution that will not be able to evolve with the system.
Conventions
- Marten Event Sourcing Aggregate: How to address the problem of managing a single item in the system using Marten Event Sourcing Aggregate.
- Snapshotting: TBD
- Time Travel: TBD