Designing a Job Scheduler for a Public-Facing Cloud Service

TLDRCreate a job scheduler for a public-facing cloud service, allowing customers to upload and run code either as one-off jobs or on a schedule. Consider isolation, security, and resource limitations. Explore options for monitoring and notifications.

Key insights

📅Customers can upload code to run as one-off jobs or on a schedule.

💻The system should support a large number of customers and handle a high volume of jobs.

⚙️Consider the need for isolation, security, and resource limitations when running customer code.

🔍Explore options for monitoring and providing job status to customers.

📩Consider providing notifications or a console for customers to track their jobs.

Q&A

Can customers upload code written in any language?

Yes, the system should support code written in any language.

Is there a limit on the execution time for a job?

The maximum execution time for a job is 24 hours.

Is there a limit on the number of jobs a customer can run?

Each customer can run up to 10,000 jobs.

Can customers access additional storage for their jobs?

Customers have access to a limited amount of ephemeral storage for their jobs.

Is there a limit on the number of customers or jobs the system can handle?

The system should be able to handle 100,000 customers and 100 billion jobs per day.

Timestamped Summary

00:00Introduction and discussion of the system design task.

06:39Definition of the job scheduler and requirements.

09:28Presentation of customer base and job statistics.

12:49Discussion of the user interface and API requirements.