Skip to main content

Architecture

Mission Control Architecture

Mission Control has a micro-service architecture with a shared data source with multiple deployment models.

  1. CLI
  2. Kubernetes (Helm Chart)
  3. SaaS

Communication Model​

Communication between services happen in 3 ways:

  1. Database - A shared database with interface library enables services to query the data owned by other services by directly hitting the database using an interface provided by a shared library
  2. Messaging - A postgres based message bus is used, database triggers insert events into queues which are then consumed by various services
  3. HTTP/REST - This model is primarily used when the service need to interact with services outside the DB (e.g. the APM hub needs to connect to log stores to retrieve logs)

Postgres​

Postgres is the only data store used by Mission Control and relies heavily on JSON and queuing support in Postgres. This limits the dependencies and complexity especially when self-hosting.

All services use a shared database and model via the duty project, this provides the following benefits:

  • Limit RPC calls improving latency and performance
  • Services can run with slightly different versions of the library, limiting the need for coordinated migrations
  • Library updates happen automatically using dependabot