Kallidus launches Perform, with unparalleled auditing thanks to EventStoreDB
- Headquarters: Cirencester, Gloucester, UK
- Founded: 2000
- Company size: 270
- Dev team size: 60 in total, with 6 actively using EventStoreDB
- Industry: HR software
- www.kallidus.com
Background
Kallidus creates and maintains HR software for all employee management needs, from recruitment, deployment, performance management, and more. For 21 years, they have focused on creating software solutions with fantastic user experience at the forefront. Kallidus offers a range of products to their customers and wanted to make an outstanding performance management solution that had strong audit capabilities. This led them to Event Sourcing and Event Store.
The Challenge
In 2015, after building several successful products in the field of HR software, the Senior Software team at Kallidus knew it was time to investigate more modern technology to build their new software product, Perform. Kallidus wanted to create a system that enabled a refreshingly simple approach to managing performance. It would allow managers to track progress and productivity against objectives while allowing employees to see how their objectives are derived from business goals. Perform would become a performance management solution that allows for a flexible approach to objective setting and reviews.
To reduce the burden of performance reviews, Perform would need to have thorough auditing trails allowing traceability of all objectives: when and why they were set, when they were completed, and how this aligns with business goals. The team at Kallidus realized they would need a modern architecture to make such a product work effectively. Senior Developer, Dave Needham, researched microservices and after following Greg Young’s content for some time, he decided to investigate Event Store as a solution.
“We were moving to a microservices architecture, and saw [Event Store] as an enabler of that,” says Dave Needham. The fact that the Perform product would have to track users’ performance across a range of activities and metrics meant it would need strong auditing capabilities. With microservices, each part of the application is a collection of services that are independently deployable, easily maintained and testable, and organized around business needs. Building their new product using microservices architecture would increase the longevity of the software, allowing them to update any part of the system that needs updating. It also means the development team can do smaller, more frequent deployments, making them more flexible.
They wanted a database that would be up and running quickly. After some investigation, they soon realized that only Event Store had the features they wanted in one package. There was also a support service in place with Event Store Support. This commercial support was very appealing to the Development Team: knowing they would have experts on hand whenever they needed them was a significant bonus for them. “It was significant for the business, knowing there was a support model available… The business looks for more certainty, getting experts at the other end was important” said Dave Needham.
Implementation
The first challenge was to persuade the wider business, who were running more traditional CRUD technology, of the benefits of Event Sourcing. “The business had only dealt with SQL server before… we also needed to create a framework that talked to Event Store that we could use,” said Dave. They used an open-source framework created by Event Store’s Chief Architect to connect Event Store to their wider systems.
“It’s great from a [support perspective] when you get a support ticket or a request from a customer, you’ve got that history, you know what’s happened: it’s unambiguous.”Chris Nott, Software Development Team Leader
It took the Development team six months to go from concept to production. Despite this swift development time, the product has worked with some minor improvements for over 5 years, making it extremely cost-effective. “[the development] was very exciting, lots of late nights and big discussions!” said Dave.
“We used the Event Store Google Group, which was very good,” says Dave, on where he found help and support at the time. “[Checking the group] became a sort of pre-filter for support, to make sure if the questions have already been answered”.
“This was our first cloud product, our first microservice product, it was the first UX-focused product (so it was the first product where we brought in UX designers to give us a really good look and feel), so there were quite a few big wins for the business...The wider business was really pleased with the result”. After some further development resulting from discussions with the Marketing team, the product was ready for launch.
When to call Event Store
With Event Sourcing and microservices, the team managed to get the product up and running quickly and efficiently. However, their projections were still experimental and only really used for auditing “in a really simple, elegant way, one projection provided [the] audit”. When they started increasing the volume, the projection started to slow down. They also had an issue with concurrency, so they called Event Store Support for assistance on these two issues. “We called on Event Store when things weren’t very clear... In order to clarify our thinking”. Working with Kallidus in this way, Event Store provided clarification to help them resolve their issues quickly, and make the most out of their Event Store setup.
When the Kallidus team found a bug in EventStoreDB v5, they contacted Support and worked with the Engineers to fix the issue. “It was knocked on the head very quickly, compared to other support calls,” said Dave. A growing business will always need support, and Event Store has been there to support Kallidus whenever they have needed it.
Chris Nott, Software Development Team Leader at Kallidus, says using EventStoreDB has saved them effort, and streamlined the support they provide to their staff: “It’s great from a [support perspective] when you get a support ticket or a request from a customer, you’ve got that history, you know what’s happened: it’s unambiguous”. Having that log of events and knowing exactly what happened makes troubleshooting more efficient and cost-effective than using other databases. “Operationally, it’s saved us effort, as no one can mess around with the data and cause unexpected problems” Dave Needham added to this: Dave: “If [the data] does get messed around with in any way, we can see and know exactly what’s happened, unlike the black hole of SQL server.”
Ever Reliable
"[Having EventStoreDB] just enables us to focus on the bits we need to build, the functionality rather than the core plumbing of interacting with the data store… We’ve had very little in terms of any performance issues… it’s been reliable, and it does what it says"
Chris Nott, Software Development Team Leader
Chris and Dave are also very impressed with the reliability of EventStoreDB, and how Event Store has grown with Perform as a product: “[Having EventStoreDB] just enables us to focus on the bits we need to build, the functionality rather than the core plumbing of interacting with the data store… We’ve had very little in terms of any performance issues… it’s been reliable, and it does what it says” says Chris Nott.
“The downtime statistics [for Perform] are extremely low… the lowest of the products in the business,” says Dave. “As we’ve grown and our data volume has grown, Event Store has... grown and provided the features to keep our product working. There have been a number of deliverables that have really helped us to take the next step in making sure our performance isn’t running out.”
EventStoreDB is the backbone of their operations for Perform and does that job really well. Dave Needham and Chris Nott are extremely happy with their choice to use EventStoreDB and Event Store Support.
“Event Store fits into a separated architecture, which is something much more popular and accepted now. It has a specific role in dealing with your online system... It’s working very well as our primary database for operations, for running behind the main system providing the user interaction”.