Skip to content

Containers — ODL Video Service

Generated 2026-06-24 17:02 UTC · c4gen dev

The runtime/deployable units inside ODL Video Service and how data moves between them and adjacent systems.

Containers

Container Technology Responsibility
React Frontend React 15 / Redux / Video.js 8 (Webpack 5, Node 24) Browser SPA for collection/video management and playback. Initiates Dropbox Chooser uploads and plays HLS streams served from CloudFront.
Nginx Nginx Reverse proxy in front of the Django app; serves static assets and bounds upload body size.
Django Web / API Django 4.2 + DRF (uWSGI, Python 3.13) REST API, admin, OIDC login, upload/replace/subtitle endpoints, the public videos API, the MediaConvert SNS webhook, and the edX sync trigger.
Celery Worker + Beat Celery + celery-redbeat (Python 3.13) Runs upload streaming, transcode/retranscode orchestration, YouTube sync, edX posting, Keycloak migration, and janitor sweeps. Beat (-B) schedules periodic tasks via RedBeat.
PostgreSQL PostgreSQL 18 (RDS in prod) System of record for Collections, Videos, VideoFiles, KeycloakGroups, EdxEndpoints, EncodeJobs.
Redis Redis 8 (ElastiCache in prod) Celery broker + result backend, RedBeat schedule store, Django cache, and per-video upload locks.
S3 Buckets AWS S3 (upload / transcode / thumbnail / subtitle / watch) Five buckets — source uploads, transcoded HLS+MP4, thumbnails, subtitles, and a watch bucket polled for lecture-capture drops.