Eventide History

Eventide was developed in the course of building applications at a consumer financial services company that was versed in service architectures, messaging, and traditional message bus, and had become mired in a legacy of monolithic Rails applications.

The toolkit was operational in production systems for a year before it was open-sourced at the end of 2015.

In early 2015, the team was using a popular Java-based toolkit for building evented services and reactive applications, but found some of its tools and approaches a poor fit. The team valued and wanted durable messaging and event sourcing, and extending the toolkit turned out to be more onerous than assumed.

The Event Store database was subsequently chosen as the core technology to build upon. Event Store was a good fit because of it's event-oriented approach, its roots in event sourcing, the persistence of messages sent to it, and the quorum replication of its cluster.

The available open source client libraries for Event Store were "good enough" for storing and retrieving data, but were quite primitive. There were no libraries that supported higher-level, event-sourced microservices development concerns like message schemas and message handlers, entity class implementation, projection of event streams onto entity instances, caching, consumer implementation and operation, and a handful of other concerns.

Starting from scratch, a new Event Store client library was built that would be a better fit with the higher level libraries that would be closer to application-level code. New autonomous services supporting a growing product line and list of features were built on this new toolkit. These libraries were built as open source and made available via GitHub.

With a fairly comprehensive toolkit for event sourcing and microservices in-hand, conversations with other financial technology startups started.

One of the requests given to the team was for an implementation of the stack that would work on Postgres. Early adopters were reticent to add another database technology to their operations workload, and most of them were already running Postgres, either as a hosted service like AWS RDS, or in their own infrastructure.

In May of 2016, the Postgres implementation was begun. It lead to a considerable re-thinking of the original Event Store implementation, as well. The Postgres implementation was completed by the fall of 2016. The Event Store implementation was re-written in January of 2017 to conform to the common, core abstractions created as part of the Postgres implementation work.

While the development of Eventide represents several man-years of development and production operation, the stack has not been aggressively promoted. It was critical to battle-test and prove the implementation before encouraging a wider range of companies to adopt it. The Eventide team began outreach efforts in in earnest in early 2017, speaking at meetups, conferences, and teaching workshops, and evangelizing the project to a wider array of customers and adopters.

Eventide will reach a v1 release once documentation and materials are considered sufficient for a new adopter to get their feet wet in event-sourced autonomous services without direct support from the Eventide team.