The Power of Event Sourcing

Discover how we used Event Sourcing to maintain flexibility, handle changes, and ensure efficient error resolution in application development.

Sharing Our Positive Experience with Event Sourcing in a Customer Application

We just had a nice experience while maintaining one of the applications we created for our customer and we wanted to share this with you!

Project Overview

We are building a small ‘on-the-side’ project for a customer that supports the planing of a huge event with more than 1.500 guests. It's not in their major line of work and they use the application for about 1.5 months to organise the seating plan for their annual Company party. Together we decided that it’s OK to take some shortcuts during the implementation to reduce the overall effort.

Development Phase

Over the last few weeks we have been busy working on the application. Lots of small change requests ('I want a different text in the generated email', ‘Can you add this field on that page?’, ‘We thought this feature works differently’) were coming in every couple of days.

Event-Sourcing Approach

Due to the ‘ad-hoc’ (or in German we would call it ‘hemdsärmelig’) setup of the project we, me and my colleagues Rinat Abdullin and Aigiz Kunafin, decided it would make sense to take an event-sourcing approach for the application.
One of the reasons is that storing all changes in the application as raw events allows us to move fast, evolve the application as new requirements arise and spend not too much time in modelling the system upfront.
Rinat sketched it briefly in a Tweet a while ago:

  • we have an event sourced application with a single aggregate, operating on a single event stream,

  • running on one application server is sufficient,

  • we keep all state in memory and persist only new events to a SQL-Server (currently we have approximately 10.000 events and the application - ASPNETCORE - consumes 250 MB of memory on Windows)

  • and we have isolated, dedicated pages which communicate with the user via web-sockets. (It's a mixture of serverside rendering and some Vanilla/jQuery based JavaScript)

Benefits and Setup

The setup allows us to move fast and there is not a lot of time to write tests; We have only one unit & integration test. To mitigate this, we wanted to make sure that we had a good, fast and reliable CI/CD pipeline and comprehensive logging in the application.

A consequence of not having a suite of tests is that things tend to break from time to time. Usually the errors are either

  • isolated on one particular page

  • mitigated via Event Sourcing

The errors are usually fixed within a few minutes and rolled out via another deployment.

The incident

Just a couple of days ago we had another incident with the customer where the architecture and the setup paid off big time.

In the application we have functionality where users can assign physical dining tables, spread over several rooms of the event location, to logical tables to organise and plan the event. Prior to this assignment the customer does a physical random table-picking, by drawing the tables assignments one by one, to determine which table should be positioned in which room.

Afterwards they enter the randomly assigned tables into an Excel-File and upload it to the application.

The Issue and Resolution

However, there is a catch: some tables - for VIPs - are placed in a different way and shouldn’t be updated by this table-picking mechanism.
This time they kept the logical VIP tables in the Excel-File they uploaded, but they had no physical tables assigned to them.
During the upload of the file we reset all previously assigned physical tables for the VIPs. You could argue that it was not a bug and worked as designed, but the customer was still not very happy about this, because they thought that they lost a lot of work!

So what did we do to mitigate this issue? We simply deleted the events generated by the upload, fixed the implementation, re-uploaded the file and everything was fine. And the best thing: in the meanwhile the customer could keep on working with the application! Although we did ask them not to work in areas directly related with VIP tables.

Customer Satisfaction

Everything was resolved in approximately one hour and the result: a very happy customer.
The customer knew upfront that we were storing every change they made in the application and that this empowers us to react to errors either on our or the customers side in a very fast way. We proved them again that there are no catastrophic errors and we have chosen the right architecture for the application!

Blog 7/16/21

Building A Shell Application for Micro Frontends | Part 4

We already have a design system, several micro frontends consuming this design system, and now we need a shell application that imports micro frontends and displays them.

Blog 10/6/21

Designing and Running a Workshop series: An outline

Learn how to design and execute impactful workshops. Discover tips, strategies, and a step-by-step outline for a successful workshop series.

Anonyme Referenz
Referenz 11/12/24

Efficient fleet management due to scalable platform

X-INTEGRATE enables innovative business models for the fleet business by building a transaction-secure and scalable technology platform. Read more.

Kompetenz 7/29/21

AI - A technology is revolutionizing our everyday lives

For ARS, AI is an increasingly natural and organic part of software engineering. This is particularly true in cases where it is an integral part of applications and functions.

Blog 11/24/23

Part 3: How to Analyze a Database File with GPT-3.5

In this blog, we'll explore the proper usage of data analysis with ChatGPT and how you can analyze and visualize data from a SQLite database to help you make the most of your data.

Blog 7/14/23

Event Sourcing with Apache Kafka

For a long time, there was a consensus that Kafka and Event Sourcing are not compatible with each other. So it might look like there is no way of working with Event Sourcing. But there is if certain requirements are met.

Kompetenz 8/6/21

Our services

We develop innovative software applications and future-proof IT systems as the basis for your digital transformation. We look closely and look for individual solutions. Because we are excited with technology. And because it works.

Blog 9/17/21

How to gather data from Miro

Learn how to gather data from Miro boards with this step-by-step guide. Streamline your data collection for deeper insights.

IPG partner
Partner

IPG Partners

IPG artners

Nachbericht Atlassian Team' 23: Neue große Produktankündigungen - Atlassian Intelligence, Atlassian Confluence Whiteboards oder Atlassian Beacon
News 4/25/23

Highlights & Impressions: Follow-up to Atlassian Team'23

The ultimate event for modern teamwork is over - Atlassian Team' 23 took place from April 18 to 20 in Las Vegas. No matter if live on site or online, for the participants there were great new product announcements - first and foremost Atlassian Intelligence, Confluence Whiteboards or Beacon - exciting insights and conversations and a lot of personal exchange.

Blog 1/13/22

Why Was Our Project Successful: Coincidence or Blueprint?

“The project exceeded all expectations,” is one among our favourite samples of the very positive feedback from our client. Here's how we did it!

Software License Consulting & Cost Optimization
Technologie

Our starter packages

Fast access to a modern and scalable service desk, efficient task and Project Management across all business processes and performance check

Teaserbild zu IT-Strategie Beratung
Service

IT strategy – A clear goal and the way to achieve it

The IT strategy provides you with the plan for the long-term development of your IT organisation, necessary technologies, processes and digital culture.

Header zu Fullstack Development
Service

Fullstack Development

The trend in Software Development is towards Full-Stack Development. Full-stack developers are programmers who work in both frontend and backend development and thus have competencies in the areas of databases, servers, systems and clients.

Unternehmen 7/30/21

Our history

Our success story began in 1992. Since then, we’ve survived some ups and downs, learned a lot and celebrated many successes.

Blog 10/21/20

Consistency and Aggregates in Event Sourcing

Learn how we ensures data consistency in event sourcing with effective use of aggregates, enhancing system reliability and performance.

News 8/6/21

Intelligent Document Processing now even more efficient!

For these reasons, we are constantly improving our performance in the field of Intelligent Document Processing and now have a strong partner at our side in the form of the experts from PLANET artificial intelligence GmbH in Rostock.

Navigationsbild zu Business Intelligence
Service

Business Intelligence

Business Intelligence (BI) is a technology-driven process for analyzing data and presenting usable information. On this basis, sound decisions can be made.

Referenzen CLOUDPILOTS
Unternehmen

Our Success Stories

Our customers are very diverse. From traditional companies to start-ups and from SMEs to multinationals. The years of experience of our pilots make it possible.

CLOUDPILOTS, Google Workspace, G Suite, Google Cloud, GCP, MeisterTask, MindMeister, Freshworks, Freshdesk, Freshsales, Freshservice, Looker, VMware Engine
Blog 12/11/19

11 reasons to switch to Google Workspace

There are many good reasons to switch to Google Workspace. We have summarized the 11 most important ones for you here.

Bleiben Sie mit dem TIMETOACT GROUP Newsletter auf dem Laufenden!