lincbrain / webknossos

Visualize, share and annotate your large 3D images online
https://webknossos.org
GNU Affero General Public License v3.0
0 stars 0 forks source link

Year 1 Development Phases #9

Open kabilar opened 3 months ago

kabilar commented 3 months ago
aaronkanzer commented 3 months ago

@kabilar merged https://github.com/lincbrain/webknossos/pull/13 and merged into production (still need to update dev -> staging -> prod workflow)

Should finalize handling of use case of: Configure front-end so that AWS Access Key ID and and Secret Access Key are not required by user

kabilar commented 3 months ago

Hi @aaronkanzer, I updated our list above. Phases 3 and/or 4 may get pushed into year 2.

aaronkanzer commented 3 months ago

Hi @kabilar -- a couple updates/progress here for Phase 2:

Automated pushes of Docker images to DockerHub upon pull request merges to the master branch

Right now, we are configured to push each branch, no matter master or not -- I think I'd like to keep it this way actually -- as we need to push containers remotely to best test them in staging. Perhaps we can discuss producing a CHANGELOG for what ends up in production

I'm also planning to follow alongside WebKNOSSOS migrations documentation, as it prescribes any updates we might need to do on our end if we sync upstream with our fork

How will we update Docker container? Will there be downtime?

We will have minimal downtime -- this should be as simple as:

  1. Pull down the newer Docker image of the API
  2. Stop the pre-existing API image, kill image to fully pause
  3. Replace the tag referenced in the docker-compose.yml for the API reference link here
  4. Run docker-compose up webknossos to launch new version

As long as the newer version is compatible with pre-existing schemas (e.g. postgres, fossildb), this should work as intended. We will have staging as a safeguard for any issues of course.

Configure backups

Currently working through this -- I've been using scalableminds fossildb-client for commands to properly backup and restore see here for code reference -- still stress-testing/confirming that the workflow can restore properly.

We will know more in terms of memory size, but it seems only a couple KB per annotation in FossilDB.

For Postgres, this is the standard pg_dump scenario (similar to LINC Archive).

For both, my hope is to have a cron job on the EC2 instance that exports the backups to S3 routinely. We can discuss the cadence for the cron job.

I'm going to continue to update https://github.com/lincbrain/webknossos/pull/10 with more playbook-ish docs for data restoration/backup -- seems we are in a good place overall.

Let me know if you have any questions in the meantime.

aaronkanzer commented 3 months ago

@kabilar A couple other fun updates (albeit in Phase 4, but still good in terms of understanding how WebKNOSSOS<>LINC will eventually communicate)

In this commit, I introduced SameSite of .lincbrain.org for our WebKNOSSOS auth-related cookies 🍪

(Assuming you are logged into staging), you can now see GET payloads for datasets and annotations for example -- we can ping these endpoints to reflect whatever need-be in LINC Data Platform

A couple of other useful notes here: • WebKNOSSOS datasets are name-unique, thus if "dataset-zarr-hipct" exists, a user can't come along and create "dataset-zarr-hipct" for a different dataset -- this could get tricky for drafts, etc. but something to think about in terms of naming conventions

• We will still need to determine the workflow for how an end user gets the cookie initially -- right now, when you log into WebKNOSSOS, the expiration of the cookie is 1 year -- we can alter as needed. There is a POST route for /auth/login for WebKNOSSOS, but that logic could be more complex -- can look into further.

Nevertheless, good news here in terms of how we want to guide LINC users towards annotations and datasets in WebKNOSSOS

kabilar commented 3 months ago

Awesome, thanks for breaking down each component. This is very helpful. I have some naive questions that we can discuss today.

aaronkanzer commented 3 months ago

Update lincbrain.org front-end to include a copy button for S3 URI of an asset

Handled via code mostly in https://github.com/lincbrain/linc-archive/pull/175

aaronkanzer commented 2 weeks ago

@kabilar proper backup scripts and cronjob definitions should be all set 📈 https://github.com/lincbrain/webknossos/pull/10/commits/68768f1953085fd88118f240ef35dbd0690ff415