I’m currently working on ye big ball of mud. Implementing new features in this 20+ year code base is near impossible. The company has a hard requirement to remove some database related dependencies (thought that never happened ), and a requirement to support an auditable history for specific areas of the system. Overall the system is a monitoring application standing up a realtime support center. Event sourcing is a no brainer and Marten seems like a place my team start.
We currently have tons of configuration stored in the database used to drive the monitoring for each system. Could we be successful using event sourcing to standup all monitoring while maintaining our CRUD system for configuration? I have a few concerns.
(1) Knowing we have existing data that would need to used to create aggregates with their current state and configuration does it make sense to apply an initial event to the new event sourced aggregate?SensorImportedEvent RoomImportedEvent etc.
(2) knowing that the existing UX for configuration and creation would still be used to modify the configuration (not state) does it make sense to apply modified events to the aggregates?SensorConfigurationEdited
(3) Do we apply this initial event and no longer utilize the existing data from the existing tables. This data is so ingraining into so many business tools and processes that I’m not sure I can ever break down those tables. Obviously once it’s inside the event history I can start adding events and projecting state. I’m concerned I would end with multiple sources of truth and inconsistent data if the old data is not nuked.
Thanks in advance for any insightful tips or information. The company is also open to hiring a consultant once we get a little further into this process to help guide us a bit.