Tsubasa is all of /r/openttd's custom infrastructure in one handy monorepository.
It is built using the microservices model, which means individual components can be modified / screwed with without bring the rest of the service down.
Mostly written in Go / Docker, though some Make magic happens occasionally. Other languages are perfectly acceptable.
Intraservice communication and management happens using the following:
- JSON REST - RPC between services.
- Kubernetes - Service discovery, deployment, etcetera.
- Kafka - Message / job queue.
- generics - Contains generic, importable files intended for use by other parts of the project.
- service.* - Services that run completely independently from each other. These services may communicate with other internal services only, or with data providers (like external servers, message queues, or databases).
- service.*.api - Services which provide the external JSON REST API by communicating with their related service.
- deploy.* - Dependent services with their deploy files (like Kafka, Cassandra, etc).