201 subscribers
Looks like the publisher may have taken this series offline or changed its URL. Please contact support if you believe it should be working, the feed URL is invalid, or you have any other concerns about it.
התחל במצב לא מקוון עם האפליקציה Player FM !
פודקאסטים ששווה להאזין
בחסות


1 Matthew Lillard and the Glorious Dorito Salad 43:18
105. Event Sourcing and CQRS
סדרה בארכיון ("עדכון לא פעיל" status)
When? This feed was archived on December 12, 2020 08:26 (
Why? עדכון לא פעיל status. השרתים שלנו לא הצליחו לאחזר פודקאסט חוקי לזמן ממושך.
What now? You might be able to find a more up-to-date version using the search function. This series will no longer be checked for updates. If you believe this to be in error, please check if the publisher's feed link below is valid and contact support to request the feed be restored or if you have any other concerns about this.
Manage episode 294560466 series 2501898
Robert Blumen is a DevOps engineer with Salesforce, and he's joined in conversation with Andrzej Ludwikowski, a software architect at SoftwareMill, a Scala development shop. Andrzej is introducing listeners to the concept of event sourcing against the more traditional pattern of CRUD, which stands for create-read-update-delete. CRUD systems are everywhere, and are most typically associated with SQL databases. In comparison, event sourcing is a simply a sequential list of every single action which occurred on a system. Whereas in a database, a row may be updated, erasing the previous data in a column, and event source system would have the old data kept indefinitely, and simply record a new action indicating that the data was updated. In a certain sense, you can get the state of your system at any point in time.
Each architectural pattern has its pros and cons. For one, an event source system can make it easier to track down bugs. If a customer notes an issue an production, rather than pouring through logs, developers can simply "rewind" the state of the application back to some earlier event and see if the faulty behavior is still there. On the flip side, since the event stream is immutable, fixes to previous data needs to be made at the end of the stream. You can modify old events or insert new ones into the flow.
CQRS, or Command Query Responsibility Segregation, builds on top of event sourcing. The idea is to separate the part of the application responsible for handling commands and writes from the part responsible for handling queries and reads. This separation is not only on a software level (different repositories and different deployments), but also on the hardware level ( different hosts and different databases). The motivation for this is to be able to scale each part independently. Maybe your app has more writes than reads, and thus requires different computing power. It allows for a separation of concerns, and can make overall operations more efficient, albeit at a complexity cost. Andrzej is quick to note that event sourcing and CQRS divisions are not necessary for every application. Teams, as always, need to understand how the data flows in their application and which architectural pattern is most efficient for the problems they are trying to solve.
Links from this episode
- SoftwareMill is a Scala development shop
- Martin Fowler gives a brief run-down on event sourcing
- On the SoftwareMill blog, Andrzej has a blog posts on entry-level event sourcing, keeping your domain clean in Event Sourcing, and the best serialization strategy for Event Sourcing
- CQRS.nu provides more educational resources
- Andrzej Ludwikowski's web site and talk Event Sourcing: What could go wrong?
132 פרקים
סדרה בארכיון ("עדכון לא פעיל" status)
When?
This feed was archived on December 12, 2020 08:26 (
Why? עדכון לא פעיל status. השרתים שלנו לא הצליחו לאחזר פודקאסט חוקי לזמן ממושך.
What now? You might be able to find a more up-to-date version using the search function. This series will no longer be checked for updates. If you believe this to be in error, please check if the publisher's feed link below is valid and contact support to request the feed be restored or if you have any other concerns about this.
Manage episode 294560466 series 2501898
Robert Blumen is a DevOps engineer with Salesforce, and he's joined in conversation with Andrzej Ludwikowski, a software architect at SoftwareMill, a Scala development shop. Andrzej is introducing listeners to the concept of event sourcing against the more traditional pattern of CRUD, which stands for create-read-update-delete. CRUD systems are everywhere, and are most typically associated with SQL databases. In comparison, event sourcing is a simply a sequential list of every single action which occurred on a system. Whereas in a database, a row may be updated, erasing the previous data in a column, and event source system would have the old data kept indefinitely, and simply record a new action indicating that the data was updated. In a certain sense, you can get the state of your system at any point in time.
Each architectural pattern has its pros and cons. For one, an event source system can make it easier to track down bugs. If a customer notes an issue an production, rather than pouring through logs, developers can simply "rewind" the state of the application back to some earlier event and see if the faulty behavior is still there. On the flip side, since the event stream is immutable, fixes to previous data needs to be made at the end of the stream. You can modify old events or insert new ones into the flow.
CQRS, or Command Query Responsibility Segregation, builds on top of event sourcing. The idea is to separate the part of the application responsible for handling commands and writes from the part responsible for handling queries and reads. This separation is not only on a software level (different repositories and different deployments), but also on the hardware level ( different hosts and different databases). The motivation for this is to be able to scale each part independently. Maybe your app has more writes than reads, and thus requires different computing power. It allows for a separation of concerns, and can make overall operations more efficient, albeit at a complexity cost. Andrzej is quick to note that event sourcing and CQRS divisions are not necessary for every application. Teams, as always, need to understand how the data flows in their application and which architectural pattern is most efficient for the problems they are trying to solve.
Links from this episode
- SoftwareMill is a Scala development shop
- Martin Fowler gives a brief run-down on event sourcing
- On the SoftwareMill blog, Andrzej has a blog posts on entry-level event sourcing, keeping your domain clean in Event Sourcing, and the best serialization strategy for Event Sourcing
- CQRS.nu provides more educational resources
- Andrzej Ludwikowski's web site and talk Event Sourcing: What could go wrong?
132 פרקים
All episodes
×![Code[ish] podcast artwork](https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/32.png 32w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/64.png 64w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/128.png 128w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/256.png 256w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/512.png 512w)
![Code[ish] podcast artwork](/static/images/64pixel.png)
1 118. Why Writing Matters for Engineers
![Code[ish] podcast artwork](https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/32.png 32w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/64.png 64w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/128.png 128w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/256.png 256w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/512.png 512w)
![Code[ish] podcast artwork](/static/images/64pixel.png)
1 117. Open Source with Jim Jagielski
![Code[ish] podcast artwork](https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/32.png 32w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/64.png 64w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/128.png 128w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/256.png 256w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/512.png 512w)
![Code[ish] podcast artwork](/static/images/64pixel.png)
![Code[ish] podcast artwork](https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/32.png 32w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/64.png 64w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/128.png 128w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/256.png 256w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/512.png 512w)
![Code[ish] podcast artwork](/static/images/64pixel.png)
1 115. Demystifying the User Experience with Performance Monitoring
![Code[ish] podcast artwork](https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/32.png 32w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/64.png 64w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/128.png 128w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/256.png 256w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/512.png 512w)
![Code[ish] podcast artwork](/static/images/64pixel.png)
1 114. Beyond Root Cause Analysis in Complex Systems
![Code[ish] podcast artwork](https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/32.png 32w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/64.png 64w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/128.png 128w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/256.png 256w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/512.png 512w)
![Code[ish] podcast artwork](/static/images/64pixel.png)
1 113. Principles of Pragmatic Engineering
![Code[ish] podcast artwork](https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/32.png 32w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/64.png 64w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/128.png 128w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/256.png 256w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/512.png 512w)
![Code[ish] podcast artwork](/static/images/64pixel.png)
1 112. Managing Public Key Infrastructure within an Enterprise
![Code[ish] podcast artwork](https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/32.png 32w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/64.png 64w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/128.png 128w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/256.png 256w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/512.png 512w)
![Code[ish] podcast artwork](/static/images/64pixel.png)
1 111. Gift Cards for Small Businesses
![Code[ish] podcast artwork](https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/32.png 32w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/64.png 64w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/128.png 128w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/256.png 256w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/512.png 512w)
![Code[ish] podcast artwork](/static/images/64pixel.png)
![Code[ish] podcast artwork](https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/32.png 32w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/64.png 64w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/128.png 128w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/256.png 256w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/512.png 512w)
![Code[ish] podcast artwork](/static/images/64pixel.png)
1 109. Meditation for the Curious Skeptic
![Code[ish] podcast artwork](https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/32.png 32w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/64.png 64w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/128.png 128w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/256.png 256w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/512.png 512w)
![Code[ish] podcast artwork](/static/images/64pixel.png)
1 108. Building Community with the Wicked CoolKit
![Code[ish] podcast artwork](https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/32.png 32w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/64.png 64w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/128.png 128w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/256.png 256w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/512.png 512w)
![Code[ish] podcast artwork](/static/images/64pixel.png)
1 I Was There: Stories of Production Incidents II
![Code[ish] podcast artwork](https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/32.png 32w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/64.png 64w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/128.png 128w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/256.png 256w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/512.png 512w)
![Code[ish] podcast artwork](/static/images/64pixel.png)
1 107. How to Write Seriously Good Software
![Code[ish] podcast artwork](https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/32.png 32w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/64.png 64w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/128.png 128w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/256.png 256w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/512.png 512w)
![Code[ish] podcast artwork](/static/images/64pixel.png)
1 106. Growing a Self-Funded Company
![Code[ish] podcast artwork](https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/32.png 32w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/64.png 64w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/128.png 128w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/256.png 256w, https://cdn.player.fm/images/23686112/series/BR0PSa6K222OMf3v/512.png 512w)
![Code[ish] podcast artwork](/static/images/64pixel.png)
ברוכים הבאים אל Player FM!
Player FM סורק את האינטרנט עבור פודקאסטים באיכות גבוהה בשבילכם כדי שתהנו מהם כרגע. זה יישום הפודקאסט הטוב ביותר והוא עובד על אנדרואיד, iPhone ואינטרנט. הירשמו לסנכרון מנויים במכשירים שונים.