Distributed Job Scheduler system design ๋ฅผ ์ฝ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์
๋๋ค.
๋๋์ user-submitted jobs์ ํ์ฅ ๊ฐ๋ฅํ๊ณ ๋ด๊ฒฐํจ์ฑ ์๊ฒ ๊ด๋ฆฌ, ์ถ์ ๋ฐ ์คํํ ์ ์๋ ๋ถ์ฐ ์์
์ค์ผ์ค๋ฌ๋ฅผ ์ค๊ณํฉ๋๋ค.
High level system design
๋ค์์ ๋ถ์ฐ ์์
์ค์ผ์ค๋ฌ์ ๊ณ ์์ค ์์คํ
์ค๊ณ(high level system design)์
๋๋ค.
๊ฐ ์๋น์ค๋ฅผ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Job Submission Service
Job submission service๋ Jobs
ํ
์ด๋ธ์ ๊ธฐ๋กํฉ๋๋ค. Jobs
ํ
์ด๋ธ์ ์คํค๋ง๋ UserId+JobId
๋ฅผ ๊ธฐ๋ณธ ํค๋ก, UserId
๋ฅผ ์ค๋ ํค๋ก ์ฌ์ฉํฉ๋๋ค.
์ค๋ ํค(shard key)๋ ๋ถ์ฐ ์์คํ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ์๋ฒ(์ค๋)์ ๋๋์ด ์ ์ฅํ ๋ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๋ถ๋ฐฐํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ธฐ์ค์ด ๋๋ ํค์ ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ํ์ ์ผ๋ก ํ์ฅ๋๊ธฐ ์ํด์๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ์ค๋๋ก ๋๋์ด ์ ์ฅํ๋ ๊ฒ์ด ํจ์จ์ ์ด๋ฉฐ, ์ด๋ฅผ ํตํด ์์คํ ์ ์ฑ๋ฅ๊ณผ ์ฒ๋ฆฌ ์ฉ๋์ ๋์ผ ์ ์์ต๋๋ค.
1 | 1 | True | 0 */2 * * * | 3 | t1 |
1 | 2 | True | 0 */6 * * * | 1 | t2 |
1 | 3 | True | 0 0 * * * | 0 | t3 |
1 | 4 | False | NULL | 3 | t4 |
2 | 5 | False | NULL | 3 | t4 |
Job submission์ ๋ํ ์์
์ ๋ถ์ํ๊ณ ScheduledJob
ํ์ ์์
์ฃผ๊ธฐ์ ๋ฐ๋ผ TTL์ ์ค์ ํ์ฌ ๋๊ธฐ์ด์ ์ถ๊ฐํฉ๋๋ค. ScheduledJob
์ ๋ค์ ์คํค๋ง๋ฅผ ์ฌ์ฉํ์ฌ ์์ฝ๋ ์์
์ ์ ์ฅํ๋ฉฐ, NextExecutionTimestamp
๊ฐ ์ค๋ ํค๋ก ์ฌ์ฉ๋ฉ๋๋ค. ํ์์คํฌํ ๊ธฐ๋ฐ ์ค๋ ํค๋ ๋๊ธฐ์ด ์์คํ
์ด ๋งค ๋ถ๋ง๋ค ๊ฐ์ ์์น์ ์๋ ์์
์ ๊ฐ์ ธ์ค๋๋ก ๋์ต๋๋ค.
T1 | 1 |
T1 | 2 |
T1 | 3 |
Scheduler Service
์ค์ผ์ค๋ฌ ์๋น์ค๋ ์์ ์ ์คํํ ๋ ๋ค์ ๋ ๊ฐ์ง ๊ฒฐ์ ์ ๋ด๋ ค์ผ ํฉ๋๋ค.
- ์์
์ด ์ฃผ๊ธฐ์ (interval)์ธ ๊ฒฝ์ฐ, ๋ค์ ์คํ ์๊ฐ์ ๊ณ์ฐํ๊ณ ๋ค์
ScheduledJob
ํ์ ๋๊ธฐ์ํต๋๋ค. - ์์ ์ ์ ํ, ์ข ์์ฑ ๋ฑ์ ๋ถ์ํ๊ณ ์ ์ ํ ์์ปค ๋ ธ๋๋ฅผ ์ฐพ์ ์์ ์ ์คํํฉ๋๋ค.
Workers
์์ ์ ๋ฐ๋ผ ์ฌ๋ฌ ์ ํ์ ์์ปค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฉฑ๋ฑ์ฑ ์์ปค(Idempotent workers)
๋ถ์ฐ ์์คํ ์์๋ (์ฌ์๋ ๋ฑ์ผ๋ก ์ธํด) ์ค๋ณต ๋ฉ์์ง๊ฐ ์์ปค์ ์ ๋ฌ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์์ปค๋ ๋ฉฑ๋ฑ์ฑ(idempotency)์ ์ ์งํด์ผ ํฉ๋๋ค. ์ฆ, ๋ ์์ปค๊ฐ ๋์ผํ ์์ ์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๋๋ผ๋ ์๋ก ์ํฅ์ ์ฃผ์ง ์์์ผ ํฉ๋๋ค.
๋น๋ฉฑ๋ฑ์ฑ ์์ปค(Non idempotent workers)
์ผ๋ถ ์์
์ ํน์ฑ์ ์ฌ๋ฌ ์์ปค๊ฐ ๋์ผํ ์์
์ ๋์์ ์ฒ๋ฆฌํ์ง ์๋๋ก ํด์ผ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์์ปค๋ ์ธ๋ถ ์ ์ฅ์๋ฅผ ์ฐธ์กฐํด ์์
์งํ ์ํ๋ฅผ ํ์ธํ๊ณ , ์ฒ๋ฆฌ ์ค์ธ์ง ํ์ธํ์ฌ ํ์์ ๋ฐ๋ผ ์์
์ ๊ณ์ํ๊ฑฐ๋ ์ค๋จํฉ๋๋ค.
๋จ๊ธฐ ์์ (Short running job)
๋ช ์ด ์์ ์๋ฃํ ์ ์๋ ๋จ๊ธฐ ์์ ์ ํ์์์ ๋ด์์ ๋๊ธฐ์ด์ ์๋ตํ ์ ์์ต๋๋ค.
์ฅ๊ธฐ ์์ (Long running job)
์ผ๋ถ ์์ ์ ์คํ์ ๋ช ๋ถ ํน์ ๋ช ์๊ฐ ์ด์ ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ๋๊ธฐ์ด ์์คํ ์ ์ด ์ ๋๋ก ์ค๋ ๊ธฐ๋ค๋ฆด ์ ์์ผ๋ฏ๋ก ์ด๋ฒคํธ๊ฐ ํ์์์๋์ด ๋ค๋ฅธ ์์ปค์๊ฒ ์ฌ์ ๋ฌ๋ ์ ์์ผ๋ฉฐ, ์ด๋ก ์ธํด ๋์ผํ ์์ ์ด ์ฌ๋ฌ ์์ปค์์ ์ฌ์ฒ๋ฆฌ๋ ์ ์์ต๋๋ค. ์ฅ๊ธฐ ์์ ์ ์ฒ๋ฆฌํ๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ด ์์ผ๋ฉฐ, ์์ ์ ํน์ฑ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์์ ์ฒ๋ฆฌ ํ์ด์ง(Paginate the job processing)
์์ ๋ฒ์๋ฅผ ์์ ์ฒญํฌ๋ก ๋๋๊ณ ํ์ด์ง ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์์ ์ ๋จ๊ธฐ ์์ ์ผ๋ก ๋ณํํฉ๋๋ค.Checkpoint
ํ ์ด๋ธ์ ์ฌ์ฉํด ์์ ์งํ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.JobId PageSize PageStart IsCompleted 1 10 20 False 2 10 0 False 3 10 100 True ์ฅ๊ธฐ ์คํ ์์ ์ ์ํ ๋ฏธ๋ ๋ฉ์์ง ๋๊ธฐ์ด ์ถ๊ฐ(Enqueue message for long future)
์์ ์ ์์ ์ฒญํฌ๋ก ๋๋๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐJobStatus
ํ ์ด๋ธ์ ์ ์งํ์ฌ ์ฒ๋ฆฌ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.JobId Status 1 INPROGRESS 2 COMPLETED
์ฌ์๋ ๋ฉ์ปค๋์ฆ(Retry mechanism)
์์ ์ ์ฌ์๋ ์ต์ ์ ๋ฐ๋ผ ์์ปค ๋ ธ๋๋ ๋ฉ์์ง๋ฅผ ํ์ธํ๊ฑฐ๋ ํ์ธํ์ง ์๊ณ ์ฌ์ ์กํฉ๋๋ค. ์ฌ์๋๊ฐ ๊ฐ๋ฅํ ์์ ์ ๊ฒฝ์ฐ ์คํจ ์ ๋ฉ์์ง๋ฅผ ํ์ธํ๊ณ , ๋ฉ์์ง๋ฅผ ์๋ก ๋ฐํํ๋ฉฐ ์ฌ์๋๋ฅผ ์งํํฉ๋๋ค. ์ฌ์๋๊ฐ ๋ถ๊ฐ๋ฅํ ์์ ์ ์คํจ ์ ๋ฉ์์ง๋ฅผ ํ์ธํ์ง ์๊ณ ์ค๋จํฉ๋๋ค.
์์ ์คํ ์ด๋ ฅ(Task execution history)
์์
์คํ ์๋ฃ ํ ์์ปค๋ ์์
์คํ ์ด๋ ฅ์ ๊ธฐ๋กํฉ๋๋ค. TaskExecutionHistory
์คํค๋ง๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
JobId | StartTime | CompletedTime | Status | RetryCount |
---|
๋ณด๊ณ ์๋น์ค(Reporting Service)
๋ณด๊ณ ์๋น์ค๋ Jobs
์ TaskExecutionHistory
ํ
์ด๋ธ์ ์ฌ์ฉํด ์ฌ์ฉ์๋ณ ์์
์ํ๋ฅผ ํ์ํฉ๋๋ค.
์๋ฆผ ๋ฐ ๋ชจ๋ํฐ๋ง ์๋น์ค(Alerting and monitoring service)
์์ ์คํจ์จ์ ๋ชจ๋ํฐ๋ง ์์คํ ์ ๊ธฐ๋กํ๊ณ ์กฐ๊ฑด์ ๋ฐ๋ผ ์๋ฆผ ๊ท์น์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์ค์ผ์ผ๋ง ์์ ์ค์ผ์ค๋ฌ ์์คํ (Scale job scheduler system)
์ฌ์ฉ์์ ์์ ์ ์์ ๋ฐ๋ผ ๊ฐ ์ปดํฌ๋ํธ๋ฅผ ์ํ์ผ๋ก ํ์ฅํ ์ ์์ต๋๋ค. ์ ์ฅ์๊ฐ ์ ์ ํ ๋ถํ ๋์ด ์์ด ์ํ ํ์ฅ์ด ์ฉ์ดํฉ๋๋ค.
reference: Distributed Job Scheduler system design
'note' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Apache Spark RDD(Resilient Distributed Dataset) (0) | 2024.11.22 |
---|---|
Metrics Monitoring and Alerting system (๋ฒ์ญ) (0) | 2024.11.20 |
MLOps 03: Feast Feature Store โ An In-depth Overview Experimentation and Applica (0) | 2024.11.14 |
MLOps 02: Dagster โ Seamless Data Pipelines & ML Model Management for Machine Le (0) | 2024.11.14 |
MLOps 01: Data testing, why, what and how (0) | 2024.11.14 |