AWS S3-backed media storage

As of build number 694, viinex has received the version number upgrade — it’s now version 3.4, — and the support for AWS S3 when it comes to storing media data.

To be specific, S3-backed storage can be used as the destination for the “rolling” replication of media data. That is, on the viinex instance where media is recorded, it needs to be recorded into a local storage, as previously. On the same instance, an S3-backed media storage should be delcared, and media data replication should be set up between these two storages (from local storage to the cloud storage).

In contrast with local storage implementation, S3-backed storage does not assume that there is only only one instance which uses a particular S3 bucket and object name prefix. Which means that
– more than one viinex instance can be performing a media data replication into the same S3 bucket under the same object name prefix, and
– there can also be as many read-only instances of S3-backed media storage as required.

Along with this, a “joint storage” implementation is introduced, which actually does not store anything, but server for the purpose of providing a joint view onto the media data stored by two or more local or cloud media storages. This allows the application developer to keep using just one API endpoint for accessing media data of their interest without knowing whether it’s available in a local storage or has been replicated into S3: timeline listing and media data retrieval happens transparently for the application, using the fastest available way, — that is, a local copy is going to be used if the data is available in the local media storage, otherwise it’s going to be downloaded from S3.