Posts with the tag schemas:

Sroto: Protocol Buffers Evolved

In my previous post I argued that the existing tools available to us as developers largely either optimize for developer velocity or scale, particularly when build backend applications. I postulate that if we had a framework that derived as much as possible from a schema definition plus associated metadata, that framework could optimize for both. To enable this, we first need to have a better way to write schemas.

Introducing sroto, a library and associated command tool to generate .proto files (and thus protobuf schema definitions) from jsonnet, a data templating language.

This basic problem with the way we approach schemas is:

  1. A schema definition is just data.
  2. Writing data is annoying and we want to write code.
  3. So we use the application code to write the data.
  4. Whoops, now we can’t untangle it and therefore scalability is hard.

So let’s break this cycle.

How We Can Beat the Tradeoff Between Developer Velocity and Scalability

I’ve been working at Robinhood for a number of years since the early days and one phenomenon I’ve been fascinated by is the dramatic decrease in developer velocity as both the engineering organization and production systems have scaled.

Here’s an example inspired by real-world events building out the backend API for showing dividends in-app in 2014: