์ํด๋ฆญ์ผ๋ก ์ฌ๋ฌ ํ๋ก๊ทธ๋จ ์ค์ผ์ค๋ง โ AWS Lambda์ 15๋ถ ์ ํ ๊ทน๋ณต
FAST ์ฑ๋ ์ด์์๋ ํ ๋ฌ์น ํ๋ก๊ทธ๋จ์ ์ค์ผ์ค๋งํ๊ณ Deploy ๋ฒํผ์ ํ ๋ฒ ๋๋ฆ ๋๋ค. ์ด ํ ๋ฒ์ ํด๋ฆญ ๋ค์๋ ์๋ฐฑ ๊ฐ์ ํ๋ก๊ทธ๋จ์ด ์์ฒ ๊ฐ์ MediaLive ์ค์ผ์ค ์ก์ ์ผ๋ก ๋ณํ๋์ด AWS์ ์์๋๋ก ์ ์ฉ๋์ด์ผ ํ๋ฉฐ, ์ด ๋ชจ๋ ์์ ์ Lambda์ 15๋ถ ์คํ ์ ํ ์๊ฐ ๋ด์ ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค. ์ค๊ฐ์ ์คํจํ๋ฉด ๋ผ์ด๋ธ ์ฑ๋์ ๊ณต๋ฐฑ์ด ์๊ธฐ๊ฒ ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋๊ท๋ชจ ์ฌ์ ๋ชฉ๋ก์ ์ํด๋ฆญ ๋ฐฐํฌ๋ฅผ ์์ ์ ์ผ๋ก ๋ง๋ ๋ฐฉ๋ฒ๊ณผ ๋ค์ ๋จ๊ณ๊ฐ ๋ ํฐ Lambda๊ฐ ์๋ ๋ค๋ฅธ ๋ฐํ์์ธ ์ด์ ๋ฅผ ์ค๋ช ํฉ๋๋ค.
๊ฐ๋ตํ ๊ฐ์
| ์ธก๋ฉด | ์ธ๋ถ ์ ๋ณด |
|---|---|
| ๋ฐํ์ | AWS Lambda (๋จ์ผ ํธ์ถ), 615์ด ๋ฐฑ์๋ ํ์์์ |
| ์ถ๋ ฅ ๋์ | MediaLive BatchUpdateScheduleCommand |
| ๋ฐฐ์น ์ฒ๋ฆฌ | ์์ฒญ๋น ์ต๋ 200๊ฐ์ MediaLive ์ก์ โ ์ค์ ๋ก๋ ์ฝ 25๊ฐ ํ๋ก๊ทธ๋จ |
| ํ๋ก๊ทธ๋จ๋น ์ก์ | ~7โ8๊ฐ (์ ๋ ฅ ์ ํ + ๋ ๋์ ๋น 4๊ฐ์ ์ํฐ๋งํฌ + 2๊ฐ์ SCTE-35), ๊ด๊ณ ์ฝ์ ์ ๋ ๋ง์ |
| ํด๋ฐฑ | ๋ฐฐ์น ๊ฑฐ๋ถ ์ ํ๋ก๊ทธ๋จ๋น ์ฌ์๋ |
| ๊ด์ฐฐ ๊ฒฐ๊ณผ | ์ฝ 44์ด ๋ง์ 195๊ฐ ํ๋ก๊ทธ๋จ ๋ฐฐํฌ (๋ก์ปฌ ์ธก์ ) |
| ๋ฌธ์ํ๋ ๋ชฉํ | 360๊ฐ ํ๋ก๊ทธ๋จ โค90์ด |
| ํ์ฅ ๊ฒฝ๋ก | >1๊ฐ์ ์ฌ์ ๋ชฉ๋ก์ ์ํ Step Functions ์ฒญํน โ ๊ณํ ์ค, ์์ง ์ถ์๋์ง ์์ |
๋น๋ฉด ๊ณผ์
์ฌ์ ๋ชฉ๋ก ๋ฐฐํฌ๋ ๋จ์ํ ์ฐ๊ธฐ ์์ ์ด ์๋๋ผ ์ค์ผ์คํธ๋ ์ด์ ์ ๋๋ค. ์ด์์๊ฐ ์ค์ผ์ค๋งํ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ๋ํด MediaLive๋ ์ธ์ ์ ๋ ฅ์ ์ ํํ๊ณ , ๊ฐ ๋ ๋์ ์ ๋ํ ์ํฐ๋งํฌ๋ฅผ ์ธ์ ์ผ๊ณ , SCTE-35 ํ ํฌ์ธํธ๋ฅผ ์ธ์ ์ฝ์ ํ๊ณ , ๊ด๊ณ ๋ฅผ ์ธ์ ์ฝ์ ํด์ผ ํ๋์ง ์ ํํ ์์์ผ ํฉ๋๋ค. ๊ตฌ์กฐ์ ์๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ก์ ์๋ ๊ฐ์ฐ์ ์ด์ง ์๊ณ ๊ณฑ์ ์ ์ ๋๋ค. ๊ฐ ํ๋ก๊ทธ๋จ์ ๊ด๊ณ ์ฝ์ ์ ์ ์ฝ 7โ8๊ฐ์ ์ก์ ์ ๋ฐ์์ํต๋๋ค โ ์ ๋ ฅ ์ ํ ํ๋, ์ํฐ๋งํฌ ํ์ฑํ 4๊ฐ(StaticImageOutputActivate๊ฐ ์ถ๋ ฅ ํฝ์ ์ขํ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋ ๋์ ๋น ํ๋), ๊ทธ๋ฆฌ๊ณ SCTE-35 ๋ง์ปค ๋ ๊ฐ. ๊ด๊ณ ์ฝ์ ์ ๊ฐ๊ฐ ์ธ ๊ฐ์ ์ก์ ์ ๋ ์ถ๊ฐํฉ๋๋ค. 360๊ฐ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ตฌ์ฑ๋ ํ ๋ฌ์ ๋๋ต 2,800๊ฐ์ ์ก์ ์ด ์ ์ก๋ฉ๋๋ค.
- MediaLive๋ ์ฑ๋๋น ์์ ์ง์ ์ ๊ฐ์ ํฉ๋๋ค. ์ค์ผ์ค ์ก์ ์ ์๊ฐ์ ๊ณ ์ ๋์ด ์์ผ๋ฉฐ ์๋ก๋ฅผ ์ฐธ์กฐํฉ๋๋ค. API๊ฐ ์ถฉ๋๋ก ๊ฑฐ๋ถํ์ง ์๋๋ก ๋์ผํ ์ฑ๋์ ๋ํ ์ฐ๊ธฐ ์์ ์ ๋ณ๋ ฌํํ ์ ์์ต๋๋ค.
- AWS Lambda์๋ 15๋ถ์ด๋ผ๋ ์๊ฒฉํ ์ํ์ ์ด ์์ต๋๋ค. ์ด๋ ์ ์ฐํ ์ ํ์ด๋ ๊ตฌ์ฑ ์ค์ ์ด ์๋๋๋ค. ์ค์ผ์คํธ๋ ์ดํฐ๋ ์ด ์๊ฐ ๋ด์ ์์ ์ ์๋ฃํด์ผ ํ๋ฉฐ, ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฑ๋์ด ์ ๋ฐ๋ง ๋ฐฐํฌ๋ ์ํ๊ฐ ๋ฉ๋๋ค.
- ๋ถ๋ถ์ ์คํจ๋ ์ด์์ ํ์ฉํ ์ ์์ต๋๋ค. 360๊ฐ ํ๋ก๊ทธ๋จ ์ค 174๋ฒ์งธ ํ๋ก๊ทธ๋จ์ด ์คํจํ์ฌ ์คํ์ด ์ค๋จ๋๋ฉด, ์ด์์๋ ๋ฌด์์ด ์ ์ฉ๋์๊ณ ๋ฌด์์ด ์ ์ฉ๋์ง ์์๋์ง ์ฐจ์ด์ ์ ํ์ ํ ์ ์์ต๋๋ค. ์ฑ๋์ ๊ณต๋ฐฑ์ด ์๋ ์ํ๋ก ๋ผ์ด๋ธ๋๋ฉฐ, ์์ฒญ์๋ ์ฝํ ์ธ ๊ฐ ์์ ๊ฒ์ผ๋ก ์์ํ๋ ๊ณณ์์ ์ฌ๋ ์ดํธ๋ฅผ ๋ณด๊ฒ ๋ฉ๋๋ค.
- ์ฒซ ๋ฒ์งธ ๋ฒ์ ์ ํ๋ก๊ทธ๋จ๋น ํ๋์ BatchUpdateSchedule์ ๋ณด๋๊ณ , ํ๋ก๊ทธ๋จ ์ฌ์ด์ 200ms์ ๋๊ธฐ ์๊ฐ์ ๋์์ต๋๋ค. ์ด๋ ํ๋ก๊ทธ๋จ๋น ์ฝ 2.5์ด์ ์ค์ ์๊ฐ์ ๋๋ค. 360๊ฐ ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ MediaLive๊ฐ ์ค์ ์์ ์ ์์ํ๊ธฐ๋ ์ ์ ์ด๋ฏธ Lambda ์ ํ์ ์ด๊ณผํ๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ผ์ ํด์ผ ํ ์ผ์ ๋ ๋นจ๋ฆฌ ์ฐ๋ ๊ฒ์ด ์๋๋๋ค. ๊ทธ๊ฒ์ MediaLive๊ฐ ์๊ตฌํ๋ ์์ ๋ณด์ฅ์ ์์ง ์์ผ๋ฉด์ ๋ ์ ๊ฒ ์ฐ๊ณ , ๋ถ๋ถ์ ์คํจ์ ๊ฒฌ๋๋ฉฐ, ๋จ์ผ ํธ์ถ ๋ด์ ๋จธ๋ฌด๋ ๊ฒ์ ๋๋ค.
๊ธฐ์กด ์ ๊ทผ ๋ฐฉ์์ด ์คํจํ๋ ์ด์
๋ช ๋ฐฑํ ๋ชจ๋ ํด๊ฒฐ์ฑ ์ ํ๋ ๋ฌธ์ ๊ฐ ์๋ ๊ตฌ์กฐ์ ์ธ ์ด์ ๋ก ์คํจํฉ๋๋ค.
- "๊ทธ๋ฅ Lambda ํ์์์์ ๋๋ฆฌ์ธ์." ๊ทธ๋ด ์ ์์ต๋๋ค. 15๋ถ์ AWS๊ฐ Lambda ์คํ์ ๋ํด ๋ถ๊ณผํ๋ ์๊ฒฉํ ์ํ์ ์ด๋ฉฐ, ์ฝ์์์ ์กฐ์ ํ ์ ์๋ ์ค์ ์ด ์๋๋๋ค. ์ค๋ น ๊ทธ๋ ๋๋ผ๋, ํ๋ก๊ทธ๋จ๋น ๋น์ฉ์ ์นดํ๋ก๊ทธ ๊ท๋ชจ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ฉฐ, ๋ ๋ง์ ์คํ ์๊ฐ์ ํ๋ณดํ๋ ๊ฒ์ ๋ค์ ํ๊ณ๋ฅผ ๋ฆ์ถ ๋ฟ์ ๋๋ค.
- "ECS Fargate๋ EC2๋ก ์ฎ๊ธฐ์ธ์." ์ฐ๋ฆฌ๋ ์ด ๋ฐฉ์์ ๊ณ ๋ คํ์ง๋ง ๊ธฐ๊ฐํ์ต๋๋ค. ์ฅ๊ธฐ ์คํ ์ปจํ ์ด๋๋ ๋ฐํ์์ ๋ํ ์์ ๊ถ์ ์๋ฏธํฉ๋๋ค: ์ํ ํ์ธ, ์คํ ์ค์ผ์ผ๋ง, ์ฝ๋ ์คํํธ vs ์ ํ ํธ๋ ์ด๋์คํ, IAM ๋ฒ์ ์ง์ , ๊ทธ๋ฆฌ๊ณ ๋ฒ์คํธ ๋ฐฉ์์ผ๋ก ์คํ๋๋ ์๋น์ค์ ๋ํ ์จ์ฝ ๋กํ ์ด์ ๋ฑ. Lambda๋ ๋ณธ์ง์ ์ผ๋ก ๋ฒ์คํธ์ฑ ์ํฌ๋ก๋์ ๋ํด ํธ์ถ๋น ๊ฒฉ๋ฆฌ ๋ฐ ์ ํด ๋น์ฉ ์ ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋จ ํ๋์ ๋ณ๋ชฉ ํ์์ ํด๊ฒฐํ๊ธฐ ์ํด ์ด ๋ชจ๋ ๊ฒ์ ํฌ๊ธฐํ ์ค๋น๊ฐ ๋์ด ์์ง ์์์ต๋๋ค.
- "MediaLive ์ฐ๊ธฐ๋ฅผ ๋ณ๋ ฌํํ์ธ์." MediaLive๋ ์ฑ๋๋ณ ์ค์ผ์ค ์ ๋ฐ์ดํธ๋ฅผ ์ง๋ ฌํํฉ๋๋ค. ๋์ผํ ์ฑ๋์ ๋ํ ๋์ BatchUpdateSchedule ํธ์ถ์ ์ก์ ํ์๋ผ์ธ์์ ๊ฒฝ์ํ๋ฉฐ ๊ฑฐ๋ถ๋ฉ๋๋ค. ์ ์ผํ๊ฒ ํฉ๋ฒ์ ์ธ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ ๋ฐฐ์น ๋ด๋ถ์ ์์ง, ๋ฐฐ์น ๊ฐ์๋ ์๋๋๋ค.
- "๊ทธ๋ฅ ์ถฉ๋ํ๊ฒ ๋๊ณ ์ด์์๊ฐ ์ฌ์๋ํ๊ฒ ํ์ธ์." ์ด๊ฒ์ ์ต์ ์ ์ต์ ์ ๋๋ค. ํ๋ก๊ทธ๋จ N์์ ๋ฐฐํฌ๊ฐ ์ค๋จ๋๋ฉด, ์ฑ๋์ UI์์ ์๋ฌด๋ ์ค๋ช ํ ์ ์๋ ์ํ๊ฐ ๋ฉ๋๋ค. ์ด์์๋ ์ฐจ์ด์ ์ ๋ณผ ์ ์๊ณ , ๋ธ๋๋ฐ์ค์ ๊ตฌ๋ฉ์ด ๋ซ๋ฆฐ ๋ผ์ด๋ธ ์ฑ๋์ ๋ฐ๊ฒ ๋ฉ๋๋ค. ์์คํ ์ ๋ชจ๋ ๊ฒ์ ์ ์ฉํ๊ฑฐ๋, ์ด์์๊ฐ ์กฐ์นํ ์ ์๋ ํ๋ก๊ทธ๋จ๋ณ ์ํ๋ฅผ ํฌํจํ ๋ถ๋ถ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฉํด์ผ ํฉ๋๋ค.
์ฐ๋ฆฌ์๊ฒ ๋จ์ ์๋จ์ ์์ ์์ฒด์ ํํ์์ต๋๋ค: ๋ฐฐ์น ๊ฑฐ๋ถ ์์๋ง ํ ์์ค ์ธ๋ถ์ฑ์ผ๋ก ์ ํ๋๋ ํด๋ฐฑ์ ์ฌ์ฉํ์ฌ, ์ง๋ ฌ๋ก ์คํ๋๋ ๋ ์ ๊ณ ๋ ํฐ ์ฐ๊ธฐ ์์ .
์ฐ๋ฆฌ์ ํด๊ฒฐ์ฑ
๋ฃจํ๊ฐ ์์๋๊ธฐ ์ ์ Lambda ์ธ๋ถ๋ก ๋น์ฉ์ ์ด๋ํ๊ณ , ๋ฃจํ ๋ด์์ MediaLive ์ฐ๊ธฐ ์์ ์ ํตํฉํ๋ฉฐ, ๋ฐฐ์น ์คํจ ์์๋ง ํ๋ก๊ทธ๋จ๋ณ ์ ์ถ๋ก ์ ํํฉ๋๋ค. ์ด๋ฌํ ์ธ ๊ฐ์ง ์์ด๋์ด๋ฅผ ์์๋๋ก ์ ์ฉํ์ผ๋ฉฐ โ ์ค๋๋ ์ค์ ๋ก ๋ฐฐํฌํ๋ ์นดํ๋ก๊ทธ ํฌ๊ธฐ์๋ 15๋ถ ์ ํ์ด ์ ํฉํ๋ค๋ ์๋์ ์ธ ๊ฒฐ์ ์ ๋ด๋ ธ์ต๋๋ค. ์ฌ์ ๋ชฉ๋ก์ด ๋จ์ผ ํธ์ถ์ ์ด๊ณผํ ์ ๋๋ก ์ปค์ง๋ฉด, ๋ ํฐ Lambda๊ฐ ์๋ ๋ค๋ฅธ ๋ฐํ์์ด ํด๊ฒฐ์ฑ ์ด ๋ฉ๋๋ค.

์ํคํ ์ฒ
- NestJS ๋ฐฑ์๋ (schedule.service.ts) โ ๋ฐฐํฌ๋ฅผ ์ฌ์ ์์ดํฉ๋๋ค: ๋ชจ๋ ๊ณ ์ ๋์์์ ๋ํด ํ ๋ฒ์ Mongo ์๋ณต, ๋ชจ๋ ๊ด๊ณ ๋ง์ปค์ ๋ํด ํ ๋ฒ์ Mongo ์๋ณต, ๊ทธ ๋ค์ ๊ณ ์ ๋์์ URL์ ๋ํด ๋ณ๋ ฌ ffprobe๋ฅผ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์บ์ํ์ฌ ๋ณด๊ฐ ๋ฃจํ์ ์ฌ์ฉํฉ๋๋ค.
- Lambda ์ค์ผ์คํธ๋ ์ดํฐ (fastChannel-lambda-fun/index.js) โ ๋ฐฐ์น ๋ฃจํ, ๋ฐฐ์น๋น ์ค๋กํ, ํ๋ก๊ทธ๋จ๋น ํด๋ฐฑ, ๊ณ ์(orphan) ์ ๋ฆฌ ์์ ์ ๋ด๋นํฉ๋๋ค.
- MediaLive BatchUpdateScheduleCommand โ ์ ์ผํ ์ฐ๊ธฐ ์ธํฐํ์ด์ค์ ๋๋ค. ์ ๋ ฅ ์ ํ, ์ํฐ๋งํฌ, SCTE-35, ๊ด๊ณ ์ฝ์ ๋ฑ ๋ชจ๋ ์ก์ ์ด ์ด๋ฅผ ํตํด ์ ๋ฌ๋ฉ๋๋ค.
- MongoDB โ ํ๋ก๊ทธ๋จ, ๋์์, ๊ด๊ณ ๋ง์ปค์ ๋ํ ์ง์ค์ ์์ฒ์ ๋๋ค; ๋ด๋ถ ๋ฃจํ ๋ด์์๋ ์ฟผ๋ฆฌ๋์ง ์์ต๋๋ค.
- scheduleResults map โ ๋ฐฑ์๋๋ก ๋ฐํ๋๋ ํ๋ก๊ทธ๋จ๋ณ scheduled / error ์ํ๋ก, ์ด์์๊ฐ ์คํ ํธ๋ ์ด์ค๊ฐ ์๋ ์ฐจ์ด์ ์ ํ์ธํ ์ ์๋๋ก ํฉ๋๋ค.
์ฃผ์ ์์ง๋์ด๋ง ๊ฒฐ์
1. ๋ฃจํ ์คํ ์ ์ ๋๋ฆฐ ์์ ์ ๋ฏธ๋ฆฌ ์์ดํฉ๋๋ค. ์๋ ์ฝ๋๋ ๋ณด๊ฐ ๋ฃจํ ๋ด์์ ์ค์ผ์ค๋น Mongo ์กฐํ์ ์ค์ผ์ค๋น ffprobe ํธ์ถ์ ์ํํ์ต๋๋ค โ ๊ณ ์ ์ ์ธ N+1 ์ด์ค ์ง๋ถ ๋ฐฉ์์ ๋๋ค. ํ์ฌ ๋ฐฑ์๋๋ ๋ชจ๋ ๊ณ ์ ๋์์๊ณผ ๊ด๊ณ ๋ง์ปค๋ฅผ ๊ฐ๊ฐ ํ ๋ฒ์ ์๋ณต์ผ๋ก ์ผ๊ด ๊ฐ์ ธ์จ ๋ค์, ๊ณ ์ URL์ ๋ํด ffprobe๋ฅผ ๋ณ๋ ฌ๋ก ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํด์๋ ์บ์์ ์ ์ฅํฉ๋๋ค. ๋ด๋ถ ๋ฃจํ๋ ์บ์ ํํธ๊ฐ ๋ฉ๋๋ค. ffprobe ์ง์ฐ ์๊ฐ์ ๋ฃจํ์์ ์ง๋ ฌ๋ก ์ฒ๋ฆฌ๋๋ ๊ฒ์ด ์๋๋ผ ๊ณ ์ URL๋น ํ ๋ฒ๋ง ์ง๋ถ๋ฉ๋๋ค.
2. MediaLive ์ฐ๊ธฐ ์์ ์ ์ฝ 25๊ฐ ํ๋ก๊ทธ๋จ ๋จ์์ ๋ฐฐ์น๋ก ํตํฉํฉ๋๋ค. ์ค์ผ์คํธ๋ ์ดํฐ ๋ด๋ถ์์, 200๊ฐ์ ์ก์ ์ด ๋๊ธฐ์ด์ ์์ด๊ฑฐ๋ ๋ง์ง๋ง ํ๋ก๊ทธ๋จ์ ๋๋ฌํ ๋๊น์ง ์ก์ ๋ค์ด ๋จ์ผ BatchUpdateScheduleCommand๋ก ๋์ ๋ฉ๋๋ค. ๊ฐ ํ๋ก๊ทธ๋จ์ด ์ฝ 7~8๊ฐ์ ์ก์ ์ ์์ฑํ๋ฏ๋ก, ๋ฐฐ์น๋ ์์ฐ์ค๋ฝ๊ฒ ๊ฐ 25๊ฐ ํ๋ก๊ทธ๋จ ์ ๋๊ฐ ๋ฉ๋๋ค. 200๊ฐ ์ก์ ์ ํ์ MediaLive์ ์์ฒญ๋น ํ์ด๋ก๋ ์ ํ๋ณด๋ค ํจ์ฌ ๋ฎ๊ฒ ์ ์งํ๊ณ ํฌ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์น๊ฐ ๊ฑฐ๋ถ๋ ๊ฐ๋ฅ์ฑ์ ์ค์ด๊ธฐ ์ํด ๋ณด์์ ์ผ๋ก ์ ํ๋์์ต๋๋ค โ ๋คํธ์ํฌ ๋น์ฉ์ ์๊ฐํ ๋งํผ ์ถฉ๋ถํ ํฌ๊ณ , ํ๋ก๊ทธ๋จ๋น ํด๋ฐฑ(๋ค์ ๊ฒฐ์ )์ด ์คํ๋์ด์ผ ํ ๋ ๋น์ฉ์ด ์ ๊ฒ ๋ค ๋งํผ ์ถฉ๋ถํ ์์ต๋๋ค. 25๋ฒ์ ๋คํธ์ํฌ ์๋ณต์ด ํ ๋ฒ์ผ๋ก ๋์ฒด๋ฉ๋๋ค. ๋ชจ๋ ํ๋ก๊ทธ๋จ ์ฌ์ด์ ์๋ 200ms ์ค๋กํ์ ์ด์ ๋ชจ๋ ๋ฐฐ์น ์ฌ์ด์ ์ ์ฉ๋ฉ๋๋ค.
3. ์๋๋ฅผ ์ํ ๋ฐฐ์น ์ฒ๋ฆฌ, ์ ํ์ฑ์ ์ํ ํด๋ฐฑ. ํตํฉ์ ๋จ์ผ ๋ถ๋ ํ๋ก๊ทธ๋จ์ด ๋ฐฐ์น ๋ด์ ๋ค๋ฅธ 24๊ฐ ํ๋ก๊ทธ๋จ์ ์ค์ผ์ํค์ง ์์ ๋์๋ง ์์ ํฉ๋๋ค. submitProgramBatch๊ฐ ์์ธ๋ฅผ ๋ฐ์์ํค๋ฉด, catch ๋ธ๋ก์ retryBatchAsIndividuals๋ฅผ ํธ์ถํ์ฌ ์คํจํ ๋ฐฐ์น ๋ด์ ๊ฐ ํ๋ก๊ทธ๋จ์ ์์ฒด BatchUpdateScheduleCommand๋ก ์ฌ์ ์ถํ๊ณ , ํ๋ก๊ทธ๋จ๋น status: 'scheduled' ๋๋ status: 'error'๋ฅผ ๊ธฐ๋กํ๋ฉฐ, ์๋ ์ฌ์ด์ 200ms๋ฅผ ๋๊ธฐํ๊ณ , ๊ฐ ๋ถ๋ถ์ ์ธ ์ฑ๊ณต ํ์ ์ก์ ํ์๋ผ์ธ์ ๋ค์ ๊ณ ์ ํฉ๋๋ค. ๋น ๋ฅธ ๊ฒฝ๋ก๋ ๋ฐฐ์น ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ณต๊ตฌ ๊ฒฝ๋ก๋ ์ธ๋ถํ๋ฉ๋๋ค. ์ด์์๋ ์ด๋ค ๊ฒฝ์ฐ๋ ํ๋ก๊ทธ๋จ๋ณ ์ฐจ์ด์ ์ ์ป์ต๋๋ค.
4. ๋ฐฐํฌ ๋ง์ง๋ง์ ๊ณ ์ ์์ ์ ์ ๋ฆฌํ๊ณ , ๋นํ ์ค์ ๋ฐฉ์งํ์ง ์์ต๋๋ค. sweepIncompleteProgramGroups๋ ๋ฐฐํฌ ๋ง์ง๋ง์ ํ ๋ฒ ์คํ๋์ด ๊นจ๋ํ ์ต์ข ์ํ์ ๋๋ฌํ์ง ๋ชปํ ๋ชจ๋ ์ก์ ๊ทธ๋ฃน์ ์ ๊ฑฐํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ฃจํ ๋์ ์ฑ๋์ ๋ด๋ถ ์ผ๊ด์ฑ์ ์ ์งํ๋ ค๊ณ ์๋์ ์ผ๋ก ์๋ํ์ง ์์ต๋๋ค โ ์ด๋ 15๋ถ ์์ฐ ๋ด์ ๋ค์ด๊ฐ์ผ ํ๋ ๋กค๋ฐฑ ๊ฒฝ๋ก๋ฅผ ์๋ฏธํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ ๋ฆฌ๋ ๋จ์ผ ์ค์์ด๋ฉฐ ํธ๋์ญ์ ์ด ์๋๋๋ค.
5. Lambda๋ฅผ ํ์ฅํ๋ ๋์ , ์นดํ๋ก๊ทธ๊ฐ ํ์ฅ๋ ๋ ๊ต์ฒดํฉ๋๋ค. ์ค๋๋ ์ฐ๋ฆฌ๊ฐ ๋ฐฐํฌํ๋ ๋ชจ๋ ๊ฒ์ ๋ํด ๋จ์ผ ํธ์ถ ๊ฒฝ๋ก๋ ์์ฐ ๋ด์์ ์ถฉ๋ถํ ์๋ฃ๋ฉ๋๋ค. ์์งํ ์ค์ผ์ผ ์์์ Step Functions ์ฒญํน์ ๋๋ค โ ์ฌ์ ๋ชฉ๋ก์ ๋ถํ ํ๊ณ , ์ฒญํฌ๋ฅผ ๋ณ๋ ฌ ์ํ ๋จธ์ ์ผ๋ก ์คํํ ๋ค์, ์ฌ์กฐ๋ฆฝํฉ๋๋ค. ์ด๋ 1๊ฐ์ ์ด์ ๋ฐ 6๊ฐ์ ์ฌ์ ๋ชฉ๋ก์ ์ํ ๊ฒฝ๋ก์ ๋๋ค. ์ด๋ ์ค๊ณ๋์์ง๋ง, ๋ฐฐํฌ๋์ง๋ ์์์ต๋๋ค. ์ด๊ฒ์ ๋ค์ ๋จ๊ณ๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ด ์ด๋ฏธ ์คํ ์ค์ด๋ผ๊ณ ๊ฐ์ฅํ๋ ๊ฒ๋ณด๋ค ๋ ์ ์ฉํฉ๋๋ค.
๊ฒฐ๊ณผ
- ๋ด๋ถ ํ ์คํธ์์, 195๊ฐ ํ๋ก๊ทธ๋จ ๋ฐฐํฌ๊ฐ ์ฝ 44์ด ๋ง์ ์๋ฃ๋์์ต๋๋ค โ ์ด๋ ์ ๋ถ์ด ๊ฑธ๋ฆฌ๋ ๋จ์ผ ํ๋ก๊ทธ๋จ ์ฒ๋ฆฌ ๋ฐฉ์์ ๊ธฐ์ค์ ์์ ํฌ๊ฒ ๋จ์ถ๋ ๊ฒ์ ๋๋ค.
- 360๊ฐ ํ๋ก๊ทธ๋จ(์ฝ 1๊ฐ์) ์ฌ์ ๋ชฉ๋ก์ ๋ํ ๋ฌธ์ํ๋ ๋ชฉํ๋ 615์ด ๋ฐฑ์๋ ํ์์์๊ณผ 15๋ถ Lambda ์ ํ ๋ด์์ 90์ด ์ดํ์ด๋ฉฐ, ์ด๋ ์ถฉ๋ถํ ์ฌ์ ์๋ ์๊ฐ์ ๋๋ค.
- ๋ฐฐ์น ๋ด ํ๋์ ๋ถ๋ ํ๋ก๊ทธ๋จ์ด ๋ ์ด์ ๋ค๋ฅธ 24๊ฐ์ ํ๋ก๊ทธ๋จ์ ์ค๋จ์ํค์ง ์์ต๋๋ค. ์ด์์๋ ๋ชจ๋ ๋ฐฐํฌ์์ ํ๋ก๊ทธ๋จ๋ณ ์ํ ๋งต์ ๋ฐํ๋ฐ์ต๋๋ค.
- ์์ฒญ์ ๋๋ฆฐ ๋ถ๋ถ๋ค โ Mongo ์กฐํ ๋ฐ ffprobe โ์ ์ค์ผ์ค ํญ๋ชฉ๋น ํ ๋ฒ์ด ์๋๋ผ ๊ณ ์ ๋ฆฌ์์ค๋น ํ ๋ฒ๋ง ์ฒ๋ฆฌ๋ฉ๋๋ค.
- 15๋ถ ์ ํ์ ์ฐ๋ฆฌ๊ฐ ์ค์ ๋ก ์ถ์ํ๋ ์นดํ๋ก๊ทธ ํฌ๊ธฐ์ ๋ํ ์ ํ ์์๊ฐ ๋ ์ด์ ์๋๋๋ค. ๋ค์ ์ ํ ์์๊ฐ ๋ ๊ฒฝ์ฐ, ๋ ํฐ Lambda๊ฐ ์๋ Step Functions ์ฒญํน์ด ํด๊ฒฐ์ฑ ์ด ๋ ๊ฒ์ ๋๋ค.
๊ธฐ์ ์คํ: AWS Lambda ยท AWS MediaLive ยท NestJS ยท MongoDB ยท Node 18 ยท ffprobe ยท TypeScript ยท AWS SDK v3

