Skip to content

Databackup Service #23

Description

@pchainho

As discussed here the idea is to have a generic Databackup Service to backup user's core data and also sync data between different runtimes even if the runtimes are not simultaneously connected eg policies, contacts, dataobjects, etc

The proposal is to use the data sync framework with a databackup objects. The Storage Manager would be extended (the set() function) to be the reporter of Databackup objects and the Databackup Observer hyperty would run in the Nodejs Runtime updating the storage manager every time there is a change performed by the reporter. All users' runtime would also be observers of these databackup objects in order to ensure complete sync among them. When a new runtime is instantiated it will resume the Dataobjects sync with the most updated versions from the Databackup observers.

The User should be able to set the Databackup service provider by using the Runtime Admin GUI, similar to the IdP. In this way the user also has the power to decide whom to trust his own data.

It should also be noted that existing (legacy) Cloud based backup services (like dropbox, google drive, etc) can also be integrated by using the legacy interworking framework ie only appropriate IWProtostub and IWIdpProxy have to be provided with no impact on other components.

This is a quite powerful feature that would require a minimum development effort.

Additional details:

  • extend storageManager.set(..) with "backupAuthorised : userURL[]" input parameter defining the users that have permissions to read the Backup data object from the databackup service.
  • backupAuthorised is added to the invitation request body sent to Databackup observer.
  • the Databackup Observer adds a listener to the address in order to handle Databackup read requests.
  • Read requests are allowed for backupAuthorised
  • new "public" attribute to SyncDataObject that if true allows anyone to read the Databackup object.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions