Powered by OpenAIRE graph
Found an issue? Give us feedback
ZENODOarrow_drop_down
ZENODO
Conference object . 2026
Data sources: Datacite
ZENODO
Conference object . 2026
Data sources: Datacite
versions View all 2 versions
addClaim

Double backend design for sustainable and mockable data communication software

Authors: Oprinsen, Thibaut; Sami, Caroff; Pollet, Vincent; Aubert, Pierre;

Double backend design for sustainable and mockable data communication software

Abstract

Computer science is a fast evolving field: software needs regular updates and maintenance, unless it becomes deprecated in a few years. Scientific software however, due to the inherent exploratory nature of research, is often developed over extended periods of time during which many new features are developed, tested and sometimes discarded for better solutions revealed by the gained experience. In order to develop software that isn't outdated before it is even used in production, careful software design and abstractions enabling easy updates and component replacements must be implemented. This is of paramount importance for "big science" experiments software that must be maintained for decades of facility operations, while the hardware infrastructure is regularly updated.For data acquisition and processing systems, a single API double back-end design can be used: the API abstraction allows to encapsulate the "real" communication back-ends, enabling easy maintenance or replacement with on the shelf solutions, as well as the implementation of consistent "mock-up" back-ends that are indispensable for fast unit and integration testing. The mock-ups allow to simulate a complex exchange between a process and all its contacts without any contacts running, greatly reducing the cost (both run-time and required compute infrastructure) of running the tests. Finally, using simultaneously a "real" and a "mock" back-end allows to record the real back-end operations with the mock-up whenever desired ; the record can later be used to replay complex scenarios for debugging or testing.Such a double back-end design has been implemented in a collection of libraries called phoenix, to abstract and mock-up a generic socket API. Simple mock-up and a ZeroMQ socket back-ends are provided in C++, Rust and Python, all using a compatible library to serialize messages. This basis enables the implementation of data processing pipelines that are multi-language, consistent, mockable and well encapsulated, therefore easily maintainable and extensible. The development of these tools are funded by the Horizon Europe project OSCARS with the goal of supporting diverse scientific use cases.

Keywords

ZMQ, Mock, Phoenix2, Socket

  • BIP!
    Impact byBIP!
    selected citations
    These citations are derived from selected sources.
    This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically).
    0
    popularity
    This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network.
    Average
    influence
    This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically).
    Average
    impulse
    This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network.
    Average
Powered by OpenAIRE graph
Found an issue? Give us feedback
selected citations
These citations are derived from selected sources.
This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically).
BIP!Citations provided by BIP!
popularity
This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network.
BIP!Popularity provided by BIP!
influence
This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically).
BIP!Influence provided by BIP!
impulse
This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network.
BIP!Impulse provided by BIP!
0
Average
Average
Average
Upload OA version
Are you the author of this publication? Upload your Open Access version to Zenodo!
It’s fast and easy, just two clicks!