Patchlevel Blog
https://patchlevel.dev/
This blog is for us to share our experiences and insights. Here we will highlight various topics related to web development with PHP, be it design patterns, testing or DevOps. The focus will be on topics related to domain-driven design and event sourcing.Sun, 04 Oct 2026 05:52:44 GMThttps://validator.w3.org/feed/docs/rss2.htmlenPatchlevel Bloghttps://patchlevel.dev/images/logo/dark_verlauf_space.png
https://patchlevel.dev/
All rights reserved 2026, patchlevel<![CDATA[What is New in the Event Sourcing PHPStan Extension 1.3.0]]>
https://patchlevel.dev/blog/what-is-new-in-the-event-sourcing-phpstan-extension-1-3-0
what-is-new-in-the-event-sourcing-phpstan-extension-1-3-0Wed, 05 Aug 2026 00:00:00 GMT<![CDATA[Version 1.3.0 of the patchlevel/event-sourcing-phpstan-extension adds three new rules that guard the state of your aggregates: they report properties that no event ever fills, state that nothing reads, and writes that happen outside an apply method. Every rule can now be turned off individually.]]><![CDATA[Evolving Your Events Over Time]]>
https://patchlevel.dev/blog/evolving-your-events-over-time
evolving-your-events-over-timeWed, 22 Jul 2026 00:00:00 GMT<![CDATA[In part one we designed our events. But what if you got it wrong, or the business simply changed its mind? Events are immutable and your history lives forever, so you cannot just edit them. This second part walks through a toolbox of techniques, from a simple rename to rebuilding the whole store, so you can evolve your events without ever breaking your history.]]><![CDATA[Cutting Your Events the Right Way]]>
https://patchlevel.dev/blog/cutting-your-events-the-right-way
cutting-your-events-the-right-wayTue, 07 Jul 2026 00:00:00 GMT<![CDATA[One of the first things that trips up newcomers to event sourcing is figuring out how to cut their events. Should it be one big event or many small ones? There is no universal answer, it depends on your domain and on how much the decision you are recording actually changes. In this first part of a two-part series we model the same information in two very different ways and work out when each one is the right call.]]><![CDATA[What is New in PHP Event Sourcing 3.20.0]]>
https://patchlevel.dev/blog/what-is-new-in-php-event-sourcing-3-20
what-is-new-in-php-event-sourcing-3-20Thu, 02 Jul 2026 00:00:00 GMT<![CDATA[Version 3.20.0 of patchlevel/event-sourcing focuses on operating event-sourced systems over the long run. You can now keep reading old messages whose header classes were removed, and you can skip the confirmation prompts of the CLI commands to use them in automation.]]><![CDATA[What is New in PHP Event Sourcing 3.12 to 3.19]]>
https://patchlevel.dev/blog/what-is-new-in-php-event-sourcing-3-12-to-3-19
what-is-new-in-php-event-sourcing-3-12-to-3-19Thu, 18 Jun 2026 00:00:00 GMT<![CDATA[A lot has happened since our last release post: eight minor releases for patchlevel/event-sourcing. We added an instant retry command bus, subscription cleanup, auto initialized aggregates, PHP 8.5 and Symfony 8 support and much more. Time to catch up on all the highlights from 3.12 to 3.19.]]><![CDATA[What is New in PHP Event Sourcing 3.11.0]]>
https://patchlevel.dev/blog/what-is-new-in-php-event-sourcing-3-11
what-is-new-in-php-event-sourcing-3-11Tue, 22 Apr 2025 00:00:00 GMT<![CDATA[Discover what is new in patchlevel/event-sourcing 3.11.0, including improved console commands, a powerful query bus, and gap detection for subscriptions. This release focuses on enhancing developer experience and system resilience with practical, real-world features.]]><![CDATA[What is New in PHP Event Sourcing 3.9 & 3.10]]>
https://patchlevel.dev/blog/what-is-new-in-php-event-sourcing-3-9-and-3-10
what-is-new-in-php-event-sourcing-3-9-and-3-10Sat, 12 Apr 2025 00:00:00 GMT<![CDATA[We are excited to announce the release of patchlevel/event-sourcing version 3.9.0 and 3.10.0! These updates introduces features around error handling for the subscription engine and also some nice DX features and PHP 8.4 support.]]><![CDATA[What is New in PHP Event Sourcing 3.8]]>
https://patchlevel.dev/blog/what-is-new-in-php-event-sourcing-3-8
what-is-new-in-php-event-sourcing-3-8Tue, 11 Feb 2025 00:00:00 GMT<![CDATA[We are excited to announce the release of patchlevel/event-sourcing version 3.8.0! This update introduces features such as lookup, command bus, read-only event store, and the official release of the stream store. In this post, we will walk you through the key changes.]]><![CDATA[The Performance Factor in Event Sourcing: What You Need to Know]]>
https://patchlevel.dev/blog/the-performance-factor-in-event-sourcing
the-performance-factor-in-event-sourcingFri, 10 Jan 2025 00:00:00 GMT<![CDATA[This article addresses the common concern regarding the performance of event sourcing, particularly the speed at which long-living aggregates with many events are loaded. It explores solutions such as snapshotting and stream splitting to optimize aggregate loading. Furthermore, projections allow for the creation of highly flexible and optimized read models, each can be tailored to specific needs.]]><![CDATA[What is new in patchlevel/event-sourcing in version 3.7]]>
https://patchlevel.dev/blog/what-is-new-in-php-event-sourcing-3-7
what-is-new-in-php-event-sourcing-3-7Thu, 09 Jan 2025 00:00:00 GMT<![CDATA[We’re excited to announce the release of our php library patchlevel/event-sourcing version 3.7.0. This release features better testing capabilities with InMemorySubscriptionStore::clear, improved subscription performance and a new #[Stream] attribute for micro aggregates!]]><![CDATA[What is new in php event sourcing 3.6]]>
https://patchlevel.dev/blog/what-is-new-in-php-event-sourcing-3-6
what-is-new-in-php-event-sourcing-3-6Thu, 19 Dec 2024 00:00:00 GMT<![CDATA[We are happy to announce the release of the php event sourcing library in version 3.6.0. This release contains several exciting new features like Pipe and Reducer. In this blog post, we will provide you with an overview of the changes.]]><![CDATA[Event Sourcing with Symfony]]>
https://patchlevel.dev/blog/event-sourcing-with-symfony
event-sourcing-with-symfonyThu, 12 Dec 2024 00:00:00 GMT<![CDATA[Today we want to show you how to use the event sourcing library with Symfony. We will guide you through the installation, show you how to use the bundle in a small example and give you a working hotel REST-API.]]><![CDATA[Mastering sensitive data handling and GDPR compliant secure data removal with event sourcing]]>
https://patchlevel.dev/blog/mastering-sensitive-data-handling-and-gdpr-compliant-secure-data-removal-with-event-sourcing
mastering-sensitive-data-handling-and-gdpr-compliant-secure-data-removal-with-event-sourcingThu, 07 Nov 2024 00:00:00 GMT<![CDATA[This post explores techniques for handling data removal in event-sourced applications, focusing on compliance and privacy needs, like GDPR. By using methods such as Crypto Shredding and Tokenization for anticipated data deletions, and History Rewriting for unexpected cases, developers can securely remove data while maintaining an immutable event store.]]><![CDATA[What is new in php event sourcing 3.5]]>
https://patchlevel.dev/blog/what-is-new-in-php-event-sourcing-3-5
what-is-new-in-php-event-sourcing-3-5Thu, 17 Oct 2024 00:00:00 GMT<![CDATA[We are happy to announce the release of the php event sourcing library in version 3.5.0. This release contains several exciting new features and improvements. In this blog post, we will provide you with an overview of the changes.]]><![CDATA[Why should I use event sourcing?]]>
https://patchlevel.dev/blog/why-should-i-use-event-sourcing
why-should-i-use-event-sourcingTue, 15 Oct 2024 00:00:00 GMT<![CDATA[Today, our topic will be the benefits of event sourcing. We will discuss the possibilities it offers without data loss. The main topics will be reporting & analytics, software architecture & scalability, testing and auditing.]]><![CDATA[The good and the bad of event bus in event sourcing]]>
https://patchlevel.dev/blog/the-good-and-the-bad-of-event-bus-in-event-sourcing
the-good-and-the-bad-of-event-bus-in-event-sourcingMon, 07 Oct 2024 00:00:00 GMT<![CDATA[The event bus is a powerful design pattern in the world of event sourcing. It allows you to decouple the event producers from the event consumers. But it also has its downsides.]]><![CDATA[When can I use event sourcing?]]>
https://patchlevel.dev/blog/when-can-i-use-event-sourcing
when-can-i-use-event-sourcingTue, 01 Oct 2024 00:00:00 GMT<![CDATA[Often, when talking with people about event sourcing and whether they have used it, I get the same answer: "No, I have never used it, but I want to!" My question afterward is always: "So why the hesitation?" Let’s take a look at that.]]><![CDATA[What is new in php event sourcing 3.4]]>
https://patchlevel.dev/blog/what-is-new-in-php-event-sourcing-3-4
what-is-new-in-php-event-sourcing-3-4Wed, 25 Sep 2024 00:00:00 GMT<![CDATA[We are happy to announce the release of the php event sourcing library in version 3.4.0. This release contains several exciting new features and improvements. In this blog post, we will provide you with an overview of the changes.]]><![CDATA[How to combine ORM entities with event sourcing aggregates]]>
https://patchlevel.dev/blog/combine-orm-with-eventsourcing
combine-orm-with-eventsourcingTue, 24 Sep 2024 00:00:00 GMT<![CDATA[Inspired by a question on GitHub regarding the combined usage of ORM entities with event sourcing aggregates I decided to write how to do exactly that.]]>