Poster Abstract
P.9 Nico Vermaas (ASTRON)
ATDB - A micro services architecture for APERTIF with Django an Python.
As the delivery date for the APERTIF instrument approached we still needed to bridge the gap between the telescope control software and the ALTA archive. And we needed to do it fast!The APERTIF software stack is a classic suite of C++, python and firmware drivers. Dynamically developed by a large team over the course of years. ALTA is developed by a separate team, using a very different technology stack. Merging those two worlds would be too complex, too risky and simply wrong from the classic view of 'loose coupling'.
We decided to develop ATDB in a small core team of 2 developers and 1 (super)user, using Django as a state-of-the-art web technology well suited for rapid application development. The 'micro services' architecture that emerged was implemented in an extremely flexible way to avoid changes to the backend as much as possible.
An herd of pure python programs ('services') respond to their own desired 'observation state', which they obtain through ATDB's REST API. At the end of their task they write back their 'end state', to which another service can respond.
The backend does not control ‘allowed’ states. All that logic resides in the (pattern of) services, which makes the system easily expandable without requiring changes to the backend.
This lead to a landscape where existing APERTIF programs could hook into 'services', without running the risk of developers accidentally breaking the backend or the database. In practise ATDB proved to be very robust, very quickly adaptable and making people happy.