Here is a simplified architecture diagram for the Buf Schema Registry (BSR):
Dependencies
- PostgreSQL (version 14+) - stores application data such as users, organizations, repositories, and commit references
- Redis (version 5) - caches compiled modules
- S3-compatible storage - persists BSR modules as binary representations of a set of protobuf files
- OCI Registry - holds docker images for remote plugins
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