Open benoitf opened 4 years ago
Hello,
here are some notes:
about data sync pod
:
per user
pod so the projects data are kept on the user namespace./projects
folder and it could be client of the data sync pod as well.optimization
One the goal is to be able to start the workspace as fast as possible. For that it means that we create a new workspace (no previous state):
data-sync-pod
service should reply as soon as possible that there are no existing data for this given workspace. (even before trying to mount the PVC). By mounting PVC ‘asynchronously’, it means that the workspace can boot quickly, projects can be cloned and persistence of the workspace will be done later, when the PVC is up. (IDE will notify like with a status bar that it starts with ephemeral storage and then backup/persistency is there)If there is previous data, IDE needs to wait to have project restored before displaying full layout.
Storage synchronization
:
optimization: it could cleanup 'unpacked' folder and only keep zip files if files were not used since a lot of time.
theia enhancements
:
Another optimization: For now, import/clone of source code is performed when we're entering into the IDE. (it's useful if some 'private' repository is accessed as we may need the github token and have oAuth, etc) but in the case of a public repository, if the project is cloned as soon as possible, it means that we could enter into Theia by having already the project cloned previously or in parallel. So it might speed up again the process. --> needs another Epic just for this specific item.
Is your enhancement related to a problem?
No matter how fast we get to bootstrap a Che workspace, no matter how many external resources we are able to pre-pull (images, extensions, examples source code), we will always need to wait 20+s for a PV to be attached and mounted on the workspace pod.
Describe the solution you'd like
New Workspace lifecycle:
Workspace components in Read-only mode
In the "Startup data sync phase" the user will already be able to use the editor and plugins but those should behave in a read-only mode until all the data has been synced to the ephemeral volume. That means that Che editors (for example theia) should be able to work on read only mode (initially this can be done by showing a progress bar that shows the data sync and not allowing the user to access theia).
rsync protocol
Rsync is mentioned as the remotes files synchronisation protocol but that’s just an example. If there is a better alternative, let's use it.
Ideas to improve performances (even more)