Abstract
Event sourced systems are increasing in popularity because they are reliable, flexible, and scalable. In this article, we point a microscope at a software architecture pattern that is rapidly gaining popularity in industry, but has not received as much attention from the scientific community. We do so through constructivist grounded theory, which proves a suitable qualitative method for extracting architectural knowledge from practitioners. Based on the discussion of 19 event sourced systems we explore the rationale for and the context of the event sourcing pattern. A description of the pattern itself and its relation to other patterns as discussed with practitioners is given. The description itself is grounded in the experience of 25 engineers, making it a reliable source for both new practitioners and scientists. We identify five challenges that practitioners experience: event system evolution, the steep learning curve, lack of available technology, rebuilding projections, and data privacy. For the first challenge of event system evolution, we uncover five tactics and solutions that support practitioners in their design choices when developing evolving event sourced systems: versioned events, weak schema, upcasting, in-place transformation, and copy-and-transform.
Original language | English |
---|---|
Article number | 110970 |
Number of pages | 16 |
Journal | Journal of Systems and Software |
Volume | 178 |
DOIs | |
Publication status | Published - Aug 2021 |
Bibliographical note
Funding Information:This research was supported by the NWO AMUSE project ( 628.006.001 ): a collaboration between Vrije Universiteit Amsterdam, Utrecht University, and AFAS Software in the Netherlands.
Publisher Copyright:
© 2021 The Author(s)
Funding
This research was supported by the NWO AMUSE project ( 628.006.001 ): a collaboration between Vrije Universiteit Amsterdam, Utrecht University, and AFAS Software in the Netherlands.
Keywords
- CQRS
- Event sourcing
- Event-driven architecture
- Grounded theory
- Schema evolution
- Software architecture patterns