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 install,Ā go 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