To monorepo or not to monorepo: a multi-lingual, telescope-agnostic steering control system
11-06, 08:30– (US/Arizona), Posters

There has been a shift in the software industry from microservices to monorepos as the associated complexity of maintaining distributed code is realized. While the primary defense of microservices is scaleability, many large software companies like Facebook, StackOverflow and GitHub depend on monolithic architectures and evidently scale "just fine". As well, in the context of telescope control systems, scaleability is simply not a concern.

At the Dominion Radio Astrophysical Observatory (DRAO), we support 5 single-dish radio telescopes and one 7-dish radio interferometer. Each has it's own hardware interface for low-level motor control and previously depended on a series of network calls to communicate monitor and control tasks to progressively higher-level software layers such as pointing corrections, coordinate transforms, and complex steering paths.

In this poster we discuss the collapse of this networked stack of microservices into a strictly-typed monorepo which supports multiple programming languages (Python/C/C++), multiple hardware interfaces, unified interfaces for all layers above the hardware interfaces. We also discuss how this improved the developer experience and simplified the testing and deployment of a telescope control system.

See also: To monorepo or not to monorepo - the poster (291.9 KB)

Nicholas is a Telescope Computer Engineer at the National Research Council's Dominion Radio Astrophysical Observatory up in Canada. He builds control systems for a number of on-site radio telescopes. He is also a PhD candidate at the University of Victoria working on Radio Frequency Interference monitoring.