Buf Schema Registry (BSR)

Architecture

On-prem deployments of the BSR are effectively air-gapped from Buf. No sharing of data or analytics occurs without manual action by the customer.

Here is a simplified architecture diagram for the Buf Schema Registry (BSR):

BSR architecture diagram

Dependencies

  • PostgreSQL (version 14+) - stores application data such as users, organizations, repositories, and commit references
  • Redis (version 5) - caches compiled modules
  • S3-compatible storage or Azure Blob Storage - persists BSR modules as binary representations of a set of protobuf files

External Dependencies

The following images can be mirrored internally, if desired:

Main components

bufd

  • the main API used by the frontend app and buf cli
  • provides the ability to remotely generate code from modules using bufsandboxd
  • remote package APIs to support pulling generated code using package managers in several languages (e.g. npm installgo get)
  • buf studio, a browser tool that allows developers to create, edit and send gRPC and connect messages to arbitrary servers

bufsandboxd

  • provides a sandboxed environment where images from the registry can be executed to generate code

bufjavacompilerd

  • receives kotlin & java plugin generated code, which it compiles and packages into artifacts (jar, sources jar, pom) to be served via the maven repository