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

Migrate ModuleStore off of MongoDB #3

Open
Tracked by #35144
e0d opened this issue Oct 26, 2021 · 3 comments
Open
Tracked by #35144

Migrate ModuleStore off of MongoDB #3

e0d opened this issue Oct 26, 2021 · 3 comments
Labels
operational-impact More operational effort will be required than usual

Comments

@e0d
Copy link

e0d commented Oct 26, 2021

TLDR;

Mongo DB introduces excessive hosting and maintenance cost for the value that we derive from in on the platform. With improvements to serializing courses in the RDBMS, it's even less valuable. Removing it will let us reduce cost and maintenance burden, scale down better, and thereby scale platform adoption.

The full details of this are here.

Related PRs:

@e0d e0d moved this from Ideation to CY22Q1 in Open edX Roadmap Oct 30, 2021
@ormsbee
Copy link

ormsbee commented Nov 23, 2021

Worth noting that this work cannot be fully completed until Old Mongo support is removed (DEPR-58).

@jmakowski1123 jmakowski1123 moved this from CY22Q1 to Prioritized in Open edX Roadmap Jan 25, 2022
@jmakowski1123 jmakowski1123 moved this from Prioritized to CY22Q2-Q4 (April - December 2022) in Open edX Roadmap Jan 25, 2022
@ormsbee
Copy link

ormsbee commented Mar 15, 2022

Posted this on the forums:

To give a little more context, there are a few independent pieces of deprecation that need to happen before MongoDB can be removed:

Old Mongo Removal

Remove Old Mongo support entirely. @mikix done great work recently in cutting off access to Old Mongo courses:

What remains is a lot of code deletion and test fixing. This is an area where people can contribute with relatively little ramp-up, since it's mostly deleting test permutations. Please comment here if you're interested in that work.

Convert the Split Modulestore to use django-storages

This will require three parallelizable streams of work:

  1. Converting how we store Structure documents (the skeleton outline of a course) from MongoDB to django-storages, and migration scripts. This may also require some porting of the structures.py cleanup script, depending on the projected costs.
  2. Converting how we store Definition documents (the content of each block) from MongoDB to django-storages, and migration scripts. Because of access patterns and the variability of latency with object stores like S3, this would likely require an improved caching layer as well.
  3. Converting how we store store course static assets (e.g. images, PDFs) to django-storages. We have to take care here to (a) not break CDN caching for certain assets; and (b) not break security restrictions for enrollment-restricted assets. The way we ship over static assets right now is implemented as middleware and is frankly kinda wacky, so there will likely be more cleanup here than appears at first glance.

Remove MongoDB usage from Forums

Once the two sections above this are finished, it's possible to have a basic install of Open edX without MongoDB. The last piece that I know of that actively uses MongoDB is the forums experience. I don't know what the current plans for deprecation of this usage is. The last I recall talking with anyone about it, the general idea was that we wanted to switch away from MongoDB and towards the Django ORM, but only after removing the Ruby code. But again, I'm not sure where that stands now.

At the very least, if the other sections are completed, MongoDB can be a dependency of only the forums, and not Open edX as a whole.

@jmakowski1123 jmakowski1123 moved this from In Planning to In Progress in Open edX Roadmap Jun 29, 2022
@jmakowski1123 jmakowski1123 moved this to Technical Initiatives in Product Review Tracking Sep 22, 2023
@jmakowski1123 jmakowski1123 moved this from In Progress to Integrations - In Progress in Open edX Roadmap Sep 25, 2023
@jmakowski1123 jmakowski1123 moved this from Integrations - In Progress to Technical Initiatives - In Progress in Open edX Roadmap Sep 25, 2023
@regisb
Copy link

regisb commented Oct 20, 2023

Can I ask what is the status of this issue? If I understand correctly, step 2 "Convert the Split Modulestore to use django-storages" is not yet completed, right?

@jmakowski1123 jmakowski1123 moved this from Technical Initiatives - In Progress to In Progress in Open edX Roadmap Mar 7, 2024
@jmakowski1123 jmakowski1123 moved this from Being Developed to Backlog in Open edX Roadmap Mar 28, 2024
@feanil feanil added the operational-impact More operational effort will be required than usual label Apr 23, 2024
@kdmccormick kdmccormick changed the title MongoDB Deprecation and Removal Migrate ModuleStore off of MongoDB Jul 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
operational-impact More operational effort will be required than usual
Projects
Status: Backlog - Is resourced
Development

No branches or pull requests

5 participants