Event Versioning in Event Sourcing Pattern
๐ 1. Events First: ๋ฒ์ ๋ & Upcaster ํต์ฌ ๊ฐ๋
โญ๏ธ ํ์ ๊ฐ๋
-
์ด๋ฒคํธ๋ ๋ถ๋ณ ๋ก๊ทธ
-
์ด๋ฒคํธ ๋ฒ์ = ์คํค๋ง evolution ํํ
-
Upcaster / Adapter ํจํด
-
๋นํ๊ดด์ schema evolution
๐ ๋ฌธ์ / ๋ธ๋ก๊ทธ
- Martin Fowler โ Event Sourcing (๋ฒ์ ๋ ์ค๋ช
ํฌํจ)
https://martinfowler.com/eaaDev/EventSourcing.html
key: โVersioned events sectionโ
- Axon Framework โ Upcasting/Schema Evolution
https://docs.axoniq.io/reference-guide/axon-framework/events/event-versioning
์ถ์ฝ:
-
Schema evolution ๋ฌธ์ ์ ์
-
Upcaster chain
-
Practical patterns
- Event Sourcing Patterns โ Schema Evolution
https://milestone.top/blog/event-sourcing-patterns-schema-evolution-upcasting/
ํ๊ตญ์ด ์นํ์ ์ธ ์ค๋ช + ์ฝ๋ ์
- Chris Richardson โ Evolving Your Event Schema
https://microservices.io/patterns/ux/event-versioning.html
๋ง์ดํฌ๋ก์๋น์ค + ์ด๋ฒคํธ ๋ฒจ๋ฅ ๊ฐ์ฒด(sv) ๊ธฐ์ค ๋ฑ์ฅ
๐ Slides / Talks
- Johan Haleby โ Evolving Event Sourced Systems
https://www.youtube.com/watch?v=3v3_bthM4Tg
upcasting, rehydration ํจํด ์ค์ฌ
๐ 2. Practical Guide / Code Examples
๐ง ๊ตฌํ ์ ๋ต ์ค์ฌ
- Event Sourcing in .NET with upcasting (MS Docs style)
https://docs.microsoft.com/en-us/azure/architecture/patterns/event-sourcing
์ญ์ ๋ฒ์ ๋ ํํธ๊ฐ ์์
- AxonUpcasterChain Example (Java)
GitHub ๊ฒ์:
Axon Framework Upcaster example
Upcaster๊ฐ ์ฒด์ธ์ผ๋ก ๋์ํ๋ ๊ตฌํ ์์
๐ฆ Framework-specific
- EventStoreDB โ Evolving Event Schemas
https://developers.eventstore.com/server/v21.6/clients/event-sourcing-schema-evolution.html
EventStore๋ฅผ ๊ธฐ์ค์ผ๋ก upcasting, metadata, categorization ์ค๋ช
๐ 3. ์๊ฒฉํ ์ด๋ก & ๊ณตํต ์ค์
- Udi Dahan โ Event Versioning Anti-Patterns
https://udidahan.com/2013/03/01/versioning-with-event-sourcing/
๊ฐ์ฅ ์ํํ ์ค์๋ค
- Greg Young โ Event Sourcing Q&A + Patterns
https://cqrs.wordpress.com/documentation/versioning/
์์กฐ CQRS/ES์ ์ ์บ์คํฐ ๊ฐ๋
๐ 4. ๋ธ๋ก๊ทธ ๋ฒ์ญ/ํ๊ตญ์ด ์๋ฃ
- DoneJS โ ์ด๋ฒคํธ ์คํค๋ง ์งํ
https://learn.donejs.com/recipes/event-sourcing-versioning.html
์๋์ ์ผ๋ก ์ฌ์ด ํ๊ตญ์ด ๊ธฐ๋ฐ ํด์ค
- ์ด๋ฒคํธ์์ฑ ์ค์ ์ ๋ฆฌ (TDD ๋ฐํ)
https://meetup.toast.com/posts/xxx
(๊ตฌ์ฒด ๋งํฌ๋ ๊ฒ์ ํค์๋:
์ด๋ฒคํธ์์ฑ ๋ฒ์ ๊ด๋ฆฌ upcaster)