An Event Source of Confusion
I don't know how seriously to take event-sourcing. It seems cool. I like a lot of what it gives you. That said, it seems rigid, and going all in on an event-sourcing architecture feels kind of like going all in on Redux. (Pretend there's no React baggage in that comparison.)
I've met a good many smart people who swear by it. I've met some people who've enjoyed experimenting with it. I've even met some people who have built large, real systems with it.
There are some really nice benefits:
- The event stream is a natural debugging tool that never throws away data.
- Many bugs in data can be fixed retroactively by updating the code that produces the projections, without ever touching the underlying data.
- The separation of projections from the underlying data helps with separation of concerns, plus you can create new projections for historical data. Very cool.
I'm seriously intrigued by the idea, but it's hard to justify trying it on anything I work on. I'm certainly not going to rewrite Solidus from scratch to use such a design. While I know you can scale an event-sourcing architecture to the traffic levels that our largest stores handle, I'm not sure I would even have the knowledge and skills for that.
Luckily, I'm off in my favourite place in the world1, surfing in the mornings, and relaxing in the evenings. It was supposed to be a summer vacation with Amy, but due to a scheduling conflict, it's just me, giving me ample time to read through a couple of books I've picked up on CQRS and event-sourcing.
I'm hoping that'll give me enough of a foundation in the concepts at play to allow me to do one of two things.
- If I like what I'm seeing enough, I'll throw together a small project using event-sourcing.
- If I decide it's not for me, then at least I'll have some more thoughts on the subject. I'll complain about event-sourcing on social media and someone can set me straight.
Conveniently, I've already got a project that should benefit from event-sourcing, my social media crossposting tool. Designing a normalized relational schema for it was actually kind of tricky due to some more advanced features I'm working on. Despite my mild skepticism around event-sourcing, I honestly think it might solve my data-modelling woes on the project.
I was driving through downtown Victoria the other day and saw some guy wearing an Iron Kingdom shirt. I'd never heard of the band, but the shirt gave me the impression I might like them, so I gave them a listen. It turned out they were from nearby on the mainland.
Fast forward a few weeks and I'm sifting through the new releases and reading reviews, and I find a fairly positive review for a new record from them! Shadows and Dust is a solid NWOTHM album with a little Dickinson-esque NWOBHM tinge to it at times. Great record start to finish.
Shadows and Dust | Iron Kingdom
10 track album
-
This Skill Issue was written in advance, before I left on my trip. ↩