Skip to content

Infostellar StellarStation

Adrian Cole edited this page May 8, 2020 · 2 revisions

Infostellar (StellarStation

  • Infostellar currently has a dozen or so engineers with a couple maintaining infrastructure, including tracing
  • StellarStation is a quick and flexible ground solution for new space
  • Satellite operators can interface with our API to be able to communicate with satellites without setting up their own ground stations
  • Bi-directional stream between satellites and operators for payloads to and from satellite

System Overview

  • All servers run on Google Cloud Platform, written in Java. Several microservices running in Kubernetes.
  • Ground station software runs locally at an antenna site, written in Go
  • Use Brave for instrumentation in Java
    • armeria-grpc
    • MySQL
    • Redis (default lettuce.io instrumentation)
    • Pub/Sub
  • Use opentracing-go in Go
    • grpc-go
    • B3 propagation
  • Payload transport between ground station and cloud is Pub/Sub
    • Propagate context into Pub/Sub message attributes
  • Injest into Stackdriver Trace, no Zipkin server
    • Translate Spans for injestion using zipkin-gcp
    • Use custom reporter to avoid unnecessary copies between Brave / Zipkin data structures

Goals

  • We offer a communication infrastructure to satellite operators - low latency end-to-end is a must
  • Tracing provides detailed insight into component latencies for troubleshooting
  • Need to ensure as much of the flow as possible is traced, can't skip Pub/Sub, etc.

Service name

At Infostellar, we use the zipkin service name to represent a Kubernetes deployment. It is sourced from a Java system property set in the deployment configuration. We use it only in tracing.

Site-specific tags

The following are span tags we frequently use in indexing or aggregation

Tag Description Usage
antenna-id The antenna involved in a request Understand latency for data from specific antennas
satellite-id The satellite involved in a request Understand latency for data from specific satellites
plan-id The plan (communication time between satellite / antenna) involved in a request. Unlimited cardinality. Debug latency for a particular plan if it had a problem
Clone this wiki locally