Developing Backend Services¶
Backend services are small, self-contained, and (ideally) stateless applications that can be deployed and scaled independently. They are designed to be used in conjunction with other services and are often packaged together to form a larger application.
Example Structure¶
The following is an example for the combination of services creating the backend of a Telestion application:
graph TB
accTitle: Diagram showcasing the structure of an exemplary Telestion backend. Text description in collapsible section below.
db[Database]
md[Mission Device]
subgraph Backend
io[IO Service]
tmps[Telemetry Parser Service]
tcs[Telecommand Service]
dbs[Database Writer Service]
dbqs[Database Query Service]
end
subgraph Frontend
wc[Web Client]
end
md <---> io
io --> tmps
tmps --> dbs
dbs --> db
wc --> dbqs
dbqs --> db
wc --> tcs
tcs --> io
Text Description
- The Mission Device sends telemetry data to the IO Service.
- The IO Service (backend) forwards the telemetry data to the Telemetry Parser Service.
- The Telemetry Parser Service (backend) parses the telemetry data and writes it to the database via the Database Writer Service.
- The Database Writer Service (backend) writes the telemetry data to the database.
- The Web Client (frontend) queries the database via the Database Query Service.
- The Database Query Service (backend) queries the database and returns the data to the Web Client.
- The Web Client (frontend) sends telecommands to the Telecommand Service.
- The Telecommand Service forwards the telecommands to the IO Service.
- The IO Service sends the telecommands to the Mission Device.
Getting Started¶
The most common way to write a backend service is to use TypeScript.
Get started writing a backend service in TypeScript
However, for some use cases, it may be necessary to write a backend service in other languages.
Even some of the core services provided out of the box are written in Rust. To learn how to write a service in Rust, see Using Rust.
You can even write a backend service in any language you want. The only requirement is that it can communicate with the NATS message bus. To learn how to write a service in other languages, see Using other languages.