๋ณธ ๊ธ์ ๋ทํ๋ฆญ์ค์ Tech๋ธ๋ก๊ทธ์ ๋ด์ฉ๊ณผ ๊ฐ์ธ์ ์ธ ์๊ฒฌ์ ํฌํจํ์ฌ ์์ฑํ์ต๋๋ค.
(์ฐธ์กฐ: https://medium.com/netflix-techblog/netflix-and-fill-c43a32b490c0)
์๋ก์ด ์ฝํ
์ธ ๊ฐ ์ถ์ ๋๋ฉด CP(Content Provider)๋ก๋ถํฐ ๋ทํ๋ฆญ์ค๋ด์ ์ฝํ
์ธ ์ด์ํ์ผ๋ก Digital Asset์ด ์ ๋ฌ ๋ฉ๋๋ค.
์ด ๊ณผ์ ์์ Netflix Platform์ ํตํฉํ๊ธฐ ์ํด ํ์์ ์ธ ํ์ง๊ด๋ฆฌ, ์ธ์ฝ๋ฉ๋ฑ ๋ค์ํ ์ ํ์ ์ฒ๋ฆฌ ๋ฐ ๊ฐ์ ์ด ์ด๋ฃจ์ด์ง๋๋ค. ์ด ๋จ๊ณ๊ฐ ๋๋๋ฉด ๊ด๋ จ Digital Asset (Bitrate, Caption)์ด ๋ค์ ํจํค์ง๋์ด Amazon S3์ ๋ฐฐํฌ ๋ฉ๋๋ค.
๋ฐฐํฌ ์ค๋น๊ฐ ๋ S3์ ์ฝํ
์ธ ๋ ์ฝํ
์ธ ์ด์ํ์ ์ํด metadata flag๊ฐ ์ง์ ๋๋ฉฐ, ์ด ์์ ์์ Open Connect ์์คํ
์ด ์ธ๊ณ๋ฐ์ OCA(Open Connect Appliance)์ ์ฝํ
์ธ ๋ฅผ ๋ฐฐํฌํ๊ธฐ ์์ํฉ๋๋ค.
Netflix์ Open Connect์ ๋ค๋ฅธ CDN๊ณผ์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ Proactive Caching์ ๋๋ค. ์ฌ์ฉ์๋ค์ด ์์ฒญํ ์๊ฐ๊ณผ ์์ฒญ ์๊ฐ์ ๋์ ์ ํ์ฑ์ผ๋ก ์์ธกํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ตฌ์ฑ ๊ฐ๋ฅํ ์๊ฐ๋ ๋์ non-peak bandwidth๋ฅผ ์ฌ์ฉํ์ฌ ์์ธกํ ์ฝํ ์ธ ๋ฅผ OCA์ ๋ค์ด๋ก๋ ํ ์ ์์ต๋๋ค. ๋ค๋ฅธ CDN์ ์ด๊ฒ์ด ๋ถ๊ฐ๋ฅํ๊ณ ๋ฒ์ฉ์ ์ธ Delivery Service๋ฅผ ์ ๊ณตํด์ผ ํ๋ฏ๋ก, LRU๊ธฐ๋ฐ์ Caching์ ์ ํธํ์ง์. CDN ์ฌ์ ์๊ฐ ์ฝํ ์ธ ๋ฅผ ์์ธกํ ํ์๋ ์์ผ๋๊น์. ๊ทธ๋ค์ ๋ฏธ๋์ด ์ฌ์ ์๊ฐ ์๋๋๊น์.
Netflix์ Fill pattern์ด ์ด๋ป๊ฒ ๋์ํ๋์ง ์ดํดํ๋ ค๋ฉด OCA๊ฐ IX์ ์์นํ๊ฑฐ๋ ISP ๋คํธ์ํฌ์ ํฌํจ๋์ด ์๋์ง ์ฌ๋ถ์ ์๊ด์์ด OCA ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ดํดํด์ผ ํฉ๋๋ค.
OCA๋ manifest cluster๋ก ๊ทธ๋ฃนํ ๋ฉ๋๋ค. ๊ฐ manifest ํด๋ฌ์คํฐ๋ ์ ์ ํ ์ฝํ ์ธ ์์ญ(์ฝํ ์ธ ๋ฅผ ์คํธ๋ฆฌ๋ฐ ํ ๊ฒ์ผ๋ก ์์๋๋ ๊ตญ๊ฐ ๊ทธ๋ฃน), ์ธ๊ธฐ๋ ํผ๋(์ด์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ๋ตํ๊ฒ ์ ๋ ฌ๋ ์ฝํ ์ธ ๋ชฉ๋ก)๋ก ๊ตฌ์ฑ๋๊ณ ๋ณด์ ํด์ผ ํ๋ ์ฝํ ์ธ ์ ์๋ฅผ ํ์ํฉ๋๋ค. Netflix๋ ๊ตญ๊ฐ, ์ง์ญ ๋๋ ๊ธฐํ ์ ์ ๊ธฐ์ค์ ๋ฐ๋ผ ๋ ๋ฆฝ์ ์ผ๋ก ์ธ๊ธฐ ์์๋ฅผ ๊ณ์ฐํฉ๋๋ค.
Fill cluster๋ shared content์์ญ๊ณผ ์ธ๊ธฐ ํผ๋๊ฐ ์๋ manifest cluster์ ๊ทธ๋ฃน์ ๋๋ค. ๊ฐ๊ฐ์ fill cluster๋ Open Connect ์ด์ํ์ ์ํด fill escalation policies์ fill master์ ์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
์๋์ ๋ค์ด์ด๊ทธ๋จ์ ๋์ผํ Fill cluster๋ด์ manifest cluster์ ์๋ฅผ ์ค๋ช
ํฉ๋๋ค.
OCA๋ค์ ๋คํธ์ํฌ๋ด์ ๋ค๋ฅธ OCA์ ๋ํ ์ ๋ณด, ์ฝํ ์ธ , ์ธ๊ธฐ๋๋ฑ์ ์ ์ฅํ์ง ์์ต๋๋ค. ๋ชจ๋ ์ ๋ณด๋ AWS Control Plain์ ์ง๊ณ๋๊ณ ์ ์ฅ ๋ฉ๋๋ค. OCA๋ ์ฃผ๊ธฐ์ ์ผ๋ก Control Plain๊ณผ ํต์ ํ์ฌ Cluster ๋ฉค๋ฒ๋ค์๊ฒ storingํ๊ณ servingํด์ผ ํ ์ฝํ ์ธ ๋ชฉ๋ก์ด ํฌํจ๋ manifest ํ์ผ์ ์์ฒญํฉ๋๋ค. AWS Control Plain์ ์ฌ๋ฌ ๊ณ ์์ค ์์๋ฅผ ๊ณ ๋ คํ์ฌ ranked list๋ฅผ ๋ค์ด๋ก๋ ํ ์ ์๋ location์ responseํฉ๋๋ค.
S3(Origin)์์ ๋ชจ๋ OCA์ ์ง์ ์ฝํ
์ธ ๋ฅผ ๋ฐฐํฌํ๋ ๊ฒ์ ์๊ฐ๊ณผ ๋น์ฉ๋ฉด์์ ๋นํจ์จ์ ์ด๋ฏ๋ก ๊ณ์ธตํ๋ ์ ๊ทผ๋ฒ์ ์ฌ์ฉ ํฉ๋๋ค. Open Connect์ ๋ชฉํ๋ ๊ฐ์ฅ ํจ์จ์ ์ธ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ์ฝํ
์ธ ๋ฅผ ์ ๋ฌํ๋๋ก ํ๋ ๊ฒ์
๋๋ค.
Least expensive fill source๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํ์ฌ ๊ฐ OCA์ ๋คํธ์ํฌ ์ํ ๋ฐ ๊ตฌ์ฑ ๋งค๊ฐ๋ณ์๋ฅผ ๊ณ ๋ คํฉ๋๋ค.
Fill escalation policies๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํฉ๋๋ค.
Control Plain์ Master๋ก ์ง์ ๋ OCA๋ฅผ ์ ํํฉ๋๋ค. Master์ ์ ์ฉ๋๋ fill escalation policies๋ ์ผ๋ฐ์ ์ผ๋ก ์ฝํ
์ธ ๋ฅผ ๊ฐ์ ธ์์ non-master์ ๋ก์ปฌ๋ก ๊ณต์ ํ๊ธฐ ์ํ ์ง์ฐ์๊ฐ์ ์ค์ฌ ์ต๋ํ ๋ฉ๋ฆฌ ๋๋ฌ ํ ์ ์๊ฒ ํฉ๋๋ค.
๊ฒฝ๋ก ๊ณ์ฐ์ ๋ํ ๋ชจ๋ ์
๋ ฅ์ด ์ฃผ์ด์ง๋ฉด, fill source ์์
์ ๋ค์๊ณผ ๊ฐ์ด ์๋ํฉ๋๋ค.
Fill master OCA๊ฐ S3๋ก ๋ถํฐ ์ฝํ
์ธ ๋ค์ด๋ก๋๋ฅผ ์๋ฃ ํ ํ Control Plain์ ์ฝํ
์ธ ๊ฐ ์ ์ฅ๋์์์ ๋ณด๊ณ ํฉ๋๋ค.
๊ทธ ๋ค์ ๋ค๋ฅธ OCA๊ฐ Control Plain๊ณผ ํต์ ํ์ฌ ํด๋น ์ฝํ
์ธ ์ fill source ์์ฒญ์ ๋ณด๋ด๋ฉด Fill master์์ fill option์ด ์ ๊ณต๋ฉ๋๋ค.
๋ ๋ฒ์งธ ๊ณ์ธต์ OCA๊ฐ ๋ค์ด๋ก๋๋ฅผ ์๋ฃํ๋ฉด ์ํ๋ฅผ ๋ณด๊ณ ํ๊ณ ๋ค๋ฅธ OCA๋ ํด๋น ์ฝํ
์ธ ์ ๋ํ fill source ์์
์ ์ํ ํฉ๋๋ค. ์ด ์์
์ fill window๋ด์์ ๊ณ์ ๋ฐ๋ณต๋ฉ๋๋ค.
๋ ์ด์ ํ์์๋ ์ฝํ
์ธ ๋ delete manifest์ ์ ์ฅ๋๊ณ ์ผ์ ๊ธฐ๊ฐ ํ์ ์ญ์ ๋ฉ๋๋ค.
Netflix ์ฌ์ฉ์๊ฐ ์คํธ๋ฆฌ๋ฐ์ ์์ํ๋ฉด ์ด ์๊ฐ๋์ fill source ์์ ์ด ๋๋๊ณ , fill window๊ฐ ๋ค๋ฅธ ์๊ฐ๋๋ก ์ด๋ํ๋ฉด์ fill source pattern์ด ๊ณ์ ์งํ ๋ฉ๋๋ค. (Netflix๋ ๊ธ๋ก๋ฒ ์๋น์ค์ด๊ธฐ์ ๊ฐ ์ง์ญ๋ณ๋ก ๋คํธ์ํฌ ์ ํด ์๊ฐ๋๊ฐ ๋ค๋ฆ)
Netflix๋ ํญ์ fill process๋ฅผ ๊ฐ์ ํ๊ณ ์์ต๋๋ค. Open Connect ์ด์ํ์์๋ ๋ด๋ถ ํด์ ์ฌ์ฉํ์ฌ Fill traffic์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํฉ๋๋ค. member๋ค์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํด์ผํ๋ catalog์ ์๊ณ๊ฐ ๋น์จ์ ํฌํจํ์ง ์๋ OCA์ ๋ํ alert์ด ์ค์ ๋๊ณ ๋ชจ๋ํฐ๋ง ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ์๋ ๋ค์ Fill process ์ ์ ํด๋น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ์ ์ํ๊ฒ ๋ฐฐํฌํด์ผ ํ๋ ์๋ก์ด ์ฝํ ์ธ ๋ ๊ธฐํ ์์ ์ฌํญ์ ๋ํด ์ฃผ๊ธฐ์ ์ผ๋ก fast-track fill์ ์ํ ํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฌํ fill pattern์ ์ฌ์ฉํ๋ฉด์ ๋ฐฐํฌ ์๊ฐ ๋ฐ ํ๋ก์ธ์ฑ ์๊ฐ์ ์ค์ ๋๋ค.
Netflix๋ 190๊ฐ๊ตญ์์ ์ด์๋๊ณ ์์ผ๋ฉฐ ์ ์ธ๊ณ ์ฌ๋ฌ ISP ๋คํธ์ํฌ์ ์์ฒ ๊ฐ์ ์ฅ๋น๊ฐ ๋ด์ฅ๋์ด ์๊ธฐ์ ISP์ ๋ํ ๋์ญํญ ๋น์ฉ์ ์ต์ํ ํ๋ฉด์ OCA์ ์ต์ ์ฝํ ์ธ ๋ฅผ ๋นจ๋ฆฌ ์ป์ ์ ์๋๋ก ํ๋๋ฐ์ ์ง์คํ๊ณ ์์ต๋๋ค.
Netflix๊ฐ ์ผ๋ฐ์ ์ธ Caching(LRU, NRU)๋ฐฉ์์ด ์๋ Proactive caching ๋ฐฉ์์ ํํ ์ด์ ๋ ๊ทธ๋ค์ด ๊ฐ์ง๊ณ ์๋ Network๋ฅผ ์จ์ ํ ์๋น์ค๋ฅผ ์ํด์ ์ฌ์ฉํ๊ธฐ ์ํจ์ผ๋ก ๋ณด์ฌ์ง๋ค.
NRU, LRU๋ Proactive caching์ ๋นํด Miss๊ฐ ๋ฐ์ํ ํ๋ฅ ์ด ์กด์ฌํ๊ธฐ์ ์ด๋ฌํ ๋์ญํญ๋ ์๋น์ค์ ์ธ ์ธก๋ฉด์์๋ ์๊น๋ค๋ ๊ทธ๋ค์ ์ง์ฐฉ์ด ๋ณด์ฌ์ง๋ค.
Netflix๋ ์ผ๋ฐ CDN์
์ฒด๊ฐ ์๋ ๋ฏธ๋์ด ์ฌ์
์์ด๊ธฐ์ ๊ฐ๋ฅํ ์๊ธฐ๊ฐ ์๋๊น?
๊ฒฐ๊ตญ ๊ทธ๋ค์ ์๊ฐ์ OCP๋ ๋น๊ต์ ์ ๋ ดํ x86๊ธฐ๋ฐ์ ํ๋์จ์ด๋ฅผ ์ฐ๊ณ ๋คํธ์ํฌ๋ฅผ ์ต๋ํ ํ์ฉํ์ฌ ๊ฐ์ฑ๋น ์๋ Open Connect๋ฅผ ์ด์ํ๊ณ ๊ทธ ๋จ๋ ๋น์ฉ์ผ๋ก ์ฝํ
์ธ ๋ฅผ ์ ์ํ๊ฒ ๋ค ์๋๊น?
๊ด๋ จ๋ ๋ด์ฉ์ ์๋์ ๋์์๊ณผ ๋งํฌ๋ฅผ ์ฐธ์กฐ
https://johannesbergsummit.com/wp-content/uploads/sites/6/2014/11/Monday_8_David-Fullagar.pdf