Current Version: 2.0.0.0
Status: Stable / Production

 
 
eventide-logo-962x190.png
 
 

Features

Message Store

  • Underlying storage implementation with stream semantics, including categories and expected version protection for writes
  • Primitive raw data format and serialization to JSON
  • Used for both event storage as well as command transport and storage
  • Event source for projected entities
  • Postgres and Event Store support

Messaging

  • Messaging primitives layered on top of the message store
  • Handlers, Messages, Reader, Writer, Streams
  • Handle either message types or raw data
  • Conversion from raw data format to message classes
  • Substitues and telemetry for testing and exercising

 

Entity Projection

  • Apply events recorded to an entity's stream to the entity to restore its data
  • Apply either messages or raw data
  • Use either with a reader or with arbitrary data in-memory
  • Use any entity data structure to project into
  • No special entity base class needed (even an ORM object or a Hash will work)

Entity Store

  • Retrieve an entity from its stream storage
  • Uses entity projection to apply events to the entity
  • Caches retrieved entity using entity cache
  • Retrieves only new events on subsequent reads
  • Substitute dependency to support tests and exercising
  • Configurable batch size of events read

ENtity Cache

  • In-memory (L1) and on-disk (L2) cache of entities
  • Pluggable implementations of both memory and disk cache
  • Used by entity store to avoid re-reading streams in their entirety when retrieving entities
  • Optionally stores entity snapshot to disk
  • Retrieves latest on-disk snapshot before retrieving new events
  • Configurable snapshotting interval

Entity Snapshot

  • Periodic storage of cached entities to disk
  • Pluggable into entity cache
  • Simple interface allows implementation for any storage medium
  • Postgres and Event Store implementations provided, with JSON serialization
  • No special entity base class needed
  • Serialization format is not prescribed
  • Pluggable serialization interface

Consumer

  • Subscription to a stream via a continuous reader
  • Registry of handlers that will be dispatched the stream's commands and events
  • Graceful shutdown of consumers, allowing unit of work to complete
  • Top-level error handling
  • Can be started independently, or coordinated through the component host

Component HOst

  • Hosts components as runtime services
  • Entry point from operating system via start-up script
  • Starts components' consumers
  • Actor model coordinates components and readers
  • Specialized reader pre-fetches batches of events via actor to eliminate waiting on reads

Other Features

  • Data Aggregation tools
  • Dependency declaration and substitution
  • Serialization and transformation protocols
  • Validation protocols
  • Proper casing for JSON vs Ruby naming conventions
  • Data structure mapping and copying utilities
  • And many more....

Code

 

GitHub

Eventide Project code is hosted on GitHub:
github.com/eventide-project

A complete list of the libraries that make up the Eventide stack, as well as third-party libraries used, is available on the Libraries page of the Eventide documentation.

 

Community

 

Slack

Sign up for the Eventide Slack team at:
join.slack.com/t/eventide-project

Twitter

Follow the Eventide Project on twitter:
twitter.com/eventideproject

 

Training

Attend a public workshop or bring specialized training in-house for your team

3-Day Evented Microservices, Autonomous Services, and Event Sourcing Workshop

 
  • Distributed Systems Fundamentals

  • Design Principles

  • Analysis and design for evented and message-based systems

  • Services & Components

  • Service Boundaries

  • Events

  • Commands

  • Handlers

  • Projections

  • Entities

  • Idempotence & Concurrency

  • Testing

  • Message Validation

  • Consumers & Subscriptions

  • Coordinating Multiple Services

  • Workflows Between Services

  • Building and Distributing Client Libraries for Your Services

  • Logging

  • Snapshotting State

 

2-Day Advanced Data Aggregation, View Data, and UI Workshop

  • Using Events to Update Databases

  • Aggregating Data from Multiple Streams

  • Data Command Streams and Processing

  • UI Patterns for Eventually-Consistent Systems

Custom Training

Get in touch and tell us about the learning that you'd like to do. We can build custom materials and curriculum for you and your team that aligns with the goals and the circumstances of your project.

 

About

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 monolith Rails applications.

Eventide is currently the operational, production microservice backbone for a range of implementations, covering scenarios including:

 
  • Marketing Automation

  • Ad Tech

  • Blockchain

  • Consumer Mobile Banking

  • Wealth Management

  • Investments

  • P2P Payments

  • Affiliate Programs

  • Bill Pay

  • Loan Origination

  • Loan Servicing

  • Payroll

  • Mortgage

  • Data Analysis and Transformation

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

Eventide v1 was released in November of 2018 when its documentation was ready.