Skip to main content

Architecture

Compass' architecture is pretty simple. It has a client-server architecture backed by PostgreSQL as a main storage and Elasticsearch as a secondary storage and provides HTTP & gRPC interface to interact with.

Compass Architecture

System Design

Components

gRPC Server

  • gRPC server is the main interface to interact with Compass.
  • The protobuf file to define the interface is centralized in goto/proton

gRPC-gateway Server

  • gRPC-gateway server transcodes HTTP call to gRPC call and allows client to interact with Compass using RESTful HTTP request.

PostgreSQL

  • Compass uses PostgreSQL as it is main storage for storing all of its metadata.

Elasticsearch

  • Compass uses Elasticsearch as it is secondary storage to power search of metadata.