Avanscoperta
DIY Event Sourcing Tooling Workshop

DIY Event Sourcing Tooling Workshop

Optimise the Developer Experience for CQRS and Event Sourcing architectures

Milan, 12th -13th December 2019

Scaling applications, refactoring models, testing the solution, debugging problems, proving what happened, or deploying to production; CQRS and event sourcing make it easier. But all these advantages come at a cost:

  • Compared to traditional applications, there is often more ceremonial code involved before you have your first domain model hooked up to your application
  • When you move to an event-sourced model, you lose the default view on the current state of the system
  • There is no easy way to correct little mistakes by simply adjusting a value in the datastore
  • Asynchronous handling of messages increases complexity when it comes to debugging and monitoring
  • Although evolving models in CQRS can be easier, it still requires you to understand how the current version of the model works. It can be a challenge to communicate about this in an effective and efficient way, especially in large teams
  • While commands and events can help software testers and product owners pinpoint what has happened and why, it can be challenging to see the forest for the trees if all you have is a list of millions of messages.

Unfortunately, there are not a lot of tools that help us overcome these typical challenges of event sourcing and CQRS. Traditional CRUD based MVC applications benefit from decades of free and paid-for tooling that help you get the job done faster.

In the CQRS and event sourcing world that is not the case. While there are frameworks and libraries available, they generally constrain our models and our way of building software. They do so without providing a comprehensive set of tools for addressing the problems mentioned before.

The cry for a lack of tooling for CQRS and event sourcing is as old as the approaches are themselves. So where does that leave us? What can we do?

Target audience

This course will be most beneficial for programmers. Are you a software tester who enjoys writing code and likes to be involved in the software construction process? You too might benefit from this course.

The workshop is centred around the web application context but the ideas are valuable in other types of applications too.

But regardless of your role, one thing is critical: you need a thorough knowledge of CQRS and Event Sourcing.

Program

Join Marijn Huizendveld for this brand new 2-day “DIY Event Sourcing Tooling” workshop.
Here’s a list of the topics we’ll be covering in this extremely practical workshop:

  • Seeing an overview of all the events of a specific stream in your web application by opening up the developer tools of your internet browser
  • An enriched view of the events in your event store that allows you to navigate to associated streams
  • Having links from your events to the commands that caused them in the view of your event store
  • A testing framework that can be understood by domain experts because it works based on domain events and commands
  • Downloading an integration test for your testing framework after reproducing a problem in a production environment
  • Your test scenarios visualized identical to your event storming workshop
  • Versioning of messages simplified thanks to a DSL for schema specification
  • Visualizing trends using your existing analytics toolset
  • This and more, applied in such a way that it becomes an integral part of your day to day workflow.

What will you learn

Investments in tooling pay off quickly. Especially when you take small steps. Together with Marijn Huizendveld, we will look at different tools that can help us with building, testing, debugging and changing your software.

With examples taken from real projects, you will experience that specific tools can make you more efficient and how they would fit in your workflow.
Following each example we will implement the tool in the language of your choice.
If you bring your own event sourced domain models we discuss the constraints of your specific context.

The goal of the workshop is to inspire you to build tools that fit your context and to show you that it can be done with little effort.
After attending it you will be enabled to build tools yourself in the future.

Expect to get your hands dirty

The goal of this two-day workshop with Marijn Huizendveld is to learn how to identify, design and build a tool for your specific context. What better way to learn than by doing: during the class, small teams will work on building their own set of tools.

The exercises will be centred around an existing domain model and corresponding event stream. Because each team will work on their own specific tool, we will be able to explore more ideas as a collective. At the end of the workshop, we will compare the various approaches.

Requirements

In order to fully benefit from this workshop with Marijn Huizendveld, please make sure you have a:

  • Sufficient programming skills so that you can mob program within a team
  • Laptop with a “Hello world” application in a programming language that you’re proficient in
  • Some testing framework setup to run integration tests against your “Hello world” app.

F.A.Q.

Do I need my laptop?
Yes, you will need it. But keep in mind that although we are programming during the course we are not aiming to write production-level code. The goal is to learn about building our own tools.

Is there anything I need to do before the workshop?
Marijn will contact you for a 15-minute onboarding call prior to the training to get to know you and your context.

Will there be any materials to take away?
Some tools that are easily portable will be provided in the form of a code download.

What language will this workshop be in?
The workshop and all the materials will be in English.

Confirmation: Is the workshop guaranteed to run?
No, the workshop will be confirmed upon reaching a minimum number of participants. All registered participants will be notified by email no later than one month prior to the workshop date.

Practical Info

Language: English.
Time: 9.30 am – 5.30 pm
Laptop: Check out the FAQ section. 
Included in the price: Two coffee breaks and lunch with the trainer and the other attendees are also included in this ticket… because networking matters :-)

How to get to Milan?

The workshop will be held at the Pirelli Institute (Viale Fulvio Testi, 223, Milan).
Check out how to get to the Pirelli Institute, our recommendations for the accommodation, how to get to Milan, and much more at our Pirelli Institute Venue Page.

Questions? Drop us a line at info@avanscoperta.it.

How our tickets work

Tickets

Under_Cover_Learner Discount SAVE 20%

If you’re paying the ticket out of your own pocket and you don’t have a VAT number, you can get a 20% discount on any tickets and on any ticket tiers!

How? Just enter the Under_Cover_Learner promotional code in the registration field on Eventbrite.

Please note: this code cannot be used in conjunction with any other offers/discount codes, and it applies to any ticket tier.

Marijn Huizendveld

Marijn teaches people of different backgrounds the skill of doing the things that matter in environments that are critical to performance.

Often his work involves organizations, software and customers. He brings these worlds together while teaching you and your colleagues how to do so.

About us

Avanscoperta is a growing community of professionals learning together, exchanging experiences and ideas, exploring uncharted territories.

We carefully select the most relevant topics and the best trainers and thought leaders worldwide with an eye to the most engaging teaching techniques.
Are you ready to learn with us? 🙂

Are you interested in this course?

If you have any specific questions, or if you want to receive more information on dates, content or offers about this course, drop us a line. We'll gladly get back to you!







NEWSLETTER

Get exclusive content from experts in software development, technology, business and design!

SUBSCRIBE TO OUR NEWSLETTER! :-)

Subscribe to our newsletter!