In a previous article, I wrote a few things about upcasters. One of the significant downsides when implementing an upcaster is that it adds to our application’s technical debt. An alternative technique is the versioned event store (or versioned event stream), where the existing event store is copied and modified. In this post I’ll discuss the pros and cons of both approaches.
Forget me please? Event sourcing and the GDPR
In May 2018, a new piece of EU legislation called the General Data Protection Regulation (GDPR) will come into effect. The GDPR attempts to regulate data protection for individuals within the EU and has very interesting and specific implications for applications that use event sourcing. In this article, I’ll discuss my thoughts on this subject and a few pointers for those implications.
Using Tracking processors to replay events in Axon Framework 3
Replaying events is a crucial part in any event sourcing / cqrs application, to rebuild projections, generate new ones or seed external systems with data.
I’m a big fan of the Axon Framework. Even with its quirks and occasional (strange) bugs, it’s my go-to toolbox for my event sourcing & cqrs consulting and development work.
With the recent 3.0 release, Axon changed the way events can be replayed by introducing the Subscribing and Tracking event processors. The Subscribing processor follows the event stream in real-time, whereas the Tracking processor keeps track of events it has processed (using a token). This means that the Tracking processor can be stopped and resumed, and it will pick up processing where it left off.
Using annotations in Prooph
One of the things I love about Java is its native, compiler-level support for annotations, a form of syntactic metadata which can be applied to source code but also retain at run-time to influence application behavior. I use them almost daily in my projects.
I do a fair amount of consulting and development on event sourced applications and these usually use Axon, a popular CQRS & event sourcing framework. Recently, Axon version 3 was released, supporting a number of annotations that can turn any POJO (Plain Old Java Object) into an event-sourced aggregate.
State Of DevOps Report
The 2017 version of Puppet’s State of DevOps Report was just released.
To me, the most interesting takeaways from the report are:
- High performing teams have 46x more frequent deploys, 96x faster mean time to recover/repair and a 5x lower change failure rate.
- They also automate significantly more work (automation is a key ingredient of any successful DevOps strategy).
- A lower change failure rate and significant automation mean these teams spend 44% more time on new work (and 26% less time on unplanned work and rework).
- Developers in high performing teams generally work in small batches and practice Trunk Based Development. Low performing teams on the other hand use long-lived feature branches and merge infrequently to trunk or master (read on for my thoughts about feature branches).
The Road to Continuous Deployment (DevOpsPro Vilnius 2017)
Below are the slides of my talk “The Road to Continuous Deployment: a case study” as presented at DevOpsPro Vilnius 2017, in Multikino in the beautiful city of Vilnius, Lithuania.
The Road to Continuous Deployment (JAX DevOps London 2017)
Below are the slides of my talk “The Road to Continuous Deployment: a case study” as presented at the JAX DevOps Conference 2017, in Park Plaza Victoria, London.
Phing development update
A few months have passed since the last Phing development update in October, so here’s an overview of some of the recent changes.
The Road to Continuous Deployment (PHP UK Conference 2017)
Below are the slides of my talk “The Road to Continuous Deployment: a case study” as presented at the PHP UK Conference 2017, in The Brewery, London.
CQRS & Event Sourcing in the wild (PHP Benelux 2017)
Below are the slides of my talk “CQRS & Event Sourcing in the wild”, as presented at PHP Benelux 2017.