Design a large-scale online coding practice and interview platform similar to a programming challenge website.
The system should support:
-
browsing coding problems
-
viewing problem statements and sample test cases
-
writing code in the browser
-
running code against sample tests
-
submitting code against hidden tests
-
returning verdicts such as Accepted, Wrong Answer, Time Limit Exceeded, Runtime Error, and Compilation Error
-
storing submission history
Assume the following scale:
-
20 million monthly active users
-
200,000 concurrent active coding sessions at peak
-
50,000 submissions per minute at peak
-
support for 10 programming languages
-
median submission verdict latency under 5 seconds
Discuss:
-
APIs and core data model
-
high-level architecture
-
code execution and sandboxing
-
queueing and scheduling of judge jobs
-
storage for problems, test cases, code, and results
-
scaling strategy
-
security and isolation
-
observability and failure handling