MITx Online Open edX — Architecture & Data Flows
Generated 2026-06-24 17:02 UTC · c4gen dev
The MITx Online Open edX deployment — the self-hosted courseware/LMS that delivers MITx Online / MIT Learn courses at courses.learn.mit.edu (k8s namespace mitxonline-openedx). Built from the mitodl edx-platform fork with MIT custom themes, social-auth-mitxpro, edx-sysadmin, and rapid-response XBlocks. Two Django services share the data tier: the LMS (edxapp) serves learners and exposes the REST APIs the SOA apps drive (enrollment, grades, certificates, OAuth2/third-party-auth SSO), while Studio/CMS authors courses. A forum service (cs_comments_service) and Notes API back discussion and annotations; edx-search indexes courseware into Elasticsearch. MySQL is the relational system of record; MongoDB holds the modulestore (course structure) and forum content. Celery workers run grading, certificate generation, bulk email, and course import/export to S3 (OLX). This deployment is the OAuth2 IdP for the mitxonline app (provider mitxonline-oauth2) and itself federates learner identity to Keycloak (sso.ol.mit.edu); MITx Online pushes enrollments and receives enrollment/certificate webhooks, while MicroMasters batch-reads enrollments/grades/certs from it.
This is a C4 view of MITx Online Open edX within the MIT Open Learning SOA, focused on how data is created and propagated — synchronous request paths and asynchronous (queued, scheduled, event-driven) flows alike. Use it for onboarding and as a holistic reference when realigning flows or hunting harmful cycles and fragile linkages.
How to read these diagrams
These are C4 model diagrams (C4-PlantUML). Read them top-down: System Context (the whole SOA) → Container (one system's runtime units) → Dynamic (a single data flow, step by step).
- People are rounded boxes; systems and containers are rectangles; databases and queues have distinct shapes.
- Each arrow is a data flow labelled with what moves.
- Solid arrows are synchronous (request/response, caller blocks).
- Amber dashed arrows are asynchronous (queued, scheduled, or event-driven — caller does not block).
- Drag to pan, scroll to zoom. Boxes with a link drill into the next level.
Contents
- System Context — MITx Online Open edX and the systems it exchanges data with.
- Containers — the runtime units inside MITx Online Open edX.
- Data Flows — key interactions, step by step (sync & async).
- Dependencies & Cycles — graph-derived coupling, cycles, fragile links.
Keeping this current
These pages are generated from a structured model by
architecture_maps/c4gen. The cross-service edges are extracted deterministically
from the witan-code graph; node prose and scenarios are curated. See
the generator README
to regenerate after the system changes.