Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactoring management service to utilize CRDTs #8

Open
iakkus opened this issue May 8, 2020 · 2 comments
Open

Refactoring management service to utilize CRDTs #8

iakkus opened this issue May 8, 2020 · 2 comments
Labels
env/all To indicate something that applies to all environments improvement Improvements to an existing component

Comments

@iakkus
Copy link
Member

iakkus commented May 8, 2020

The management service was written at a time when the data layer was a simple key-value store. As a result, many data structures regarding the users, functions and workflows utilize ad-hoc prefixes to identify various pieces of information (e.g., list of functions and workflows; function code, requirements, zip data; workflow info, JSON description).

Besides the simple (key, value) pairs, the current data layer supports more complex data structures that are CRDTs, such as maps, sets and counters. The usage of these advanced data structures will simplify the management service code.

@iakkus
Copy link
Member Author

iakkus commented May 8, 2020

This change, however, will be a breaking change, such that a separate mechanism would be needed to convert any legacy data to the new scheme. This mechanism could be an offline tool, such that it would be transparent to the user.

Alternatively, this can be done when existing users login again. In this case, the management service will have to have code that after a while becomes redundant. Furthermore, the GUI might need to be updated to notify the user about this conversion, because it might take some time to process.

I'd vote for the offline tool to make the conversion.

@iakkus iakkus added the improvement Improvements to an existing component label May 8, 2020
@manuelstein
Copy link
Collaborator

+1 for the offline tool and proper data design

@iakkus iakkus added the env/all To indicate something that applies to all environments label Jul 3, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
env/all To indicate something that applies to all environments improvement Improvements to an existing component
Projects
None yet
Development

No branches or pull requests

2 participants