Skip to content
Drew Koszewnik edited this page Dec 2, 2013 · 20 revisions

Some applications have data sets with extremely low latency tolerance. For Netflix, this applies to metadata about our movies and TV shows. We store this data directly in RAM on the servers responsible for powering the Netflix experience.

Netflix leans heavily on Zeno to manage, transport, and keep updated these gigabytes of constantly-changing data replicated across thousands of servers. Zeno:

  • Creates compact serialized representations of a set of Java Objects.
  • Automatically detects and removes duplication in a data set.
  • Automatically produces a minimal set of changes required to keep data up-to-date.
  • Is efficient about resource impact when deserializing data.
  • Provides powerful tools to debug data sets.
  • Defines a pattern for separation between data model and data operations, increasing the agility of development teams.

Zeno is highly optimized. See The Netflix Tech Blog for a description of how Netflix has benefited from the development and application of the Zeno framework.

In order to get started with Zeno, you’ll first have to define your Object model. Check out the links below:

  1. Defining an Object Model
    1. Anatomy of a serializer
    2. Hierarchical Serializers
    3. Collections
    4. Common Serializers
    5. Serializer Factories
    6. Designing for Efficiency
  2. Transporting Data
    1. Producing a Snapshot
    2. Producing a Delta
    3. Reading Blob Files
    4. State Engine Lifecycle
    5. Blob Consumer Lifecycle
    6. Making Data Available
    7. Producing Multiple Images
  3. Maintaining Compatibility Between Versions
  4. Creating JSON Data
  5. Diffing Data
    1. Diffing arbitrary data states
    2. Tracking historical differences
  6. Creating New Operations
  7. Example Code