How Boeing Builds Versioned Cloud Storage
At MERGE 2014, Daniel Anolik, a solutions architect of airborne navigation systems at Jeppesen, a Boeing Company, explained how Jeppesen built their own versioned cloud storage system using the Perforce Versioning Engine. This system powers the global distribution of navigation data to most of the world’s pilots. Jeppesen realized early on that hand-rolling their own solution would essentially be re-inventing the Content Management System wheel, yet their survey of existing services proved lacking. It turns out that today’s giant hard-drive-in-the-sky services do a good job of preserving arbitrary amounts of data safely and (sometimes) securely, but none of them can meet all of Jeppesen's requirements out of the box.
Enter the Perforce Versioning Engine, a foundation for a wide variety of integration options and tools for building custom solutions. Jeppesen cleverly utilizes key Perforce concepts, options and tools to meet their needs with minimal work.
The shape of Jeppesen’s solution flows beautifully from their requirements:
Changelists define an all-or-nothing (atomic) list of changes. With the Perforce Versioning Engine's fine-grained control over reads and writes, atomic saving of changes, complete, immutable history and auditing, and the ability to handle large (100+ GB) data sets, changelists satisfied their top four requirements right out of the box.
Triggers ensure new data validation. Perforce triggers make it possible to run arbitrary processing and validation in response to a variety of events. In the case at hand, Jeppesen uses triggers to ensure that new data is validated before being made available more generally.
Branching and counters manage workflow. Once a given changelist is validated, the files are integrated from their original private branch to the public branch for wide visibility. A Perforce counter for the last known-good changelist is updated at that time, making it trivial to rollback to the change specified by that counter at any point in time.
Robust Java API for easy customization. The only piece Jeppesen actually had to build was their preferred web-based front end, which leverages all of the aforementioned Perforce Versioning Engine's functionality through P4Java, our simple Java API, to meet all their storage requirements.