Design Video Streaming Service
์๊ตฌ์ฌํญ
๋น ๋ฅธ ๋น๋์ค ์ ๋ก๋
์ํํ ์คํธ๋ฆฌ๋ฐ ํ๊ฒฝ
๋ชจ๋ฐ์ผ ์ฑ / ์น / TV ๋ฑ ๋ค์ํ ํ๋ซํผ ์ง์
๋ค๊ตญ์ด ์ง์
์ฌ์ ํ์ง ์ ํ ๊ฐ๋ฅ
๋น๋์ค ์ข ๋ฅ ๋ฐ ํด์๋ ๋๋ถ๋ถ ์ง์
์ฌ์ฉ์๊ฐ ์ ๋ก๋ํ ๋น๋์ค๋ 1GB ์ดํ
ํด๋ผ์ฐ๋ ์๋น์ค ํ์ฉ ๊ฐ๋ฅ
๋์ ๊ฐ์ฉ์ฑ / ๊ท๋ชจ ํ์ฅ์ฑ / ์์ ์ฑ
DAU 500๋ง๋ช
ํ๊ท ์ด์ฉ ์๊ฐ 30๋ถ / ํ๋ฃจ ํ๊ท 5๊ฐ ๋น๋์ค ์์ฒญ
10%์ ์ฌ์ฉ์๊ฐ ํ๋ฃจ์ 1 ๋น๋์ค ์ ๋ก๋ / ๋น๋์ค ํ๊ท ํฌ๊ธฐ 300MB
๋น๋์ค ์คํธ๋ฆฌ๋ฐ ์๋น์ค๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์์ ๊ฐ์ ์๊ตฌ์ฌํญ์ ๋ง์กฑํด์ผํ ๋, ์๋์ ๊ฐ์ด ์ถ์ ํ ์ ์๋ค.
๋งค์ผ ์๋ก ์๊ตฌ๋๋ ์ ์ฅ ์ฉ๋: 500๋ง * 10% * 300MB = 150TB
CDN ๋น์ฉ: ๊ฐ ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด์ CDN ๋น์ฉ์ ๋ฐ๋ผ ๋ค๋ฆ(AWS CloudFront์ ๊ฒฝ์ฐ 500๋ง * 5๊ฐ * 0.3GB * 0.02$ = 150,000$)
ํด๋ผ์ฐ๋ ์๋น์ค์ CDN์ ํตํด ๋น๋์ค ์คํธ๋ฆฌ๋ฐ ์๋น์ค๋ฅผ ํ๊ฒ ๋๋ฉด ๋น์ฉ์ด ๋งค์ฐ ๋ง์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์, ์ด ๋น์ฉ์ ์ค์ผ ์ ์๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํด์ผ ํ๋ค.
์์คํ
์ค๊ณ
๋น๋์ค ์คํธ๋ฆฌ๋ฐ ์๋น์ค๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ํฌ๊ฒ ๋ ๊ฐ์ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑํ ์ ์๋ค.
CDN: ๋น๋์ค๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์ ์ฅ์
API ์๋ฒ: ๋น๋์ค ์คํธ๋ฆฌ๋ฐ์ ์ ์ธํ ๋ชจ๋ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์๋ฒ(ํผ๋ ์ถ์ฒ / ๋น๋์ค ์ ๋ก๋ URL ์์ฑ / ๋ฉํ๋ฐ์ดํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ์บ์ ๊ฐฑ์ / ์ฌ์ฉ์ ์ธ์ฆ ๋ฑ)
๋ํ ํด๋น ์๋น์ค์์ ํต์ฌ์ด ๋ ์ ์๋ ๊ธฐ๋ฅ์ ๋น๋์ค ์ ๋ก๋ / ๋น๋์ค ์คํธ๋ฆฌ๋ฐ์ผ๋ก, ์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ๊ฐ๋ต์ ์ธ ์ ์ฐจ๋ ๋ค์๊ณผ ๊ฐ๋ค.
๋น๋์ค ์
๋ก๋
API ์๋ฒ: ๋น๋์ค ์คํธ๋ฆฌ๋ฐ์ ์ ์ธํ ๋ค๋ฅธ ์์ฒญ ์ฒ๋ฆฌ
๋ฉํ๋ฐ์ดํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค: ๋น๋์ค ๋ฉํ๋ฐ์ดํฐ ์ ์ฅ
๋ฉํ๋ฐ์ดํฐ ์บ์: ๋ฉํ๋ฐ์ดํฐ ์บ์ฑ
์๋ณธ ์ ์ฅ์: ์๋ณธ ๋น๋์ค๋ฅผ ์ ์ฅํ ๋ํ ์ด์ง ํ์ผ(BLOB, Binary Large Object Storage) ์ ์ฅ์
ํธ๋์ค์ฝ๋ฉ ์๋ฒ: ๋น๋์ค ํฌ๋งท์ ๋ณํํ๋ ์ธ์ฝ๋ฉ ์๋ฒ, ๋จ๋ง์ด๋ ๋์ญํญ ์๊ตฌ์ฌํญ์ ๋ง๊ฒ ์ต์ ์ ๋น๋์ค ์คํธ๋ฆผ์ผ๋ก ๋ณํ
ํธ๋์ค์ฝ๋ฉ ๋น๋์ค ์ ์ฅ์: ํธ๋์ค์ฝ๋ฉ์ด ์๋ฃ๋ ๋น๋์ค๋ฅผ ์ ์ฅํ๋ BLOB ์ ์ฅ์
CDN: ๋น๋์ค ์บ์ฑ ๋ฐ ์คํธ๋ฆฌ๋ฐ
ํธ๋์ค์ฝ๋ฉ ์๋ฃ ํ: ๋น๋์ค ํธ๋์ค์ฝ๋ฉ ์๋ฃ ์ด๋ฒคํธ๋ฅผ ๋ณด๊ดํ๋ ๋ฉ์์ง ํ
ํธ๋์ค์ฝ๋ฉ ์๋ฃ ํธ๋ค๋ฌ: ํธ๋์ค์ฝ๋ฉ ์๋ฃ ํ์์ ์ด๋ฒคํธ ๊บผ๋ด ๋ฉํ๋ฐ์ดํฐ ์บ์ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐฑ์ ํ๋ ์์ ์๋ฒ
์ ์ปดํฌ๋ํธ๋ค์ ํตํด ๋น๋์ค๊ฐ ์ ๋ก๋ ์์ฒญ์ ํ๋ฉด ๋น๋์ค ์ ๋ก๋์ ๋ฉํ๋ฐ์ดํฐ ๊ฐฑ์ ์ด ์ด๋ฃจ์ด์ง๋ฉฐ, ๋ ์์ ์ด ๋ณ๋ ฌ์ ์ผ๋ก ์งํ๋๋ค.
๋น๋์ค ์ ๋ก๋
๋น๋์ค๋ฅผ ์๋ณธ ์ ์ฅ์์ ์ ๋ก๋
ํธ๋์ค์ฝ๋ฉ ์๋ฒ๋ ์๋ณธ ์ ์ฅ์์์ ์ ๋ก๋ ๋ ๋น๋์ค๋ฅผ ๊ฐ์ ธ์ ํธ๋์ค์ฝ๋ฉ ์์
ํธ๋์ค์ฝ๋ฉ ์๋ฃ ํ ์๋ ๋ ์์ ์ ๋ณ๋ ฌ๋ก ์งํ
ํธ๋์ค์ฝ๋ฉ์ด ์๋ฃ๋ ๋น๋์ค๋ฅผ ํธ๋์ค์ฝ๋ฉ ๋น๋์ค ์ ์ฅ์์ ์ ์ฅ -> CDN์ ์บ์ฑ
ํธ๋์ค์ฝ๋ฉ ์๋ฃ ์ด๋ฒคํธ๋ฅผ ํธ๋์ค์ฝ๋ฉ ์๋ฃ ํ์ ๋ณด๋ -> ์๋ฃ ํธ๋ค๋ฌ๊ฐ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํด ๋ฉํ๋ฐ์ดํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ์บ์ ๊ฐฑ์
API ์๋ฒ์์ ๋๋ฐ์ด์ค์ ๋น๋์ค ์ ๋ก๋ ์๋ฃ ์๋ฆผ ์ ์ก
๋ฉํ๋ฐ์ดํฐ ๊ฐฑ์
์๋ณธ ์ ์ฅ์์ ํ์ผ์ด ์ ๋ก๋๋๋ ๋์, ๋ณ๋ ฌ์ ์ผ๋ก ๋น๋์ค ๋ฉํ๋ฐ์ดํฐ๋ฅผ API ์๋ฒ์ ๊ฐฑ์ ์์ฒญ
API ์๋ฒ๋ ๋ฉํ๋ฐ์ดํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฉํ๋ฐ์ดํฐ ์ ์ฅ
๋น๋์ค ์คํธ๋ฆฌ๋ฐ
๋น๋์ค ์คํธ๋ฆฌ๋ฐ์ ์ํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ํ์คํ๋ ํต์ ๋ฐฉ๋ฒ(์คํธ๋ฆฌ๋ฐ ํ๋กํ ์ฝ)์ด ํ์ํ๋ฐ, ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ด ์๋ค.
MPEG-DASH(Moving Picture Experts Group - Dynamic Adaptive Streaming over HTTP)
Apple HLS(HTTP Live Streaming)
Microsoft Smooth Streaming
Adobe HTTP Dynamic Streaming
ํ๋กํ ์ฝ๋ง๋ค ์ง์ํ๋ ๋น๋์ค ์ธ์ฝ๋ฉ์ด ๋ค๋ฅด๊ณ ํ๋ ์ด์ด๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์, ๋น๋์ค ์คํธ๋ฆฌ๋ฐ ์๋น์ค๋ฅผ ์ค๊ณํ ๋ ์๋น์ค์ ๋ง๋ ํ๋กํ ์ฝ์ ์ ํํด์ผ ํ๋ค.
๋น๋์ค ํธ๋์ค์ฝ๋ฉ
๋น๋์ค๊ฐ ์ฌ์๋๊ธฐ ์ํด์ ํธํ๋๋ ๋นํธ๋ ์ดํธ์ ํฌ๋งท์ด์ด์ผ ํ๋๋ฐ, ์ด๋ฅผ ์ํด ๋น๋์ค ํธ๋์ค์ฝ๋ฉ์ด ํ์ํ๋ค.
๊ฐ๊ณต๋์ง ์์ ์๋ณธ ๋น๋์ค๋ ๋์ ์ฉ๋์ ์ฐจ์ง
์๋น์ ๋จ๋ง๊ณผ ๋ธ๋ผ์ฐ์ ๋ ํน์ ์ข ๋ฅ์ ๋น๋์ค ํฌ๋งท๋ง ์ง์ํ๊ธฐ ๋๋ฌธ์, ํ๋์ ๋น๋์ค๋ฅผ ์ฌ๋ฌ ํฌ๋งท์ผ๋ก ์ธ์ฝ๋ฉ ํ์
๋คํธ์ํฌ ๋์ญํญ์ ๋ฐ๋ฅธ ๋น๋์ค ํ์ง ์ ๊ณต ํ์
๋น๋์ค ๋๊น ํ์ ๋ฐฉ์ง๋ฅผ ์ํด ๋คํธ์ํฌ ์ํฉ์ ๋ฐ๋ฅธ ๋น๋์ค ํ์ง ์๋ ์กฐ์ ํ์
์ธ์ฝ๋ฉ ํฌ๋งท์ ์์ฃผ ๋ค์ํ๋ฐ, ๋๋ถ๋ถ ๋ค์ ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
์ปจํ ์ด๋: ๋น๋์ค ํ์ผ / ์ค๋์ค / ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๋ฐ๊ตฌ๋ ์ญํ
์ฝ๋ฑ: ๋น๋์ค ํ์ง์ ๋ณด์กดํ๋ฉด์ ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ผ ๋ชฉ์ ์ผ๋ก ๊ณ ์๋ ์์ถ ๋ฐ ์์ถ ํด์ ์๊ณ ๋ฆฌ์ฆ
๋น๋์ค ํธ๋์ค์ฝ๋ฉ ์ํคํ
์ฒ
๋น๋์ค ํธ๋์ค์ฝ๋ฉ์ ์ํํ๊ธฐ ์ํ ์ํคํ ์ฒ๋ ๋ค์ฏ ๊ฐ์ ์ฃผ์ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋๋ค.
์ ์ฒ๋ฆฌ๊ธฐ: ์์ ์ ์ฒ๋ฆฌํ๊ธฐ ์ ์๋ ์ธ ๊ฐ์ง ์์ ์ํ
๋น๋์ค ๋ถํ : ๋น๋์ค ์คํธ๋ฆผ์ GOP ๋จ์๋ก ๋น๋์ค ๋ถํ
DAG ์์ฑ: ์คํํ ์์ ์ DAG(Directed Acyclic Graph)๋ก ์์ฑ
๋ฐ์ดํฐ ์บ์: GOP์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์์ ์ ์ฅ์์ ๋ณด๊ดํ์ฌ ๋น๋์ค ์ธ์ฝ๋ฉ ์คํจ ์ ๋ณด๊ด๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํด ์ฌ์๋
DAG ์ค์ผ์ค๋ฌ: DAG๋ฅผ ๋ช ๊ฐ์ ๋จ๊ณ๋ก ๋ถํ ํ ๋ค ๊ฐ๊ฐ์ ์์ ๊ด๋ฆฌ์์ ์์ ํ์ ๋ฃ์ด ์์ ์ํ
์์ ๊ด๋ฆฌ์: ํจ๊ณผ์ ์ธ ์์ ๋ฐฐ๋ถ์ ํ ์ ์๋๋ก ์๋ ์ธ๊ฐ์ ํ์ ์์ ์ค์ผ์ค๋ฌ๋ฅผ ์ด์ฉํด ์์ ์ ๊ด๋ฆฌ
์์ ํ: ์คํํ ์์ ์ด ๋ณด๊ด๋์ด ์๋ ์ฐ์ ์์ ํ
์์ ์๋ฒ ํ: ์์ ์๋ฒ์ ๊ฐ์ฉ ์ํ ์ ๋ณด๊ฐ ๋ณด๊ด๋์ด ์๋ ์ฐ์ ์์ ํ
์คํ ํ: ํ์ฌ ์คํ ์ค์ธ ์์ ๋ฐ ์์ ์๋ฒ ์ ๋ณด๊ณผ ๋ณด๊ด๋์ด ์๋ ํ
์์ ์ค์ผ์ค๋ฌ: ์ต์ ์ ์์ /์๋ฒ ์กฐํฉ์ ๊ณจ๋ผ, ํด๋น ์์ ์๋ฒ์ ์์ ํ ๋น
์์ ์ ์ -> ์์ ์๋ฒ ์ ์ -> ์์ ์๋ฒ์ ์์ ํ ๋น -> ํด๋น ์์ ์ด ์ด๋ค ์๋ฒ์ ํ ๋น๋์๋์ง ์คํ ํ์ ๋ณด๊ด -> ์์ ์๋ฃ ์ ์คํ ํ์์ ์ ๊ฑฐ
์์ ์คํ ์๋ฒ: DAG์ ์ ์๋ ์์ ์ํ
์์ ์ ์ฅ์: ์์ ์ ์ฅ์์ ๋ณด๊ด๋ ๋ฐ์ดํฐ๋ ๋น๋์ค ํ๋ก์ธ์ฑ ์คํจ ์ ์ฌ์๋์ ์ฌ์ฉ, ์๋ฃ ํ์๋ ์ญ์
๋ค์ฏ ๊ฐ์ ์ปดํฌ๋ํธ๋ฅผ ํตํ ๋น๋์ค ํธ๋์ค์ฝ๋ฉ์ด ์ํ๋๋ ์ ์ฐจ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ ์ฒ๋ฆฌ๊ธฐ๋ ๋น๋์ค๋ฅผ ๋ถํ ํ๊ณ DAG๋ฅผ ์์ฑํ ๋ค, ๋ฐ์ดํฐ ์บ์์ ๋ณด๊ด
DAG ์ค์ผ์ค๋ฌ๋ DAG๋ฅผ ๋จ๊ณ๋ก ๋ถํ ํ ๋ค ๊ฐ๊ฐ์ ์์ ๊ด๋ฆฌ์์ ์์ ํ์ ์ ๋ฌ
์์ ๊ด๋ฆฌ์๋ ์์ ํ์์ ์์ ์ ์ ์ ํด ์์ ์๋ฒ ํ์ ๋ฃ๊ณ , ์์ ์๋ฒ๋ฅผ ์ ์ ํด ์์ ์ ํ ๋น
์์ ์คํ ์๋ฒ๋ ํ ๋น๋ ์์ ์ ์ํ
์์ ์๋ฃ ํ ์์ ์ ์ฅ์์ ๋ณด๊ด๋ ๋ฐ์ดํฐ ์ญ์ ๋ฐ ์คํ ํ์์ ์ ๊ฑฐ
์์คํ
์ต์ ํ
์๋ ์ต์ ํ
๋น๋์ค์ ์ฉ๋์ ๋งค์ฐ ํฌ๊ธฐ ๋๋ฌธ์, ๋น๋์ค ์ ๋ก๋ ๋ฐ ์คํธ๋ฆฌ๋ฐ ์๋๋ฅผ ์ต์ ํํ๊ธฐ ์ํด ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
๋น๋์ค ๋ณ๋ ฌ ์ ๋ก๋: ํ๋์ ๋น๋์ค์์ ๋ถํ ๋ ์์ GOP๋ฅผ ๋ณ๋ ฌ์ ์ผ๋ก ์ ๋ก๋
์ ๋ก๋ ์ผํฐ: ์ฌ์ฉ์์ ๊ฐ๊น์ด ์ ๋ก๋ ์ผํฐ๋ฅผ ์ ํํด ๋น ๋ฅธ ์ ๋ก๋ ์๋ ๋ณด์ฅ
๋ชจ๋ ์ ์ฐจ ๋ณ๋ ฌํ: ๊ธฐ์กด ์ ์ฐจ์ ์ผ๋ก ์ํ๋๋ ์์ (์๋ณธ ์ ์ฅ -> ํธ๋์ค์ฝ๋ฉ -> ์ฒ๋ฆฌ๋ ๋น๋์ค ์ ์ฅ -> CDN ์บ์ฑ)์ ๋ฉ์์ง ํ๋ฅผ ํตํด ๋ณ๋ ฌํ ๋ฐ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถค
ํธ๋์ค์ฝ๋ฉ ์ํ ์, ๋ค์ด๋ก๋ ์์ ์ ๋ชจ๋ ๊ธฐ๋ค๋ฆด ํ์ ์์ด ๋ฉ์์ง ํ์ ๋ณด๊ด๋ ์ด๋ฒคํธ ๊ฐ๊ฐ์ ๋ณ๋ ฌ์ ์ผ๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅ
์์ ์ฑ ์ต์ ํ
๋น๋์ค ์คํธ๋ฆฌ๋ฐ ์๋น์ค์ ์์ ์ฑ์ ๋์ด๊ธฐ ์ํด ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
Pre-Signed URL: ๋น๋์ค ์ ๋ก๋ URL์ ์์ฑํ ๋, ํ๊ฐ ๋ฐ์ ์ฌ์ฉ์๋ง ์ฌ๋ฐ๋ฅธ ์ ์ฅ์์ ๋น๋์ค๋ฅผ ์ ๋ก๋ํ ์ ์๋๋ก ์ฌ์ ์ ์๋ช ๋ URL์ ์ ๊ณต
ํด๋ผ์ด์ธํธ๋ API ์๋ฒ์ ๋น๋์ค ์ ๋ก๋ ์์ฒญํ์ฌ Pre-Signed URL์ ๋ฐ์
ํด๋ผ์ด์ธํธ๋ Pre-Signed URL์ ๋น๋์ค ์ ๋ก๋
๋น๋์ค ๋ณดํธ: ๋์งํธ ์ ์๊ถ ๊ด๋ฆฌ / AES ์ํธํ / ์ํฐ๋งํฌ ๋ฑ์ ์ด์ฉํด ๋น๋์ค์ ๋ฌด๋จ ๋ณต์ฌ ๋ฐฉ์ง
๋น์ฉ ์ต์ ํ
๋น๋์ค ์คํธ๋ฆฌ๋ฐ ์๋น์ค์์ ์ธ๊ธฐ ์๋ ๋น๋์ค๋ ๋น๋ฒํ ์ฌ์๋์ง๋ง, ๋๋จธ์ง ๊ฑฐ์ ์ฌ์๋์ง ์๋๋ค. ์ด๋ฅผ ๊ณ ๋ คํด ๋น์ฉ์ ์ต์ ํํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ๋ค.
์ธ๊ธฐ ์๋ ๋น๋์ค๋ง CDN์ ์บ์ฑํ๊ณ , ๋๋จธ์ง๋ ํ์ํ ๋ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฐ์ ธ์ ์คํธ๋ฆฌ๋ฐ
ํน์ ์ง์ญ์๋ง ์ธ๊ธฐ ์๋ ๋น๋์ค๊ฐ ์๋ ๊ฒฝ์ฐ, ํด๋น ์ง์ญ์๋ง CDN์ ์บ์ฑ
์ฐธ๊ณ ์๋ฃ
Last updated
Was this helpful?