Image for post
Image for post

The Challenge

In 2019, Panorama scaled our Student Success platform from 250,000 students across 300 schools to 2 million students across 5,700 schools. One of the biggest challenges during that growth was optimizing how we store and interact with all that data!

Panorama Student Success is an event-sourced system. This means that all changes in our domain are modeled as a strictly ordered series of events. The current state of any piece of the domain is determined by projecting these events into a read model. As opposed to something like a traditional ActiveRecord application, no changes can be made directly to the read model — changes are only made through events. This approach to modeling our domain gives us a tremendous amount of flexibility to change how we interpret events as our system grows and new features are added. In order to ensure that this flexibility is maintained we need to frequently make sure that all events can be re-projected with no issues. We have too many events to re-project all of them to generate a read model each time a web request is made. …

Lisa Alagna

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store