technical overview

architecture overview


node js


Node.js powers the whole Volumio2 backend and its server infrastruture. We choose it thanks to superior performances over php (except memory usage, which remains a big concern), its non-blocking nature and its unparalleled rate of growth and community engagement.

On top of that, Node.js (and javascript in general) is a relatively easy to learn language, allowing a wider audience to contribute to the project.

socket io


Socket.io is ideal to exchange communications from the Backend to the FrontEnd (UI), since it works on an event basis (much more efficient than the polling method of REST APIs). Plus, it allows to send the same message to a variety of recipients simoultaneously. Last but not least, it’s fast, really fast.



angular js


There are so many UI frameworks out there, but angular was our choice since its MVC pattern and the availability of documentation and modules made it perfect to develop our state-of-the-art UI.

debian


We choose debian because of its unparalleled stability across releases and updates. Since we build Volumio images and instances with an automated build script, a fundamental aspect is across-release compatibility and stability. Since debian doesn’t allow new packages into stable status until they’ve extensively tested, this gives us enough confidence. That would not have been possible using other, usually fast-paced, distributions.


docker


Our cloud services are operating following the micro-services architecture: small, specialized and isolated utilities that run on isolated and replicable containers. This way, if one service fails, we can restore its operations in seconds, on another servers, and all other services will not be affected.