Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents


Problem Summary

Configuring Test Environments

Configuring and managing DSpace test and development environments requires significant effort.

...

Many DSpace stakeholders are not developers.  If it was easier to deploy a snapshot instance of DSpace to the cloud, these stakeholders could play a more active role in system testing.

Goal 1: Simplify and standardize the process for creating a development environment for all supported versions of DSpace

Docker provides a consistent, predictable environment

Docker provides users with a consistent and predictable runtime environment.  With such an environment, new DSpace developers will be able to more easily isolate local environment inconsistencies when seeking help from the DSpace community.

Docker allows a user to manage multiple (and incompatible) environments

Docker containers allow a developer to manage and run multiple system configurations from a single desktop or test server.

Deploying to Production / to the Cloud with Docker

tbd

Current Goals

Goal 3: Create a simple workflow to deploy a DSpace branch or snapshot to the cloud

  • Status: Some prototyping

Each of the major cloud providers provides a mechanism for running Docker containers.

If we could streamline the process for deploying published Docker images to the cloud, we could support a unique test environment for each major branch of DSpace.  This would allow users to compare and contrast functionality on each version of DSpace.  It would also allow an institution to evaluate the functionality on a specific DSpace branch.

Here is a write up of my experimentation with Docker Images running on specific cloud providers.

A prototype implementation is here: http://bit.ly/dspace-launcher-dashboard

Goal 4: Manage hosted instances of DSpace for each supported branch of the system

  • Status: Some prototyping, inactive 

If the prior goals are achieved, it would be possible to manage multiple hosted instances of DSpace for each major branch of the system in addition to the production reference version at demo.dspace.org.

A prototype implementation is here: http://bit.ly/dspace-launcher-dashboard

Goal 6: Explore Kubernetes Deployment of DSpace

Docker Compose is an excellent solution for deploying DSpace Docker for testing.  

As institutions explore the possibility of a production deployment of DSpace Docker or a public cloud deployment of DSpace Docker, the dependency on Docker Compose may not be suitable.  The public cloud providers offer mechanisms for deploying containers without fully provisioning a server.  

  • AWS offers Elastic Container Service and Elastic Kubernetes Service 
  • Google Cloud offers Google Kubernetes Engine
  • Azure offers (TBD)

It is also possible to run a local kubernetes instance for testing.  

The tools that we use to ingest content on startup are currently supplied through docker compose volumes.  As these tools are stabilized, they should be migrated into the DSpace docker images.

...

  • Ingest Tools: 

...

Goal 7: Document Recommendations for Deploying DSpace Docker in Production

  • Status: Not started

The following changes will be needed to run DSpace Docker in Production.  

  • Eliminate the dependency of docker compose volumes (see above)
  • In a cloud context, terminal access may or may not be available.  
    • Migrate CLI actions to REST endpoints
  • In a cloud context, the local file system may not be available
    • Migrate assetstore to cloud storage objects
  • Which DSpace services can be replicated to multiple nodes?
  • Application life-cycle questions: how to update the docker container (f.e. a security update of a library) while preserving content
  • Log additional items here

Inactive

Goal 2: Publish a standard set of AIP files (archival ingest packages) to facilitate system testing

  • Status: Some prototyping, inactive 

In order to expedite and simplify DSpace testing, it would be useful to provide developers with content suitable for testing a majority of DSpace use cases.

...

These files are too simplistic for testing real DSpace use cases.

Demo.dspace.org is populated with a set of AIP files that are stored on Amazon S3.  These files are approximately 1.5G in size. 

...

  • Explore GitHub LFS (large file storage) as an option
  • Share resources through a cloud service such as AWS S3.
  • Share resources using a collaboration platform such as Box or Google Drive
  • Upload these asses to a data repository and share them from that platform

Goal 3: Create a simple workflow to deploy a DSpace branch or snapshot to the cloud

Each of the major cloud providers provides a mechanism for running Docker containers.

If we could streamline the process for deploying published Docker images to the cloud, we could support a unique test environment for each major branch of DSpace.  This would allow users to compare and contrast functionality on each version of DSpace.  It would also allow an institution to evaluate the functionality on a specific DSpace branch.

...

Goal

...

If the prior goals are achieved, it would be possible to manage multiple hosted instances of DSpace for each major branch of the system in addition to the production reference version at demo.dspace.org.

Goal 5: Publish instructions for a replicable development environment for on-boarding, tutorials, and troubleshooting

  • Status: Some prototyping, inactive 

Frequent contributors to DSpace are likely to manage and maintain a robust development environment that includes best of class development tools such as IDE's.

...

While Docker can standardize the runtime and test environments, it may be possible to document a replicable development environment to help with on-boarding.

See Docker Workshop.

See Using Published Images on AWS Cloud9 as a possible example.

Implementation Costs

...

Completed Goals

Goal 1: Simplify and standardize the process for creating a development environment for all supported versions of DSpace

  • Status: Complete: tinymce.emotions_dlg.check

Docker provides a consistent, predictable environment

Docker provides users with a consistent and predictable runtime environment.  With such an environment, new DSpace developers will be able to more easily isolate local environment inconsistencies when seeking help from the DSpace community.

Docker allows a user to manage multiple (and incompatible) environments

Docker containers allow a developer to manage and run multiple system configurations from a single desktop or test server.

Significant work has already been done in this area.  https://github.com/DSpace-Labs/DSpace-Docker-Images

Each major branch of DSpace and each recent release of DSpace has been published as a Docker image.

...