Metaโs Hyperscale Infrastructure. Overview and Insight.
Metaโs Hyperscale Infrastructure: Overview and Insights
Meta์ ์ ์ง๊ตฌ์ ๊ท๋ชจ์ ์ปดํจํ ์ธํ๋ผ๋ฅผ ์ดํด๋ณด๊ณ , โ๋ชจ๋ ๊ธ๋ก๋ฒ ๋ฐ์ดํฐ์ผํฐ๋ฅผ ํ๋์ ์ปดํจํฐ์ฒ๋ผ ์ด์ํ๋คโ๋ ๋น์ ์ ์คํํ๋ ๊ณผ์ ์์ ์ป์ ์ฃผ์ ๊ตํ์ ์๊ฐํฉ๋๋ค.
Alibaba, Amazon, ByteDance, Google, Meta, Microsoft, Tencent์ ๊ฐ์ ํ์ดํผ์ค์ผ์ผ๋ฌ๋ค์ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ํด๋ผ์ฐ๋, ์น, ๋๋ ๋ชจ๋ฐ์ผ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ง๊ตฌ ๊ท๋ชจ์ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํด ์์ต๋๋ค. ๋๋ถ๋ถ์ ์ค๋ฌด์๋ค์ด ์ด๋ฌํ ํ์ดํผ์ค์ผ์ผ ์ธํ๋ผ๋ฅผ ์ง์ ๊ตฌ์ถํ์ง๋ ์์ง๋ง, ์ด์ ๋ํด ์กฐ๊ธ์ด๋ผ๋ ๋ฐฐ์ฐ๋ ๊ฒ์ด ์ ์ตํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ญ์ฌ์ ์ผ๋ก, ๋ง์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๊ธฐ์ ๋ค์ด ๊ณ ๊ธ ํ๊ฒฝ์์ ๋น๋กฏ๋์์ต๋๋ค. 1960๋ ๋์ ๋ฉ์ธํ๋ ์๊ณผ ์ต๊ทผ 20๋ ๊ฐ์ ํ์ดํผ์ค์ผ์ผ ์ธํ๋ผ๊ฐ ๊ทธ ์์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฉ์ธํ๋ ์์์ ์ฒ์ ๋ฑ์ฅํ์ผ๋ฉฐ, ํ์ฌ๋ ์ค๋งํธ์์น์์๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๊ณ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, Kubernetes๋ Google์์, PyTorch๋ Facebook์์ ๊ฐ๋ฐ๋์์ง๋ง, ํ์ฌ๋ ๊ท๋ชจ๋ฅผ ๋ถ๋ฌธํ๊ณ ๋ค์ํ ์กฐ์ง์์ ์ฑํํ๊ณ ์์ต๋๋ค. ์ด๋ฌํ ํน์ ๊ธฐ์ ๋ค๋ฟ๋ง ์๋๋ผ, ํ์ดํผ์ค์ผ์ผ ์ธํ๋ผ์์ ์ป์ ์ ์๋ ์์น๊ณผ ๊ตํ์ ์ค๋ฌด์๋ค์ด ๋ ๋์ ์์คํ ์ ๊ตฌ์ถํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์ด ๊ธ์์๋ Meta์ ํ์ดํผ์ค์ผ์ผ ์ธํ๋ผ์ ๋ํ ๊ฐ์๋ฅผ ์ ๊ณตํ๋ฉฐ, ํนํ ์์คํ ์ํํธ์จ์ด ๊ฐ๋ฐ ๊ณผ์ ์์ ์ป์ ์ฃผ์ ํต์ฐฐ์ ์ค์ ์ ์ผ๋ก ๋ค๋ฃน๋๋ค. ๊ด๋ จ๋ ๋ถ๋ถ์์๋ ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋์์ ์ฐจ์ด์ ์ ๊ฐ์กฐํ๋ฉฐ, ์๋ก ๋ค๋ฅธ ์ ์ฝ ์กฐ๊ฑด์ด ์ด๋ป๊ฒ ์ฐจ๋ณํ๋ ์ต์ ํ๋ฅผ ์ด๋์๋์ง ์ค๋ช ํฉ๋๋ค. ์ด ๊ธ์์ ๋ค๋ฃจ๋ ๋ง์ ์ง์๋ค์ ์ด๋ฏธ ์ ๊ณ์ ์ฐ๊ตฌ ์ปค๋ฎค๋ํฐ์์ ๊ณต์ ๋๊ณ ์ค์ฒ๋์ด ์์ผ๋ฉฐ, Meta์ ์ด์ ์ฐ๊ตฌ์์๋ ๋ค๋ฃฌ ๋ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ๊ธ์ ์ฃผ์ ๊ธฐ์ฌ๋ ํ์ดํผ์ค์ผ์ผ ์ธํ๋ผ๋ฅผ ์ข ํฉ์ ์ผ๋ก ์ดํดํ ์ ์๋๋ก ์ ์ฒด์ ์ธ ๊ด์ ์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค.
Key insight
- Meta์ ์์ง๋์ด๋ง ๋ฌธํ๋ ์ ์ํ ๊ฐ๋ฐ, ๊ธฐ์ ๊ฐ๋ฐฉ์ฑ, ์ค์ ํ๊ฒฝ์์์ ์ฐ๊ตฌ, ๊ทธ๋ฆฌ๊ณ ๊ณต์ ์ธํ๋ผ๋ฅผ ์ค์ํฉ๋๋ค.
- ๊ฐ๋ฐ์์ ์์ฐ์ฑ์ ๋์ด๊ธฐ ์ํด Meta๋ ๋ณดํธ์ ์ผ๋ก ์ง์์ ๋ฐฐํฌ(Continuous Deployment)๋ฅผ ๋์ ํ์ผ๋ฉฐ, ์ ํต์ ์ธ ์๋น์ค ์ฝ๋ ๋์ ์๋ฒ๋ฆฌ์ค(Serverless) ํจ์๋ฅผ ๋ ๋ง์ด ์์ฑํ ์ ์๋๋ก ์ง์ํ๊ณ ์์ต๋๋ค.
- ํ๋์จ์ด ๋น์ฉ ์ ๊ฐ์ ์ํด Meta๋ ๋ฐ์ดํฐ์ผํฐ ๊ท๋ชจ์์ ํ๋์จ์ด-์ํํธ์จ์ด ๊ณต๋ ์ค๊ณ๋ฅผ ํ์ฉํ๋ฉฐ, ๊ฐ๋ณ ํด๋ฌ์คํฐ์ ๊ตญํ๋์ง ์๊ณ ๊ธ๋ก๋ฒ ๋ฐ์ดํฐ์ผํฐ ์ ์ฒด์์ ์ํฌ๋ก๋ ๋ง์ด๊ทธ๋ ์ด์ ์ ํฌํจํ ์์ ํ ๋น์ ์๋์ผ๋ก ์ต์ ํํฉ๋๋ค.
- Meta์ AI ์ ๋ต์ PyTorch๋ถํฐ AI ๊ฐ์๊ธฐ, ๋คํธ์ํฌ, ๊ทธ๋ฆฌ๊ณ Llama์ ๊ฐ์ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ๊น์ง ์ ์ฒด ์คํ์ ๊ณต๋ ์ค๊ณํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค.
1. Engineering Culture
Meta์ ์ธํ๋ผ๋ฅผ ์์ธํ ์ดํด๋ณด๊ธฐ ์ ์, ๋จผ์ ํ์ฌ์ ์์ง๋์ด๋ง ๋ฌธํ์ ๋ช ๊ฐ์ง ์ค์ํ ์ธก๋ฉด์ ๊ฐ์กฐํ๋ ค ํฉ๋๋ค. ์กฐ์ง์ ๋ฌธํ๋ ๊ธฐ์ ์ ํฐ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ ๋๋ค.
Move fast
Facebook์ ์ฐฝ๋ฆฝ ์ด๊ธฐ๋ถํฐ โ๋น ๋ฅด๊ฒ ์์ง์ด๊ธฐ(move-fast)โ ๋ฌธํ๋ฅผ ๊น์ด ๋ฟ๋ฆฌ๋ด๋ฆฌ๊ณ ์ ์งํด ์์ผ๋ฉฐ, ๋ฏผ์ฒฉ์ฑ๊ณผ ๋น ๋ฅธ ๋ฐ๋ณต(iteration)์ ๊ฐ์กฐํฉ๋๋ค. ์ด ์ฒ ํ์ ์ง์์ ์ํํธ์จ์ด ๋ฐฐํฌ(continuous deployment)์ ๋ํ ๊ฐํ ์์ง์์ ๋ถ๋ช ํ๊ฒ ๋๋ฌ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ์ต์ ์ฝ๋๋ฅผ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ํ๋ก๋์ ํ๊ฒฝ์ ๋ฐฐํฌํฉ๋๋ค. ๋ํ, ์ ํ ์์ง๋์ด๋ค์ ์ฃผ๋ก PHP, Python, Erlang์์ ์ํ๋ฅผ ๊ฐ์ง์ง ์๋(stateless) ์๋ฒ๋ฆฌ์ค(serverless) ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ ์ฝ๋์ ๋จ์์ฑ, ์์ฐ์ฑ, ๊ทธ๋ฆฌ๊ณ ๋ฐ๋ณต ์๋๋ฅผ ๋์ด๋ ๋ฐ ์ ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ ๊ธด ์ฌ๊ณํ(replanning) ๊ณผ์ ์์ด๋ ์คํ ์ฐ์ ์์๋ฅผ ์ ์ํ๊ฒ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ, ์ ๋งคํ ๋ฌธ์ ๋ค์ ๋ฐ๋ณต์ ์ธ ์คํ ๊ณผ์ ์์ ํด๊ฒฐํด ๋๊ฐ๋ ๋ฐฉ์์ ์ทจํฉ๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ ํ์ด ๋ณํํ๋ ์์ฅ ์ํฉ์ ๋น ๋ฅด๊ฒ ์ ์ํ๊ณ , ์๋ก์ด ์ ํ์ ์ ์ํ๊ฒ ์ถ์ํ ์ ์๋๋ก ํฉ๋๋ค.
Technology openness
Meta๋ ๋ด๋ถ์ ์ผ๋ก๋ ์ธ๋ถ์ ์ผ๋ก ๊ธฐ์ ๊ฐ๋ฐฉ์ฑ์ ์ ๊ทน์ ์ผ๋ก ์ถ๊ตฌํฉ๋๋ค. ๋ด๋ถ์ ์ผ๋ก, Meta๋ ๋ชจ๋ ธ๋ ํฌ(monorepo) ๋ฐฉ์์ ์ฑํํ์ฌ ๋ชจ๋ ํ๋ก์ ํธ์ ์ฝ๋๋ฅผ ๋จ์ผ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ ์ฅํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋ ๊ฒ์๊ณผ ์ฌ์ฌ์ฉ์ ์ฉ์ดํ๊ฒ ํ๊ณ , ํ ๊ฐ ํ์ ์ ์ด์งํฉ๋๋ค. ๋ค๋ฅธ ์กฐ์ง๋ค๋ ๋ชจ๋ ธ๋ ํฌ๋ฅผ ์ฌ์ฉํ์ง๋ง, ๊ฐ๋ฐฉ์ฑ์ ์ ๋๋ ์กฐ์ง๋ง๋ค ๋ค๋ฆ ๋๋ค. ์ผ๋ถ ์กฐ์ง์์๋ ๊ฐ ํ๋ก์ ํธ์ ์ง์ ๋ ์์ ์๊ฐ ์์ด, ์ฝ๋ ๋ณ๊ฒฝ์ ์น์ธํ ์ ์๋ ๊ถํ์ด ์ค์ง ์์ ์์๊ฒ๋ง ์ฃผ์ด์ง๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ ๋ณ๊ฒฝ์ ์ ์ํ ์๋ ์์ง๋ง, ์ต์ข ๊ฒฐ์ ๊ถ์ ์์ ์๊ฐ ๊ฐ์ต๋๋ค. ๋ฐ๋ฉด, Meta์ ๋๋ถ๋ถ์ ํ๋ก์ ํธ๋ ์ด๋ฌํ ์๊ฒฉํ ์์ ๊ถ ๊ท์น์ ์ ์ฉํ์ง ์์ต๋๋ค(์ผ๋ถ ์์ธ๋ฅผ ์ ์ธํ๊ณ ). ์ด๋ฌํ ๊ฐ๋ฐฉ์ฑ์ ํ ๊ฐ ํ์ ๊ณผ ์ฝ๋ ์ฌ์ฌ์ฉ์ ์ฅ๋ คํ๋ฉฐ, ์ ์ฌํ ๊ธฐ์ ์ ์ค๋ณต ๊ฐ๋ฐํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
Meta์์๋ ์์ง๋์ด๋ค์ด ๋ชจ๋ ธ๋ ํฌ์ ๋ฉ์ธ๋ผ์ธ(mainline)์ ์ง์ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ปค๋ฐํ๋ฉฐ, ์ํํธ์จ์ด ๋ฐฐํฌ๋ ์์ ์ ์ธ ๋ธ๋์น๊ฐ ์๋๋ผ ์ต์ ์ฝ๋๊ฐ ํฌํจ๋ ๋ฉ์ธ๋ผ์ธ์์ ์ปดํ์ผ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, RPC ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๋ฐ์ดํธ๋๋ฉด, ์ด๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ ๋ฆด๋ฆฌ์ฆ๋ ์๋์ผ๋ก ์ต์ ๋ฒ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ๊ป ์ปดํ์ผ๋ฉ๋๋ค.
์ธ๋ถ์ ์ผ๋ก, Meta์ ๊ธฐ์ ๊ฐ๋ฐฉ์ฑ์ ๋ํ ๋ ธ๋ ฅ์ Open Compute Project๋ฅผ ํตํ ์คํ์์ค ํ๋์จ์ด ๋์์ธ๊ณผ, PyTorch, Llama, Presto, RocksDB, Cassandra์ ๊ฐ์ ์คํ์์ค ์ํํธ์จ์ด ํ๋ก์ ํธ๋ฅผ ํตํด ๋ํ๋ฉ๋๋ค. ๋ํ, Meta์ ๋ง์ ์ธํ๋ผ ๊ธฐ์ ๋ค์ ์ฐ๊ตฌ ๋ ผ๋ฌธ์ ํตํด ๊ณต์ ๋์์ผ๋ฉฐ, ์ด ๊ธ์์ ์ฐธ๊ณ ํ ์ ์๋ ์ฌ๋ฌ ์ฌ๋ก๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
Research in production
์ค์ ํ๊ฒฝ์์์ ์ฐ๊ตฌ. Meta์ ํ์ดํผ์ค์ผ์ผ ์ธํ๋ผ๋ ์ง์์ ์ธ ํ์ ์ ์๊ตฌํ์ง๋ง, ๋๋ถ๋ถ์ ํ์ดํผ์ค์ผ์ผ๋ฌ๋ค๊ณผ ๋ฌ๋ฆฌ Meta๋ ์ ๋ด ์์คํ ์ฐ๊ตฌ์๋ฅผ ์ด์ํ์ง ์์ต๋๋ค. ๋์ , Meta์ ๋ชจ๋ ์์คํ ์ฐ๊ตฌ ๋ ผ๋ฌธ์ ์ค์ ์ด์ ์์คํ ์ ๊ฐ๋ฐํ๋ ํ์ ์ํด ์์ฑ๋ฉ๋๋ค. ์ด ํ๋ค์ ๋๊ท๋ชจ ์ด์ ํ๊ฒฝ์์์ ๋์ ์ ์ธ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๋ ๊ณผ์ ์์ ์ต์ฒจ๋จ ๊ธฐ์ ์ ๋ฐ์ ์ํค๋ฉฐ, ์ด๋ฌํ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ํจ๊ณผ์ ์ธ ํด๊ฒฐ์ฑ ์ ์ฐ๊ตฌ ๋ ผ๋ฌธ์ผ๋ก ์ ๋ฆฌํฉ๋๋ค. ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ์ฐ๊ตฌ์์ ๋ค๋ฃจ๋ ๋ฌธ์ ๊ฐ ์ค์ ๋ฌธ์ ์ด๋ฉฐ, ํด๊ฒฐ์ฑ ์ด ๋๊ท๋ชจ ํ๊ฒฝ์์๋ ํจ๊ณผ์ ์ผ๋ก ์๋ํ๋ค๋ ์ ์ ๋ณด์ฅํฉ๋๋ค. ์ด๋ ์ฑ๊ณต์ ์ธ ์์คํ ์ฐ๊ตฌ์ ํต์ฌ ๊ธฐ์ค๊ณผ ์ ๋ถํฉํฉ๋๋ค.
Common infrastructure
์ผ๋ถ ์กฐ์ง๋ค์ ๊ฐ๋ณ ํ์ด ์์ฒด์ ์ผ๋ก ๊ธฐ์ ์คํ์ ๊ฒฐ์ ํ๋๋ก ๊ถํ์ ๋ถ์ฌํฉ๋๋ค. ๊ทธ๋ฌ๋ Meta๋ ํ์คํ์ ๊ธ๋ก๋ฒ ์ต์ ํ๋ฅผ ์ฐ์ ์ํฉ๋๋ค. ํ๋์จ์ด ์ธก๋ฉด์์, ๋ค์ํ ์ ํ์ ์ง์ํ๋ ์๋ฒ๋ค์ ๋ชจ๋ ๊ณต์ ์๋ฒ ํ์์ ํ ๋น๋ฉ๋๋ค. ๋ํ, AI๊ฐ ์๋ ์ผ๋ฐ ์ปดํจํ ์ํฌ๋ก๋์ ๊ฒฝ์ฐ, ๋จ์ผ ์๋ฒ ์ ํ๋ง์ ์ ๊ณตํ๋ฉฐ, ํ๋์ CPU์ ๋์ผํ ์ฉ๋์ DRAM(์ด์ ์๋ 64GB, ํ์ฌ๋ 256GB)์ ํ์ฌํ๊ณ ์์ต๋๋ค. ๋ค์ํ ๊ณ ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ํ๊ธฐ ์ํด ์ฌ๋ฌ ์ข ๋ฅ์ ์๋ฒ๋ฅผ ์ ๊ณตํด์ผ ํ๋ ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋์ ๋ฌ๋ฆฌ, Meta๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋์จ์ด์ ๋ง๊ฒ ์ต์ ํํ ์ ์์ด, ์๋ฒ ์ ํ์ ๋ถํ์ํ ํ์ฐ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
์ํํธ์จ์ด ์ธก๋ฉด์์๋ ํ์คํ๊ฐ ์ ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ณผ๊ฑฐ์๋ Meta์ ๋ค์ํ ์ ํ์ด ํค-๊ฐ ์ ์ฅ์๋ก Cassandra, HBase, ZippyDB๋ฅผ ์ฌ์ฉํ์ง๋ง, ํ์ฌ๋ ๋ชจ๋ ZippyDB๋ก ํตํฉ๋์์ต๋๋ค. ๋ํ, ์ํํธ์จ์ด ๋ฐฐํฌ, ๊ตฌ์ฑ ๊ด๋ฆฌ, ์๋น์ค ๋ฉ์, ์ฌ์ ์ฑ๋ฅ ํ ์คํธ, ์ด์ ์ค ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง, ์ด์ ์ค ๋ถํ ํ ์คํธ์ ๊ฐ์ ๊ณตํต ๊ธฐ๋ฅ๋ค์ ๋ชจ๋ ๋ณดํธ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋๊ตฌ๋ฅผ ํตํด ์ง์๋ฉ๋๋ค.
ํ์คํ ์ธ์๋, ๊ณตํต ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์์ด ํต์ฌ ์์น์ ๋จ์ผ(monolithic) ์๋ฃจ์ ๋ณด๋ค ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌ์ฑ ์์๋ฅผ ์ ํธํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ์์น์ ์ข์ ์๋ Meta์ ๋ถ์ฐ ํ์ผ ์์คํ ์ธ Tectonic์์์ ๊ตฌ์ฑ ์์ ์ฌ์ฌ์ฉ ์ฒด๊ณ์ ๋๋ค. Tectonic์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๋ถ์ฐ ํค-๊ฐ ์ ์ฅ์์ธ ZippyDB๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ํ์ฅ์ฑ์ ํฅ์์ํต๋๋ค. ZippyDB๋ ๋ฐ์ดํฐ ์ค๋๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ๊ณตํต ์ค๋ฉ ํ๋ ์์ํฌ์ธ Shard Manager๋ฅผ ์ฌ์ฉํ๋ฉฐ, Shard Manager๋ ๋ค์ ์ค๋ ๊ฒ์๊ณผ ์์ฒญ ๋ผ์ฐํ ์ ์ํด Meta์ ์๋น์ค ๋ฉ์์ธ ServiceRouter์ ์์กดํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก, ServiceRouter๋ ์ฌ์ดํธ์ ์ง์์ ์ธ ์ด์์ ํ์์ ์ธ ์๋น์ค ๊ฒ์ ๋ฐ ๊ตฌ์ฑ ๋ฐ์ดํฐ๋ฅผ ๊ณ ์ ๋ขฐ์ฑ, ๋ฌด์์กด์ฑ(zero-dependency)์ ๋ฐ์ดํฐ ์ ์ฅ์์ธ Delos์ ์ ์ฅํฉ๋๋ค. ๋ฐ๋ผ์, ๊ตฌ์ฑ ์์ ์ฌ์ฌ์ฉ ์ฒด๊ณ๋ Tectonic โ ZippyDB โ Shard Manager โ ServiceRouter โ Delos๋ก ์ด๋ฃจ์ด์ง๋๋ค. ์ด ๋ชจ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌ์ฑ ์์๋ค์ ๋ค์ํ ๋ค๋ฅธ ์ฉ๋ก์์๋ ํ์ฉ๋ฉ๋๋ค. ๋ฐ๋ฉด, ๋๋ฆฌ ์ฌ์ฉ๋๋ ์คํ์์ค ๋ถ์ฐ ํ์ผ ์์คํ ์ธ HDFS๋ ์ด๋ฌํ ๋ชจ๋ ๊ตฌ์ฑ ์์๋ฅผ ๋ด๋ถ์ ์ผ๋ก ๊ตฌํํ๋ ๋จ์ผ(monolithic) ์์คํ ์ ๋๋ค.
Culture case study: The Threads app
Twitter/X์ ์์ฃผ ๋น๊ต๋๋ Threads ์ฑ์ ๊ฐ๋ฐ ๊ณผ์ ์ ์์ ์ธ๊ธํ Meta์ ๋ฌธํ๋ฅผ ์ ๋ณด์ฌ์ค๋๋ค. โ๋น ๋ฅด๊ฒ ์์ง์ด๊ธฐโ ๋ฌธํ๋ฅผ ๊ฐ์กฐํ๋ฉฐ, ์๊ท๋ชจ ํ์ด ์คํํธ์ ๊ณผ ๊ฐ์ ํ๊ฒฝ์์ ๋จ 5๊ฐ์์ ๊ธฐ์ ๊ฐ๋ฐ์ ํตํด Threads๋ฅผ ์์ฑํ์ต๋๋ค. ๊ฒ๋ค๊ฐ, ๊ฐ๋ฐ์ด ์๋ฃ๋ ํ ์ธํ๋ผ ํ์ ํ๋ก๋์ ๋ฐฐํฌ๋ฅผ ์ค๋นํ ์๊ฐ์ด ๋จ ์ดํ๋ฐ์ ์ฃผ์ด์ง์ง ์์์ต๋๋ค. ๋๋ถ๋ถ์ ๋๊ธฐ์ ์์๋ ์์ญ ๊ฐ์ ์ํธ ์์กด์ ์ธ ํ์ด ์ฐธ์ฌํ๋ ํ๋ก์ ํธ ๊ณํ์ ์์ฑํ๋ ๋ฐ๋ง๋ ์ดํ ์ด์์ด ๊ฑธ๋ฆฌ๋ฉฐ, ์คํ๊น์ง๋ ํจ์ฌ ๋ ์ค๋ ์๊ฐ์ด ์์๋ฉ๋๋ค. ๊ทธ๋ฌ๋ Meta์์๋ ๋ถ์ฐ๋ ์ฌ๋ฌ ์ง์ญ์ ์ฆ์ โ์๋ฃธ(war room)โ์ ๋ง๋ จํ์ฌ ์ธํ๋ผ ํ๊ณผ ์ ํ ํ์ ํ์๋ฆฌ์ ๋ชจ์ผ๊ณ ์ค์๊ฐ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ์ด์ฒ๋ผ ์ด๋ฐํ ์ผ์ ์๋ ๋ถ๊ตฌํ๊ณ , Threads๋ ์ถ์ ํ ๋จ 5์ผ ๋ง์ 1์ต ๋ช ์ ์ฌ์ฉ์๋ฅผ ํ๋ณดํ๋ฉฐ ์ญ์ฌ์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ ์ฑ์ด ๋์์ต๋๋ค.
๊ณตํต ์ธํ๋ผ๋ ํ์ด Threads๋ฅผ ์ ์ํ๊ฒ ๊ตฌํํ๊ณ ์์ ์ ์ผ๋ก ํ์ฅํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํ์ต๋๋ค. Threads๋ Instagram์ Python ๋ฐฑ์๋๋ฅผ ๊ทธ๋๋ก ์ฌ์ฌ์ฉํ์ผ๋ฉฐ, ์์ ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํค-๊ฐ ์ ์ฅ์, ์๋ฒ๋ฆฌ์ค ํ๋ซํผ, ๋จธ์ ๋ฌ๋(ML) ํ์ต ๋ฐ ์ถ๋ก ํ๋ซํผ, ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ฐ์ผ ์ฑ์ ๊ตฌ์ฑ ๊ด๋ฆฌ ํ๋ ์์ํฌ์ ๊ฐ์ Meta์ ๊ณตํต ์ธํ๋ผ ๊ตฌ์ฑ ์์๋ฅผ ํ์ฉํ์ต๋๋ค.
Meta์ ๋ด๋ถ ๊ธฐ์ ๊ฐ๋ฐฉ์ฑ, ์ฆ ๋ชจ๋ ธ๋ ํฌ(monorepo) ๋ฐฉ์์ ํ์ฉํจ์ผ๋ก์จ Threads๋ Instagram์ ์ผ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ ์๋๋ฅผ ๋์ผ ์ ์์์ต๋๋ค. ์ธ๋ถ ๊ธฐ์ ๊ฐ๋ฐฉ์ฑ ์ธก๋ฉด์์, Threads๋ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ์ ์ํธ ์ด์ฉ์ฑ์ ์ํด ์คํ ์์ ๋คํธ์ํฌ ํ๋กํ ์ฝ์ธ ActivityPub๊ณผ์ ํตํฉ์ ๋ชฉํ๋ก ํ๊ณ ์์ต๋๋ค. ๋ํ, ์ฐ๋ฆฌ๋ Threads๋ฅผ ์ ์ํ๊ฒ ๊ฐ๋ฐํ ๊ฒฝํ์ ๊ณต๊ฐ์ ์ผ๋ก ๊ณต์ ํ์ต๋๋ค.
Insight 1: ๋ง์ ๋์ ๊ณผ์ ๊ฐ ์์์๋ ๋ถ๊ตฌํ๊ณ , ๋๊ท๋ชจ ์กฐ์ง์์๋ โ๋น ๋ฅด๊ฒ ์์ง์ด๋โ ๋ฌธํ๋ฅผ ์ ์งํ๋ฉด์, ๊ณตํต ์ธํ๋ผ๋ฅผ ํ์ฉํ๊ณ , ์๊ฒฉํ ์ฝ๋ ์์ ๊ถ ๊ท์น ์์ด ๋ชจ๋ ธ๋ ํฌ๋ฅผ ๊ณต์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค๋ ์ ์ด ์ ์ฆ๋์์ต๋๋ค.
End-to-End User Request Flow
์ด์ Meta์ ์ธํ๋ผ ๊ธฐ์ ์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. Meta์ ์ ํ๋ค์ ๊ณตํต ์๋น์ค ์ธํ๋ผ์ ์ํด ์ง์๋ฉ๋๋ค. ์ด ์ธํ๋ผ์ ์ ์ฒด์ ์ธ ๊ฐ์๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด, ์ฌ์ฉ์ ์์ฒญ์ด ์ฒ์๋ถํฐ ๋๊น์ง ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋๋์ง ์ค๋ช ํ๋ฉฐ, ์ด ๊ณผ์ ์์ ์ฌ์ฉ๋๋ ๋ชจ๋ ๊ตฌ์ฑ ์์๋ฅผ ์์ธํ ๋ค๋ฃน๋๋ค.
Request Routing
์ฌ์ฉ์๊ฐ facebook.com์ ์์ฒญ์ ๋ณด๋ผ ๋, Meta์ DNS ์๋ฒ๋ ํด๋น ์์ฒญ์ Meta๊ฐ ์ด์ํ๋ ์๊ท๋ชจ ์ฃ์ง ๋ฐ์ดํฐ์ผํฐ(POP, Point of Presence)๋ก ๋งคํ๋ IP ์ฃผ์๋ฅผ ๋์ ์ผ๋ก ๋ฐํํฉ๋๋ค. ์ด๋ ๊ทธ๋ฆผ 1์ ๋์ ์์ต๋๋ค. ์ด ๋์ DNS ๋งคํ์ ์ ํ๋ PoP๊ฐ ์ฌ์ฉ์์ ๊ฐ๊น์ด ์์น์ ์๋๋ก ๋ณด์ฅํ๋ฉฐ, ๋์์ ์ฌ๋ฌ PoP ๊ฐ ๋ถํ๋ฅผ ๊ท ํ ์๊ฒ ๋ถ์ฐ์ํต๋๋ค. ์ฌ์ฉ์์ TCP ์ฐ๊ฒฐ์ PoP์์ ์ข ๋ฃ๋๋ฉฐ, PoP๋ Meta์ ๋ฐ์ดํฐ์ผํฐ์ ๋ณ๋์ ์ฅ๊ธฐ ์ง์์ ์ธ TCP ์ฐ๊ฒฐ์ ์ ์งํฉ๋๋ค. ์ด๋ฌํ ๋ถํ TCP(split-TCP) ์ค์ ์ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ํนํ, PoP์ ๋ฐ์ดํฐ์ผํฐ ๊ฐ์ ๋ฏธ๋ฆฌ ์ค์ ๋ ์ฐ๊ฒฐ์ ์ฌ์ฌ์ฉํจ์ผ๋ก์จ TCP ์ฐ๊ฒฐ ์ค์ ์ง์ฐ ์๊ฐ์ ์ค์ผ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก PoP๋ ์๋ฐฑ ๋์ ์๋ฒ๋ฅผ ๋ณด์ ํ๊ณ ์์ผ๋ฉฐ, ์ผ๋ถ PoP๋ ์์ฒ ๋์ ์๋ฒ๋ฅผ ๊ฐ์ถ๊ณ ์์ ์๋ ์์ต๋๋ค. ์ ์ธ๊ณ์ ์๋ฐฑ ๊ฐ์ PoP๊ฐ ๋ฐฐ์น๋์ด ์์ด, ๋๋ถ๋ถ์ ์ฌ์ฉ์๊ฐ ๊ฐ๊น์ด PoP๋ฅผ ํตํด ์๋น์ค๋ฐ์ ์ ์๋๋ก ํ์ฌ ๋คํธ์ํฌ ์ง์ฐ ์๊ฐ์ ์ต์ํํฉ๋๋ค.
Static-Content Caching
์ฌ์ฉ์๊ฐ ์ด๋ฏธ์ง๋ ๋์์๊ณผ ๊ฐ์ ์ ์ ์ฝํ ์ธ ๋ฅผ ์์ฒญํ๋ฉด, ํด๋น ์ฝํ ์ธ ๊ฐ ์ด๋ฏธ PoP์ ์บ์๋์ด ์๋ ๊ฒฝ์ฐ PoP์์ ์ง์ ์ ๊ณต๋ ์ ์์ต๋๋ค. ๋ํ, ์ ์ ์ฝํ ์ธ ๋ ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN)์์ ์บ์๋ ์๋ ์์ผ๋ฉฐ, ์ด๋ ๊ทธ๋ฆผ 1์ ๋ํ๋ ์์ต๋๋ค. Meta ์ ํ์ ํธ๋ํฝ์ด ํน์ ์ธํฐ๋ท ์๋น์ค ์ ๊ณต์ ์ฒด(ISP) ๋คํธ์ํฌ์์ ๋๋์ผ๋ก ๋ฐ์ํ๋ ๊ฒฝ์ฐ, Meta๋ ํด๋น ISP์ ์ํธ ์ด์ต์ด ๋๋ ํํธ๋์ญ์ ๊ตฌ์ถํ๋ ค ํฉ๋๋ค. ์ด๋ฅผ ์ํด, ISP ๋คํธ์ํฌ ๋ด์ Meta ๋คํธ์ํฌ ์ฅ๋น๋ฅผ ๋ฐฐ์นํ์ฌ ์ ์ ์ฝํ ์ธ ๋ฅผ ์บ์ฑํ๋๋ก ํ๊ณ , ์ด๋ฅผ ํตํด CDN ์ฌ์ดํธ๋ฅผ ํ์ฑํฉ๋๋ค. ์ผ๋ฐ์ ์ธ CDN ์ฌ์ดํธ๋ ์์ญ ๋์ ์๋ฒ๋ฅผ ๋ณด์ ํ๊ณ ์์ผ๋ฉฐ, ์ผ๋ถ ์ฌ์ดํธ๋ 100๋ ์ด์์ ์๋ฒ๋ฅผ ์ด์ํ๊ธฐ๋ ํฉ๋๋ค. ์ ์ธ๊ณ ์์ฒ ๊ฐ์ CDN ์ฌ์ดํธ๊ฐ Meta์ CDN์ ๊ตฌ์ฑํ์ฌ ์ ์ ์ฝํ ์ธ ๋ฅผ ๋ฐฐํฌํ๋ ์ญํ ์ ํฉ๋๋ค.
Meta์ ์ ํ๋ค์ URL ์ฌ์์ฑ(URL rewrite) ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์์ฒญ์ ๊ฐ๊น์ด CDN ์ฌ์ดํธ๋ก ๋ฆฌ๋๋ ์ ํฉ๋๋ค. Meta์ ์ ํ์ด ์ฌ์ฉ์๊ฐ ์ ์ ์ฝํ ์ธ ์ ์ ๊ทผํ ์ ์๋๋ก URL์ ์ ๊ณตํ ๋, URL์ ์ฌ์์ฑํ์ฌ ์๋ฅผ ๋ค์ด facebook.com/image.jpg๋ฅผ CDN109.meta.com/image.jpg๋ก ๋ณ๊ฒฝํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ํด๋น ์ด๋ฏธ์ง๋ฅผ ์์ฒญํ์ ๋, CDN109์ ์ด๋ฏธ์ง๊ฐ ์บ์๋์ด ์์ง ์๋ค๋ฉด, CDN109๋ ์์ฒญ์ ๊ฐ๊น์ด PoP๋ก ์ ๋ฌํฉ๋๋ค. PoP๋ ์ดํ ์์ฒญ์ ๋ฐ์ดํฐ์ผํฐ ์ง์ญ์ ์๋ ๋ก๋ ๋ฐธ๋ฐ์๋ก ์ ๋ฌํ๋ฉฐ, ๋ก๋ ๋ฐธ๋ฐ์๋ ์คํ ๋ฆฌ์ง ์์คํ ์์ ํด๋น ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ๋ฐํ ๊ฒฝ๋ก์์๋ PoP์ CDN ์ฌ์ดํธ๊ฐ ๋ชจ๋ ํด๋น ์ด๋ฏธ์ง๋ฅผ ์บ์ฑํ์ฌ ํฅํ ์ฌ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
Dynamic-Content Request Routing
์ฌ์ฉ์๊ฐ ๋ด์คํผ๋์ ๊ฐ์ ๋์ ์ฝํ ์ธ ๋ฅผ ์์ฒญํ๋ฉด, PoP๋ ์ด๋ฅผ ๋ฐ์ดํฐ์ผํฐ ์ง์ญ์ผ๋ก ์ ๋ฌํฉ๋๋ค. ๋์ ๋ฐ์ดํฐ์ผํฐ ์ง์ญ์ ์ ํ์ ํธ๋ํฝ ์์ง๋์ด๋ง ๋๊ตฌ์ ์ํด ๊ฒฐ์ ๋๋ฉฐ, ์ด ๋๊ตฌ๋ ๋ฐ์ดํฐ์ผํฐ์ ์ฉ๋๊ณผ ๋คํธ์ํฌ ์ง์ฐ ์๊ฐ๊ณผ ๊ฐ์ ์์๋ฅผ ๊ณ ๋ คํ์ฌ PoP์์ ๋ฐ์ดํฐ์ผํฐ๋ก์ ๊ธ๋ก๋ฒ ํธ๋ํฝ์ ์ต์ ๋ถ๋ฐฐํ๋๋ก ์ฃผ๊ธฐ์ ์ผ๋ก ๊ณ์ฐํฉ๋๋ค.
PoP์์ ๋ฐ์ดํฐ์ผํฐ๋ก ๊ฐ๋ ํธ๋ํฝ์ Meta์ ์ฌ์ค ๊ด์ญ ๋คํธ์ํฌ(WAN)๋ฅผ ํตํด ์ด๋ํ๋ฉฐ, ์ด WAN์ ์ ์ธ๊ณ์ Meta PoP์ ๋ฐ์ดํฐ์ผํฐ๋ฅผ ์ฐ๊ฒฐํ๋ ์๋ง ๋ง์ผ ๊ธธ์ด์ ๊ด์ฌ์ ๋คํธ์ํฌ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. Meta์ ๋ฐ์ดํฐ์ผํฐ์ PoP ๊ฐ ๋ด๋ถ ๋คํธ์ํฌ ํธ๋ํฝ์ ์ฌ์ฉ์์ PoP ๊ฐ์ ์ธ๋ถ ํธ๋ํฝ๋ณด๋ค ๋ช ๋ฐฐ๋ ๋ ๋ง์ผ๋ฉฐ, ์ด๋ ์ฃผ๋ก ๋ฐ์ดํฐ์ผํฐ ๊ฐ ๋ฐ์ดํฐ ๋ณต์ ๋ฐ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ์ ์ํธ์์ฉ ๋๋ฌธ์ ๋๋ค. ์ฌ์ค WAN์ ๋ด๋ถ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋์ ๋์ญํญ์ ์ ๊ณตํฉ๋๋ค.
Insight 2: Meta์ ๊ธ๋ก๋ฒ ์ธํ๋ผ๋ CDN ์ฌ์ดํธ, ์ฃ์ง ๋ฐ์ดํฐ์ผํฐ, ๊ทธ๋ฆฌ๊ณ ๋ฉ์ธ ๋ฐ์ดํฐ์ผํฐ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๋ฐ์ดํฐ์ผํฐ ๊ฐ ๋ด๋ถ ํธ๋ํฝ์ ์์ด ๋งค์ฐ ํฌ๊ธฐ ๋๋ฌธ์, Meta๋ ๊ณต์ฉ ์ธํฐ๋ท์ ์์กดํ๋ ๋์ ๋ฐ์ดํฐ์ผํฐ๋ฅผ ์ฐ๊ฒฐํ๋ ์ฌ์ค WAN์ ๊ตฌ์ถํ์ต๋๋ค.
Infrastructure topology
์๋ ํ๋ ์์ ์ธ๊ธํ ์ธํ๋ผ ๊ตฌ์ฑ ์์๋ค์ ์์ฝํ ๊ฒ์ ๋๋ค. ์ ์ธ๊ณ์ ์ผ๋ก ์์ญ ๊ฐ์ ๋ฐ์ดํฐ์ผํฐ ์ง์ญ, ์๋ฐฑ ๊ฐ์ ์ฃ์ง ๋ฐ์ดํฐ์ผํฐ(PoP), ๊ทธ๋ฆฌ๊ณ ์์ฒ ๊ฐ์ CDN ์ฌ์ดํธ๊ฐ ์กด์ฌํฉ๋๋ค. ๊ฐ ๋ฐ์ดํฐ์ผํฐ ์ง์ญ์๋ ๋ฐ๊ฒฝ ๋ช ๋ง์ผ ๋ด์ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ์ผํฐ๊ฐ ์์นํด ์์ต๋๋ค. ๊ฐ ๋ฐ์ดํฐ์ผํฐ๋ ์ ๋ ฅ ๋ถ๋ฐฐ๋ฅผ ์ํด ์ต๋ 12๊ฐ์ ๋ฉ์ธ ์ค์์น๋ณด๋(MSB)๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ด๋ค์ ์ฃผ์ ํ์ ๋ฐ์ดํฐ์ผํฐ ์ฅ์ ๋๋ฉ์ธ ์ญํ ๋ ํฉ๋๋ค. MSB๊ฐ ๊ณ ์ฅ ๋๋ฉด 1๋ง~2๋ง ๋์ ์๋ฒ๊ฐ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํด์ง ์ ์์ต๋๋ค.
Edge Network
PoP๋ ์ธํฐ๋ท์์ ์ฌ๋ฌ ๊ฐ์ ์์จ ์์คํ (Autonomous Systems, AS)๊ณผ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ์ ๋คํธ์ํฌ์ ๋๋ฌํ ์ ์๋ ์ฌ๋ฌ ๊ฐ์ ๊ฒฝ๋ก๋ฅผ ๊ฐ์ง๋๋ค. PoP์ ์ฌ์ฉ์ ๊ฐ ๊ฒฝ๋ก๋ฅผ ์ ํํ ๋, ๊ธฐ๋ณธ์ ์ผ๋ก BGP(Border Gateway Protocol)๋ ๋คํธ์ํฌ ์ฉ๋๊ณผ ์ฑ๋ฅ์ ๊ณ ๋ คํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ PoP ๋คํธ์ํฌ๋ ์ด๋ฌํ ์์๋ค์ ๊ณ ๋ คํ์ฌ ์ต์ ์ ๊ฒฝ๋ก๋ฅผ ๋คํธ์ํฌ ํ๋ฆฌํฝ์ค(prefix)์ ๊ด๊ณ ํฉ๋๋ค.
Datacenter Network
๋ฐ์ดํฐ์ผํฐ ๋ด์ ์๋ฒ๋ค์ ๋ฐ์ดํฐ์ผํฐ ํจ๋ธ๋ฆญ(datacenter fabric)์ผ๋ก ์ํธ ์ฐ๊ฒฐ๋๋ฉฐ, ๋คํธ์ํฌ ์ค์์น๋ 3๊ณ์ธต Clos ํ ํด๋ก์ง๋ฅผ ํ์ฑํฉ๋๋ค. ์ด ๊ตฌ์กฐ๋ ์ต์์ ๋ ๋ฒจ์ ๋ ๋ง์ ์ค์์น๋ฅผ ์ถ๊ฐํจ์ผ๋ก์จ ์ ์ง์ ์ผ๋ก ํ์ฅํ ์ ์์ต๋๋ค. ์ถฉ๋ถํ ์์ ์ต์์ ์ค์์น๋ฅผ ๊ฐ์ถ ๊ฒฝ์ฐ, ์ด ํจ๋ธ๋ฆญ ๊ตฌ์กฐ๋ ๋ธ๋กํน ์๋(non-blocking) ๋ฐ ์ด๊ณผ ๊ฐ์ (over-subscription) ์๋ ๋คํธ์ํฌ๋ฅผ ์ ๊ณตํ์ฌ, ๋ชจ๋ ์๋ฒ ๊ฐ์ ํต์ ์ด ์ต๋ NIC ๋์ญํญ์์ ์ํํ๊ฒ ์ด๋ฃจ์ด์ง ์ ์๋๋ก ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ์ผํฐ ๋ด์์ ๋คํธ์ํฌ ์ด๊ณผ ๊ฐ์ ์ ์ ๊ฑฐํ๋ ๋ฐฉํฅ์ผ๋ก ๋์๊ฐ๊ณ ์์ต๋๋ค.
Regional Network
ํจ๋ธ๋ฆญ ์ ๊ทธ๋ฆฌ๊ฒ์ดํฐ(fabric aggregator)๋ ์ง์ญ ๋ด ์ฌ๋ฌ ๋ฐ์ดํฐ์ผํฐ๋ฅผ ์ฐ๊ฒฐํ๋ฉฐ, ์ด๋ฅผ Meta์ ์ฌ์ค WAN๊ณผ๋ ์ฐ๊ฒฐํฉ๋๋ค. ํจ๋ธ๋ฆญ ์ ๊ทธ๋ฆฌ๊ฒ์ดํฐ๋ โFat Treeโ์ ์ ์ฌํ ํ ํด๋ก์ง๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ ์ง์ ์ผ๋ก ๋ ๋ง์ ์ค์์น๋ฅผ ์ถ๊ฐํ์ฌ ๋์ญํญ์ ํ์ฅํ ์ ์๋๋ก ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ง์ญ ๋ด ๋ฐ์ดํฐ์ผํฐ ๊ฐ ํต์ ์ด ๋ณ๋ชฉ ํ์์ ์ผ์ผํค์ง ์๋๋ก, ์ง์ญ ๋คํธ์ํฌ์์ ๋คํธ์ํฌ ์ด๊ณผ ๊ฐ์ ์ ๋ํญ ์ค์ด๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ณ ์์ต๋๋ค. ์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ ํตํด, ๋จธ์ ๋ฌ๋(ML) ํ์ต์ ์ ์ธํ ๋๋ถ๋ถ์ ์๋น์ค๋ ์ฑ๋ฅ ์ ํ๋ฅผ ๊ฑฑ์ ํ์ง ์๊ณ ์ง์ญ ๋ด ์ฌ๋ฌ ๋ฐ์ดํฐ์ผํฐ์ ๋ถ์ฐ๋ ์ ์์ต๋๋ค.
Request Processing
์ฌ์ฉ์์ ์์ฒญ์ด ๋ฐ์ดํฐ์ผํฐ ์ง์ญ์ ๋์ฐฉํ๋ฉด, ๊ทธ๋ฆผ 2์ ๋ํ๋ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ก๋ ๋ฐธ๋ฐ์๋ ์ฌ์ฉ์ ์์ฒญ์ ์๋ง ๋์ ์๋ฒ์ ๋ถ์ฐํ๋ฉฐ, ์ด ์๋ฒ๋ค์ โํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค ํจ์(frontend serverless functions)โ๋ฅผ ์คํํฉ๋๋ค. ์ฌ์ฉ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด, ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค ํจ์๋ ์ฌ๋ฌ ๋ฐฑ์๋ ์๋น์ค๋ฅผ ํธ์ถํ ์ ์์ผ๋ฉฐ, ์ผ๋ถ ๋ฐฑ์๋ ์๋น์ค๋ ์ถ๊ฐ์ ์ผ๋ก โML ์ถ๋ก (ML inference)โ์ ์คํํ์ฌ ๊ด๊ณ ๋ ๋ด์คํผ๋ ์ฝํ ์ธ ์ถ์ฒ์ ๊ฐ์ ธ์ฌ ์๋ ์์ต๋๋ค.
ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค ํจ์๋ ์คํ ๋์ค โ์ด๋ฒคํธ ํ(event queue)โ์ ์ด๋ฒคํธ๋ฅผ ์ถ๊ฐํ ์ ์์ผ๋ฉฐ, ์ด๋ โ์ด๋ฒคํธ ๊ธฐ๋ฐ ์๋ฒ๋ฆฌ์ค ํจ์(event-driven serverless functions)โ๊ฐ ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ์ฌ์ดํธ์์ ํน์ ์์ ์ ์ํํ ํ ํ์ธ ์ด๋ฉ์ผ์ ๋ณด๋ด๋ ๊ฒ์ด ํ๋์ ์ด๋ฒคํธ๊ฐ ๋ ์ ์์ต๋๋ค. ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค ํจ์๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ฏ๋ก ์๊ฒฉํ ์ง์ฐ ์๊ฐ ์๋น์ค ์์ค ๋ชฉํ(SLO)๋ฅผ ๋ฐ๋ฆ ๋๋ค. ๋ฐ๋ฉด, ์ด๋ฒคํธ ๊ธฐ๋ฐ ์๋ฒ๋ฆฌ์ค ํจ์๋ ์ฌ์ฉ์ ์๋ต ์๊ฐ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋น๋๊ธฐ์ ์ผ๋ก ์คํ๋๋ฉฐ, ์ง์ฐ ์๊ฐ๋ณด๋ค๋ ์ฒ๋ฆฌ๋๊ณผ ํ๋์จ์ด ํ์ฉ๋๋ฅผ ์ต์ ํํ๋ ๋ฐ ์ด์ ์ ๋ง์ถฅ๋๋ค. ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค ํจ์๋ฅผ ์คํํ๋ ์๋ฒ์ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์๋ฒ๋ฆฌ์ค ํจ์๋ฅผ ์คํํ๋ ์๋ฒ์ ๋น์จ์ ๋๋ต 5:1์ ๋๋ค.
Offline Processing
๊ทธ๋ฆผ 2์ ์ค๋ฅธ์ชฝ์ ์๋ ๊ตฌ์ฑ ์์๋ค์ ๋ค์ํ ์คํ๋ผ์ธ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ฉฐ, ์ด๋ ์ผ์ชฝ์ ์จ๋ผ์ธ ์ฒ๋ฆฌ๋ฅผ ๋ณด์กฐํ๋ ์ญํ ์ ํฉ๋๋ค. ์จ๋ผ์ธ ์ฒ๋ฆฌ์ ์คํ๋ผ์ธ ์ฒ๋ฆฌ๋ฅผ ๋ถ๋ฆฌํ๋ฉด, ๊ฐ๊ฐ์ ์์ ๋ถํ ํน์ฑ์ ๋ฐ๋ผ ๋ ๋ฆฝ์ ์ธ ์ต์ ํ๊ฐ ๊ฐ๋ฅํด์ง๋๋ค. ์ฌ์ฉ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋์, ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค ํจ์์ ๋ฐฑ์๋ ์๋น์ค๋ ๊ด๊ณ ํด๋ฆญ๋ฅ (ad-click-through)์ด๋ ๋์์ ์์ฒญ ํต๊ณ(video-watch metrics)์ ๊ฐ์ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ โ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค(data warehouse)โ์ ์ ์ฅํฉ๋๋ค. ์ด ๋ฐ์ดํฐ๋ ๋ค์ํ ์คํ๋ผ์ธ ์ฒ๋ฆฌ ๊ณผ์ ์์ ํ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, โML ํ์ต(ML training)โ์ ์ด ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ์ฌ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ์ ๋ฐ์ดํธํ๊ณ , โ์คํธ๋ฆผ ์ฒ๋ฆฌ(stream processing)โ๋ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด ์ฌ์ดํธ์์ ๊ฐ์ฅ ๋ง์ด ๋ ผ์๋๋ ์ฃผ์ ๋ฅผ ์ ๋ฐ์ดํธํ ํ, ์ด๋ฅผ โ๋ฐ์ดํฐ๋ฒ ์ด์ค(databases)โ ๋ฐ โ์บ์(caches)โ์ ์ ์ฅํฉ๋๋ค. ์ด๋ฌํ ๋ฐ์ดํฐ๋ ์ดํ ์จ๋ผ์ธ ์ฌ์ฉ์ ์์ฒญ์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ๋ํ, Spark์ Presto๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ โ๋ฐฐ์น ๋ถ์(batch analytics)โ์ ์ฌ์ดํธ์์ ๋ฐ์ํ๋ ์๋ก์ด ํ๋์ ๋ฐ๋ผ ์น๊ตฌ ์ถ์ฒ์ ์ ๋ฐ์ดํธํ๋ ๋ฑ์ ์์ ์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ํํ ์ ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก, ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์์ ์ด๋ฃจ์ด์ง๋ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์๋ฒ๋ฆฌ์ค ํจ์๋ฅผ ์คํํ๋ ์ฃผ์ ์ด๋ฒคํธ ์์ค๋ก ํ์ฉ๋ฉ๋๋ค.
Insight 3: ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค๋ฅผ ์ค๊ฐ ๊ณ์ธต์ผ๋ก ํ์ฉํ์ฌ ์จ๋ผ์ธ ์ฒ๋ฆฌ์ ์คํ๋ผ์ธ ์ฒ๋ฆฌ๋ฅผ ๋ถ๋ฆฌํ๋ฉด, ์ํคํ ์ฒ๊ฐ ๋จ์ํด์ง๊ณ ๊ฐ๊ฐ์ ์ฒ๋ฆฌ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ต์ ํํ ์ ์์ต๋๋ค.
Boosting Developer Productivity
๊ณต์ ์ธํ๋ผ์ ์ฃผ์ ๋ชฉ์ ์ค ํ๋๋ ๊ฐ๋ฐ์์ ์์ฐ์ฑ์ ํฅ์์ํค๋ ๊ฒ์ ๋๋ค. ์ง์์ ์ธ ์ํํธ์จ์ด ๋ฐฐํฌ์ ์๋ฒ๋ฆฌ์ค ํจ์๊ฐ ๊ฐ๋ฐ์์ ์์ฐ์ฑ์ ๋์ด๋ ๋ฐ ๋์์ด ๋๋ค๋ ๊ฒ์ ๋๋ฆฌ ์๋ ค์ ธ ์์ง๋ง, Meta๋ ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ๊ทนํ๊น์ง ๋ฐ์ ์์ผฐ์ต๋๋ค.
Continuous Deployment
Meta์ โ๋น ๋ฅด๊ฒ ์์ง์ด๊ธฐ(move-fast)โ ๋ฌธํ์ ๋ง์ถฐ, ์ฐ๋ฆฌ๋ ์ฝ๋์ ๊ตฌ์ฑ(configuration)์ ์ง์์ ๋ฐฐํฌ๋ฅผ ๊ทน๋๋ก ๋น ๋ฅด๊ณ ๋๊ท๋ชจ๋ก ์ด์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๋ฒ๊ทธ ์์ ์ฌํญ์ ์ ์ํ๊ฒ ๋ฐฐํฌํ๊ณ , ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ์ ๋ฐ์ ๋น ๋ฅด๊ฒ ๋ฐ๋ณต(iterate)ํ ์ ์์ต๋๋ค. ๊ตฌ์ฑ ๋ณ๊ฒฝ์ ๊ฒฝ์ฐ, Meta์ ๊ตฌ์ฑ ๊ด๋ฆฌ ๋๊ตฌ(configuration-management tool)๋ ๋งค์ผ 10๋ง ๊ฐ ์ด์์ ์ค์๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ ํ๋ก๋์ ํ๊ฒฝ์ ๋ฐฐํฌํ๋ฉฐ, ์ด๋ ์ฝ 10,000๊ฐ์ ์๋น์ค์ ์๋ฐฑ๋ง ๋์ ์๋ฒ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ก๋ ๋ฐธ๋ฐ์ฑ, ๊ธฐ๋ฅ ๋กค์์(feature rollout), A/B ํ ์คํธ, ๊ณผ๋ถํ ๋ณดํธ(overload protection) ๋ฑ์ ๋ค์ํ ์์ ์ ์ง์ํฉ๋๋ค. Meta์์๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฑฐ์ ๋ชจ๋ ์์ง๋์ด๊ฐ ํ๋ก๋์ ํ๊ฒฝ์์ ์ค์๊ฐ์ผ๋ก ๊ตฌ์ฑ ๋ณ๊ฒฝ์ ์ํํฉ๋๋ค. Meta๋ โ์ฝ๋๋ก์์ ๊ตฌ์ฑ(Configuration-as-Code)โ ํจ๋ฌ๋ค์์ ๋ฐ๋ฅด๋ฉฐ, ์๋ ๊ตฌ์ฑ ๋ณ๊ฒฝ ์ฌํญ์ ์ฝ๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ปค๋ฐ๋๊ธฐ ์ ์ ๋๋ฃ ์ฝ๋ ๋ฆฌ๋ทฐ(peer code review)๋ฅผ ๊ฑฐ์นฉ๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ด ์ปค๋ฐ๋๋ฉด ์ฆ์ ์ง์์ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ(continuous deployment pipeline)์ ๋ค์ด๊ฐ๋๋ค. ๋ช ์ด ์์ ์ ๋ฐ์ดํธ๋ ๊ตฌ์ฑ์ ์๋ฐฑ๋ง ๊ฐ์ ๊ตฌ๋ ๋ Linux ํ๋ก์ธ์ค๋ก ํธ์๋ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ์ ์ฝ(upcall) ์๋ฆผ์ด ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค. ์ด๋ฌํ ํ๋ก์ธ์ค๋ ์ฌ์์ ์์ด ์ฆ์ ๋ฐํ์ ๋์์ ์กฐ์ ํ ์ ์์ต๋๋ค. ์๋ ๋ณ๊ฒฝ๋ฟ๋ง ์๋๋ผ, ๋ก๋ ๋ฐธ๋ฐ์ฑ๊ณผ ๊ฐ์ ์์ ์ ์ํด ์๋ํ ๋๊ตฌ๋ ๊ตฌ์ฑ ๋ณ๊ฒฝ์ ์ํํฉ๋๋ค. ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฒฝ์ฐ, Meta์ ๋ฐฐํฌ ๋๊ตฌ๋ 30,000๊ฐ ์ด์์ ํ์ดํ๋ผ์ธ์ ๊ด๋ฆฌํ๋ฉฐ ์ํํธ์จ์ด ์ ๊ทธ๋ ์ด๋๋ฅผ ๋ฐฐํฌํฉ๋๋ค. Meta์์ 97%์ ์๋น์ค๋ ์๋ ๊ฐ์ ์์ด ์์ ์๋ํ๋ ์ํํธ์จ์ด ๋ฐฐํฌ ๋ฐฉ์์ ์ฑํํ๊ณ ์์ต๋๋ค. ์ด ์ค 55%๋ ์ง์์ ๋ฐฐํฌ(Continuous Deployment)๋ฅผ ํ์ฉํ์ฌ ์๋ํ๋ ํ ์คํธ๋ฅผ ํต๊ณผํ ๋ชจ๋ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ฆ์ ํ๋ก๋์ ์ ๋ฐฐํฌํ๋ฉฐ, ๋๋จธ์ง 42%๋ ์ฃผ๋ก ๋งค์ผ ๋๋ ๋งค์ฃผ ๊ณ ์ ๋ ์ผ์ ์ ๋ฐ๋ผ ์๋ ๋ฐฐํฌ๋ฉ๋๋ค. ๊ทธ๋ฆผ 2์ ๋์ค๋ ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค ํจ์๋ฅผ ์๋ก ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ์ด ํจ์๋ค์ 50๋ง ๋ ์ด์์ ์๋ฒ์์ ์คํ๋๋ฉฐ, 10,000๋ช ์ด์์ ์ ํ ๊ฐ๋ฐ์๊ฐ ๋งค์ผ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๊ณ , ํ๋ฃจ์๋ ์์ฒ ๊ฑด์ ์ฝ๋ ์ปค๋ฐ์ด ์ด๋ฃจ์ด์ง๋๋ค. ์ด์ฒ๋ผ ๋งค์ฐ ์ญ๋์ ์ธ ํ๊ฒฝ์์๋, ๋ชจ๋ ์๋ฒ๋ฆฌ์ค ํจ์์ ์๋ก์ด ๋ฒ์ ์ 3์๊ฐ๋ง๋ค ํ๋ก๋์ ์ ๋ฐฐํฌ๋ฉ๋๋ค. Meta์ ๋คํธ์ํฌ ์ํํธ์จ์ด๋ ์ผ๋ฐ์ ์ธ ์๋น์ค์ฒ๋ผ ์ค๊ณ๋์์ผ๋ฉฐ, ๋น๋ฒํ ์ ๋ฐ์ดํธ๋ฅผ ์ํด ์ต์ ํ๋์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Meta์ ์ฌ์ค WAN์ ๋คํธ์ํฌ ํ ํด๋ก์ง๋ฅผ ์ฌ๋ฌ ๊ฐ์ ๋ณ๋ ฌ ํ๋ฉด(plane)์ผ๋ก ๋๋๋ฉฐ, ๊ฐ ํ๋ฉด์ ์ผ์ ๋ถ๋ถ์ ํธ๋ํฝ์ ๋ด๋นํ๊ณ ์์ฒด ์ปจํธ๋กค๋ฌ๋ฅผ ๊ฐ์ถ๊ณ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ปจํธ๋กค๋ฌ ์ํํธ์จ์ด๋ฅผ ์์ฃผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ํน์ ํ๋ฉด์ ํธ๋ํฝ์ ์ฐํ์์ผ ํด๋น ํ๋ฉด์์๋ง ์๋ก์ด ์ ์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ฐฐํฌํ๊ณ ์คํํ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ํ๋ฉด์๋ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, Meta์ ๋คํธ์ํฌ ์ค์์น ์ํํธ์จ์ด๋ ์ผ๋ฐ์ ์ธ ์๋น์ค์ฒ๋ผ ์์ฃผ ์ ๋ฐ์ดํธ๋ฉ๋๋ค. ๋คํธ์ํฌ ์ค์์น์ ASIC์์ ์ ๊ณตํ๋ โ์ ๋ถํธ(warm boot)โ ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด, ์ค์์น ์ํํธ์จ์ด๊ฐ ์ ๋ฐ์ดํธ๋๋ ๋์์๋ ๋ฐ์ดํฐ ํ๋ ์ธ์ ํธ๋ํฝ์ ๊ณ์ ์ ๋ฌํ ์ ์์ต๋๋ค. ๋น๋ฒํ ์ฝ๋ ๋ฐ ๊ตฌ์ฑ ์ ๋ฐ์ดํธ๋ ์ ์์ผ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํ์ง๋ง, ์ฌ์ดํธ ์ฅ์ ๋ฐ์ ์ํ๋ ์ฆ๊ฐ์ํต๋๋ค. ์ด๋ฌํ ์ํ์ ํด๊ฒฐํ๊ธฐ ์ํด, Meta๋ ํ ์คํธ, ๋จ๊ณ์ ๋กค์์(staged rollouts), ๊ทธ๋ฆฌ๊ณ ์ ๋ฐ์ดํธ ๊ณผ์ ์์์ ์ํ ์ ๊ฒ(health checks)์ ๋ง์ ํฌ์๋ฅผ ํ๊ณ ์์ต๋๋ค. ๊ณผ๊ฑฐ์ Meta๋ ์ฝ๋ ๋ฐฐํฌ ์๋ํ๋ฅผ ๊ฐํํ๋ ํ์ฌ ์ฐจ์์ ์บ ํ์ธ์ ์งํํ์ผ๋ฉฐ, ์ํ ์ ๊ฒ(health checks)์ผ๋ก ๋ณดํธ๋๋ ์์ ์๋ํ ์ฝ๋ ๋ฐฐํฌ์ ์ฑํ๋ฅ ์ 12%์์ 97%๋ก ๋์ด์ฌ๋ ธ์ต๋๋ค. ๋น์ทํ๊ฒ, ๋ชจ๋ ๊ตฌ์ฑ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ํ๋ ์นด๋๋ฆฌ์ ํ ์คํธ(canary tests)๋ฅผ ๊ฑฐ์น๋๋ก ํ๋ ์๋ก์ด ์ ์ฑ ์ ๋์ ํ์ฌ ๊ตฌ์ฑ ์์ ์ฑ์ ๋ณด์ฅํ์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก, ์ง์์ ๋ฐฐํฌ(Continuous Deployment)์ ๋ํ ์ด๋ฌํ ํฌ์๋ ๊ฐ๋ฐ์์ ์์ฐ์ฑ์ ํฌ๊ฒ ํฅ์์ํค๋ฏ๋ก ์ถฉ๋ถํ ๊ฐ์น ์๋ค๊ณ ํ๋จ๋ฉ๋๋ค.
Insight 4 1๋ง ๊ฐ ์ด์์ ์๋น์ค๋ฅผ ์ด์ํ๋ ๋๊ท๋ชจ ์กฐ์ง์์๋, ์ง์์ ๋ฐฐํฌ(Continuous Deployment)๋ฅผ ๊ทน๋จ์ ์ธ ๊ท๋ชจ์ ์๋๋ก ์ ์ฉํ๋ ๊ฒ์ด ์ถฉ๋ถํ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด ์ ์ฆ๋์์ต๋๋ค.
Serverless Functions
์๋ฒ๋ฆฌ์ค ํจ์(Function-as-a-Service, FaaS)์ ๊ด๋ฒ์ํ ์ฌ์ฉ์ ๊ฐ๋ฐ์ ์์ฐ์ฑ์ ํฅ์์ํค๋ ๋ ๋ค๋ฅธ ํต์ฌ ์์์ ๋๋ค. ์ ํต์ ์ธ ๋ฐฑ์๋ ์๋น์ค๋ ์์์ ์ธ ๋ณต์ก์ฑ์ ๊ฐ์ง ์ ์๋ ๋ฐ๋ฉด, FaaS๋ ์ํ๋ฅผ ์ ์งํ์ง ์์ผ๋ฉฐ ๋จ์ํ ํจ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค. ๊ฐ FaaS ํธ์ถ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌ๋๋ฉฐ, ์ธ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ์ํ๋ฅผ ์ ์ธํ๋ฉด ๋ค๋ฅธ ๋์ ์คํ ์ค์ธ ํธ์ถ์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. FaaS๋ ์ํ๋ฅผ ์ ์งํ์ง ์๊ธฐ ๋๋ฌธ์, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ์ ์ฐ์ํ ์ฑ๋ฅ์ ํ๋ณดํ๊ธฐ ์ํด ์ธ๋ถ ์บ์ฑ ์์คํ ์ ํฌ๊ฒ ์์กดํฉ๋๋ค. ๊ฐ๋ฐ์๋ FaaS ์ฝ๋๋ฅผ ์์ฑํ ํ, ์ฝ๋ ๋ฐฐํฌ ๋ฐ ๋ถํ ๋ณํ์ ๋ฐ๋ฅธ ์๋ ํ์ฅ(auto-scaling)๊ณผ ๊ฐ์ ๋๋จธ์ง ์์ ์ ์๋ํ๋ ์ธํ๋ผ๊ฐ ์ฒ๋ฆฌํ๋๋ก ๋งก๊น๋๋ค. ์ด๋ฌํ ๋จ์์ฑ ๋๋ถ์ Meta์ 10,000๋ช ์ด์์ ์ ํ ๊ฐ๋ฐ์๋ ์ธํ๋ผ ๊ด๋ฆฌ์ ๋ํ ๊ฑฑ์ ์์ด ์ ํ ๋ก์ง์๋ง ์ง์คํ ์ ์์ต๋๋ค. ๋ํ, ์ ํ ๊ฐ๋ฐ์๊ฐ ๊ณผ๋ํ๊ฒ ์์์ ํ ๋น(over-provisioning)ํ์ฌ ๋ฐ์ํ๋ ํ๋์จ์ด ๋ญ๋น๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค. Meta๋ ๊ฐ๋ฐ์ ์์ฐ์ฑ์ ๊ทน๋ํํ๊ธฐ ์ํด FaaS ํ์ฉ์ ๊ทนํ๊น์ง ๋์ด์ฌ๋ ธ์ต๋๋ค. Meta์ ์ฝ 10,000๋ช ์ด์์ ์์ง๋์ด ์ค, FaaS ์ฝ๋๋ฅผ ์์ฑํ๋ ์์ง๋์ด์ ์๋ ์์ฒด ์ด์ํ๋ ์ผ๋ฐ ์๋น์ค ์ฝ๋๋ฅผ ์์ฑํ๋ ์์ง๋์ด๋ณด๋ค ์ฝ 50% ๋ ๋ง์ต๋๋ค. ์ด๋ฌํ ์ฑ๊ณต์ ์ ํ ์์ง๋์ด๊ฐ ์ธํ๋ผ ๊ด๋ฆฌ๋ฅผ ์ ๊ฒฝ ์ฐ์ง ์๋๋ก ํ ์ ๋ฟ๋ง ์๋๋ผ, FaaS์ ์ต์ ํ๋ ํตํฉ ๊ฐ๋ฐ ํ๊ฒฝ(IDE)์ ๋์ ์ฌ์ฉ์ฑ ๋๋ถ์ด๊ธฐ๋ ํฉ๋๋ค. ์ด IDE๋ ๊ณ ์์ค(high-level) ์ธ์ด ๊ตฌ์กฐ๋ฅผ ํตํด ์์ ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ๋ค์ํ ๋ฐฑ์๋ ์์คํ ์ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ๋ํ, ์ง์์ ํตํฉ ํ ์คํธ(Continuous Integration Tests)๋ฅผ ํตํด ๋น ๋ฅธ ํผ๋๋ฐฑ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฆผ 2์์ ๋ณผ ์ ์๋ฏ์ด, Meta๋ ๋ ๊ฐ์ FaaS ํ๋ซํผ์ ์ด์ํฉ๋๋ค. ํ๋๋ ํ๋ก ํธ์๋ ์๋ฒ๋ฆฌ์ค ํจ์(Frontend Serverless Functions)์ฉ์ด๊ณ , ๋ค๋ฅธ ํ๋๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์๋ฒ๋ฆฌ์ค ํจ์(Event-Driven Serverless Functions)์ฉ์ ๋๋ค. ์ด ๋ ํ๋ซํผ์ ๊ฐ๊ฐ FrontFaaS์ XFaaS๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. FrontFaaS ํจ์๋ PHP๋ก ์์ฑ๋๋ฉฐ, Meta๋ Python, Erlang, Haskell์ ์ง์ํ๋ FaaS ํ๋ซํผ๋ ์ด์ํ๊ณ ์์ต๋๋ค. ์์ญ์ต ๋ช ์ ์ฌ์ฉ์๋ก ์ธํด ๋ฐ์ํ๋ ๋์ ๋ถํ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด, Meta๋ 50๋ง ๋ ์ด์์ ์๋ฒ๋ฅผ ์ด์ํ๋ฉฐ PHP ๋ฐํ์์ ํญ์ ์คํ ์ํ๋ก ์ ์งํฉ๋๋ค. ์ฌ์ฉ์ ์์ฒญ์ด ๋์ฐฉํ๋ฉด, ์์ฒญ์ ์ฆ์ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ด๋ฌํ ์๋ฒ ์ค ํ๋๋ก ๋ผ์ฐํ ๋๋ฉฐ, ์ฝ๋ ์คํํธ(cold start) ์ง์ฐ์ด ๋ฐ์ํ์ง ์์ต๋๋ค. ์ฌ์ดํธ์ ๋ถํ๊ฐ ๋ฎ์ ๋๋ ์๋ ํ์ฅ(auto-scaling) ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ผ๋ถ FrontFaaS ์๋ฒ๋ฅผ ํด์ ํ๊ณ , ์ด๋ฅผ ๋ค๋ฅธ ์๋น์ค์์ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค. XFaaS๋ FrontFaaS์ ์ฌ๋ฌ ๊ฐ์ง ์ ์ฌํ ์ ์ ๊ฐ์ง์ง๋ง, ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ์ฌ์ฉ์์ ์ง์ ์ฐ๊ฒฐ๋์ง ์๋(non-user-facing) ํจ์๋ฅผ ์คํํ๋ฉฐ, ์๋ธ์ด(subsecond) ์๋ต ์๊ฐ์ด ํ์ํ์ง ์์ง๋ง ๋ถํ๊ฐ ๊ธ๊ฒฉํ๊ฒ ๋ณํ๋ ํจํด์ ๋ณด์ธ๋ค๋ ์ ์ ๋๋ค. XFaaS๋ ์ต๋ ๋ถํ ์ํ์์ ์์์ ๊ณผ๋ํ๊ฒ ํ ๋น(overprovisioning)ํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ๋ฌ ์ต์ ํ ๊ธฐ๋ฒ์ ์ ์ฉํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ง์ฐ์ ํ์ฉํ ์ ์๋ ํจ์ ์คํ์ ๋นํผ์ก ์๊ฐ๋๋ก ์ฐ๊ธฐํ๋ ๊ฒ, ์ ์ญ์ ์ผ๋ก ์ง์ญ ๊ฐ ํจ์ ํธ์ถ ๋ถํ๋ฅผ ๋ถ์ฐํ๋ ๊ฒ, ๊ทธ๋ฆฌ๊ณ ํ ๋น๋(quota)์ ๊ธฐ๋ฐํ ์ ํ(throttling) ๊ตฌํ์ด ํฌํจ๋ฉ๋๋ค. Meta์ ์ ํ ๊ฐ๋ฐ์๋ค์ 2000๋ ๋ ํ๋ฐ๋ถํฐ FaaS๋ฅผ ์ฃผ์ ์ฝ๋ฉ ํจ๋ฌ๋ค์์ผ๋ก ์ฌ์ฉํด ์์ผ๋ฉฐ, ์ด๋ โFaaSโ๋ผ๋ ์ฉ์ด๊ฐ ๋๋ฆฌ ์๋ ค์ง๊ธฐ ์ ๋ถํฐ ์ ์ฉ๋์ด ์์ต๋๋ค. ์ ๊ณ์ ๋ค๋ฅธ ์๋ฒ๋ฆฌ์ค ํ๋ซํผ๊ณผ ๋น๊ตํ์ ๋, Meta์ ์๋ฒ๋ฆฌ์ค ํ๋ซํผ์ด ๊ฐ์ง๋ ๋ ํนํ ์ ์ ์ฌ๋ฌ ๊ฐ์ ํจ์๋ฅผ ๋์ผํ Linux ํ๋ก์ธ์ค์์ ๋์์ ์คํํ ์ ์๋๋ก ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋๊ฐ ์๋ก ๋ค๋ฅธ ๊ณ ๊ฐ ๊ฐ ๊ฒฉ๋ฆฌ ๊ฐํ๋ฅผ ์ํด ๊ฐ์ ๋จธ์ ๋น ํ๋์ ํจ์๋ง ์คํํ๋ ๋ฐฉ์๊ณผ๋ ์ฐจ๋ณํ๋ฉ๋๋ค. ์ด ๋ฐฉ์์ ํ๋์จ์ด ํจ์จ์ฑ์ ๊ทน๋ํํ๋ ๋ฐ ๊ธฐ์ฌํฉ๋๋ค.
Insight 5: ์๋ฒ๋ฆฌ์ค ํจ์๋ Meta์ ์ ํ ๊ฐ๋ฐ์์ ๊ธฐ๋ณธ์ ์ธ ์ฝ๋ฉ ํจ๋ฌ๋ค์์ด ๋์์ต๋๋ค. Meta์ 10,000๋ช ์ด์์ ์์ง๋์ด๊ฐ ์๋ฒ๋ฆฌ์ค ํจ์๋ฅผ ์์ฑํ๋ฉฐ, ์ด๋ ์ผ๋ฐ์ ์ธ ์๋น์ค ์ฝ๋๋ฅผ ์์ฑํ๋ ์์ง๋์ด ์๋ณด๋ค 50% ๋ ๋ง์ต๋๋ค.
Reducing Hardware Costs
๊ณต์ ์ธํ๋ผ์ ๋ ๋ค๋ฅธ ์ฃผ์ ๋ชฉ์ ์ ๊ฐ๋ฐ์ ์์ฐ์ฑ์ ํฅ์์ํค๋ ๊ฒ๋ฟ๋ง ์๋๋ผ ํ๋์จ์ด ๋น์ฉ์ ์ ๊ฐํ๋ ๊ฒ์ ๋๋ค. ์ด ์น์ ์์๋ ์ํํธ์จ์ด ์๋ฃจ์ ์ด ํ๋์จ์ด ๋น์ฉ ์ ๊ฐ์ ์ด๋ป๊ฒ ๊ธฐ์ฌํ๋์ง ๋ช ๊ฐ์ง ์ฌ๋ก๋ฅผ ์๊ฐํฉ๋๋ค.
All Global Datacenters as a Computer
๋๋ถ๋ถ์ ์ธํ๋ผ๋ ์ง๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋ ๋ฐ์ดํฐ์ผํฐ์ ๋ณต์กํ ๊ด๋ฆฌ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋งก๊น๋๋ค. ์ฌ์ฉ์๋ ์๋น์ค์ ๋ณต์ ๋ณธ ๊ฐ์๋ฅผ ์๋์ผ๋ก ๊ฒฐ์ ํ๊ณ , ๋ฐฐํฌํ ์ง์ญ์ ์ ํํ๋ฉฐ, ๋์์ ์๋น์ค ์์ค ๋ชฉํ(SLO)๋ฅผ ์ถฉ์กฑํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ๋ณต์ก์ฑ์ ๊ณผ๋ํ ์์ ํ ๋น(overprovisioning), ์ง์ญ ๊ฐ ๋ถํ ๋ถ๊ท ํ, ๊ทธ๋ฆฌ๊ณ ์ํฌ๋ก๋ ๋ณํ ๋ฐ ๋ฐ์ดํฐ์ผํฐ ์์ ๊ณต๊ธ์ ๋ง์ถ ์ ์ ํ ๋ง์ด๊ทธ๋ ์ด์ ๋ถ์กฑ์ผ๋ก ์ธํด ํ๋์จ์ด ๋ญ๋น๋ฅผ ์ด๋ํฉ๋๋ค. ๋ฐ๋ฉด, Meta๋ โ๋ฐ์ดํฐ์ผํฐ๋ฅผ ํ๋์ ์ปดํจํฐ์ฒ๋ผ ์ด์(The Datacenter as a Computer, DaaC)โํ๋ ๋ฐฉ์์ ๋์ด์ โ๋ชจ๋ ๊ธ๋ก๋ฒ ๋ฐ์ดํฐ์ผํฐ๋ฅผ ํ๋์ ์ปดํจํฐ์ฒ๋ผ ์ด์(All Global Datacenters as a Computer, Global-DaaC)โํ๋ ๋น์ ์ ํฅํด ๋ฐ์ ํ๊ณ ์์ต๋๋ค. Global-DaaC์์๋ ์ฌ์ฉ์๊ฐ ๋จ์ํ ์๋น์ค์ ๊ธ๋ก๋ฒ ๋ฐฐํฌ๋ฅผ ์์ฒญํ๋ฉด, ์ธํ๋ผ๊ฐ ๋ชจ๋ ์ธ๋ถ ์ฌํญ์ ์๋์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค. ์ฆ, ์๋น์ค ๋ณต์ ๋ณธ์ ์ต์ ๊ฐ์๋ฅผ ๊ฒฐ์ ํ๊ณ , ์๋น์ค ์์ค ๋ชฉํ์ ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋์จ์ด๋ฅผ ๊ณ ๋ คํ์ฌ ๋ณต์ ๋ณธ์ ์ ์ ํ ๋ฐ์ดํฐ์ผํฐ ์ง์ญ์ ๋ฐฐ์นํ๋ฉฐ, ์ต์ ์ ํ๋์จ์ด ์ ํ์ ์ ํํ๊ณ , ํธ๋ํฝ ๋ผ์ฐํ ์ ์ต์ ํํ๋ฉฐ, ์ํฌ๋ก๋ ๋ณํ์ ๋ฐ๋ผ ์๋น์ค ๋ฐฐ์น๋ฅผ ์ง์์ ์ผ๋ก ์กฐ์ ํฉ๋๋ค. ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋์ ๋น๊ตํ์ ๋, Meta๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ ์์ ํ๊ณ ์์ด ํ์ํ ๋๋ง๋ค ์ง์ญ ๊ฐ ์ด๋์ด ๊ฐ๋ฅํ๋ฏ๋ก Global-DaaC๋ฅผ ๋ ์ฝ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด, ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋๋ ๊ณ ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ ์ด๋ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ์ ์ฐ์ฑ์ด ๋ถ์กฑํฉ๋๋ค. Global-DaaC๋ฅผ ๊ตฌํํ๊ธฐ ์ํด, Meta์ ๋๊ตฌ๋ค์ ๊ธ๋ก๋ฒ, ์ง์ญ, ๊ฐ๋ณ ์๋ฒ ์์ค์์ ์์ ํ ๋น์ ์ํํ๊ฒ ์กฐ์ ํฉ๋๋ค. ๋จผ์ , Meta์ ๊ธ๋ก๋ฒ ์ฉ๋ ๊ด๋ฆฌ ๋๊ตฌ(global capacity-management tool)๋ RPC ์ถ์ ์ ์ฌ์ฉํ์ฌ ์๋น์ค ๊ฐ ์ข ์์ฑ์ ์๋ณํ๊ณ , ์์ ์๋น ๋ชจ๋ธ์ ๊ตฌ์ถํ ํ, ํผํฉ ์ ์ ํ๋ก๊ทธ๋๋ฐ(mixed-integer programming)์ ์ ์ฉํ์ฌ ์๋น์ค์ ๊ธ๋ก๋ฒ ์ฉ๋ ์๊ตฌ ์ฌํญ์ ์ง์ญ๋ณ ํ ๋น๋์ผ๋ก ๋ถํ ํฉ๋๋ค. ๋ค์์ผ๋ก, ์ง์ญ ์ฉ๋ ๊ด๋ฆฌ ๋๊ตฌ(regional capacity-management tool)๋ ์ง์ญ๋ณ ํ ๋น๋์ ๋ฐ๋ผ ์๋ฒ ์์์ ํ ๋นํ์ฌ ๊ฐ์ ํด๋ฌ์คํฐ(virtual clusters)๋ฅผ ํ์ฑํฉ๋๋ค. ๋ฌผ๋ฆฌ์ ํด๋ฌ์คํฐ์ ๋ฌ๋ฆฌ, ๊ฐ์ ํด๋ฌ์คํฐ๋ ๋์ผํ ์ง์ญ ๋ด ์ฌ๋ฌ ๋ฐ์ดํฐ์ผํฐ์ ์๋ฒ๋ก ๊ตฌ์ฑ๋ ์ ์์ผ๋ฉฐ, ํฌ๊ธฐ๊ฐ ๋์ ์ผ๋ก ํ์ฅ๋๊ฑฐ๋ ์ถ์๋ ์ ์์ต๋๋ค. ์คํ ์๊ฐ ๋์, Meta์ ์ปจํ ์ด๋ ๊ด๋ฆฌ ๋๊ตฌ(container-management tool)๋ ์ด๋ฌํ ๊ฐ์ ํด๋ฌ์คํฐ ๋ด์ ์ปจํ ์ด๋๋ฅผ ํ ๋นํ๋ฉฐ, ๊ณ ์ฅ ํ์ฉ์ฑ์ ํฅ์์ํค๊ธฐ ์ํด ํ๋์ ์์ ์ ์ฌ๋ฌ ๋ฐ์ดํฐ์ผํฐ์ ๋ถ์ฐ ๋ฐฐ์นํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก, ์๋ฒ ์์ค์์๋ Meta์ ์ปค๋ ๋ฉ์ปค๋์ฆ(kernel mechanisms)์ด ๊ฐ๋ณ ์ปจํ ์ด๋์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๋ฐ I/O ์์์ ์ ์ ํ ๊ณต์ ์ ๊ฒฉ๋ฆฌ๋ฅผ ๋ณด์ฅํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ์ํ ์ ์ฅ(stateful) ์๋น์ค๋ Global-DaaC์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค. ์ด๋ฌํ ์๋น์ค๋ ์ผ๋ฐ์ ์ผ๋ก ์ค๋ฉ(sharding) ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ฉฐ, ๊ฐ ์ปจํ ์ด๋๋ ํจ์จ์ฑ์ ์ํด ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ ์ค๋๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค. Meta์ ๊ธ๋ก๋ฒ ์๋น์ค ๋ฐฐ์น ๋๊ตฌ(GSP, Global Service Placer)๋ ์ ์ฝ ์ต์ ํ(constrained optimization)๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ๋ฐ์ดํฐ ์ค๋์ ์ต์ ๋ณต์ ๋ณธ ๊ฐ์์ ์ง์ญ๋ณ ๋ฐฐ์น๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ๊ทธ ํ, Meta์ ์ค๋ฉ ํ๋ ์์ํฌ๋ GSP๊ฐ ์ค์ ํ ์ ์ฝ ์กฐ๊ฑด์ ๊ธฐ๋ฐ์ผ๋ก ์ค๋ ๋ณต์ ๋ณธ์ ์ปจํ ์ด๋์ ํ ๋นํ๋ฉฐ, ๋ถํ ๋ณํ์ ๋ฐ๋ผ ์ด๋ฅผ ๋์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํฉ๋๋ค. ์ ์ฌํ๊ฒ, ๋จธ์ ๋ฌ๋(ML) ์ํฌ๋ก๋๋ Global-DaaC์ ํํ์ ๋ฐ์ ์ ์์ต๋๋ค. ML ์ถ๋ก (inference)์ ๊ฒฝ์ฐ, ๋ชจ๋ธ์ ๋ฐ์ดํฐ ์ค๋์ ์ ์ฌํ๊ฒ ๊ด๋ฆฌ๋๋ฉฐ, GSP๊ฐ ๋ชจ๋ธ ๋ณต์ ๋ณธ์ ๊ฐ์์ ๋ฐฐ์น ์์น๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ML ํ์ต(training)์ ๊ฒฝ์ฐ, ํ์ต ๋ฐ์ดํฐ์ GPU๊ฐ ๋์ผํ ๋ฐ์ดํฐ์ผํฐ ์ง์ญ์ ํจ๊ป ๋ฐฐ์น๋์ด์ผ ํฉ๋๋ค. ๊ฐ ํ์ ๊ธ๋ก๋ฒ GPU ์ฉ๋ ํ ๋น๋์ ๋ฐ์ผ๋ฉฐ, ํ์ต ์์ ์ ๊ธ๋ก๋ฒ ์์ ํ(global job queue)์ ์ ์ถํฉ๋๋ค. Meta์ ML ํ์ต ์ค์ผ์ค๋ฌ๋ ์๋์ผ๋ก ๋ฐ์ดํฐ ๋ณต์ ๋ฐ GPU ํ ๋น ์ง์ญ์ ์ ํํ์ฌ, ๋ฐ์ดํฐ์ GPU๊ฐ ํจ๊ป ๋ฐฐ์น๋๋๋ก ๋ณด์ฅํ๋ฉด์ GPU ํ์ฉ๋๋ฅผ ๊ทน๋ํํฉ๋๋ค.
Insight 6: Meta๋ โ๋ฐ์ดํฐ์ผํฐ๋ฅผ ํ๋์ ์ปดํจํฐ์ฒ๋ผ ์ด์(DaaC, Datacenter as a Computer)โํ๋ ๋ฐฉ์์์ โ๋ชจ๋ ๊ธ๋ก๋ฒ ๋ฐ์ดํฐ์ผํฐ๋ฅผ ํ๋์ ์ปดํจํฐ์ฒ๋ผ ์ด์(Global-DaaC, Global Datacenter as a Computer)โํ๋ ๋ฐฉํฅ์ผ๋ก ๋ฐ์ ํ๊ณ ์์ต๋๋ค. ์ด ๋ชจ๋ธ์์๋ ์ธํ๋ผ๊ฐ ์์ ๋ถํ ๋ณํ์ ๋ฐ๋ผ ์๋์ผ๋ก ๊ธ๋ก๋ฒ ๋ฐ์ดํฐ์ผํฐ ๊ฐ ๋ฐฐํฌ๋ฅผ ๊ฒฐ์ ํ๊ณ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ฉฐ, ์ด๋ฅผ ์ํด ์ฌ์ฉ์์ ๊ฐ์ ์ด ํ์ํ์ง ์์ต๋๋ค. Meta๋ ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ML ์์คํ , ๊ทธ๋ฆฌ๊ณ 10๋ง ๋ ์ด์์ ์๋ฒ ๋ฐ 10๋ง ๊ฐ ์ด์์ GPU ๊ท๋ชจ๋ก ์ด์๋๋ ๋ค์ํ ์๋น์ค์์ ์ฑ๊ณต์ ์ผ๋ก ์ ์ฉํ์ต๋๋ค.
Hardware and Software Co-Design
๋จ์ผ ์๋ฒ ๋ด์์ ํ๋์จ์ด์ ์ํํธ์จ์ด์ ๊ณต๋ ์ค๊ณ(co-design)๋ ์ผ๋ฐ์ ์ด์ง๋ง, Meta๋ ์ด๋ฅผ ๊ธ๋ก๋ฒ ์์ค์ผ๋ก ํ์ฅํ์ฌ ์ํํธ์จ์ด ์๋ฃจ์ ์ ํ์ฉํด ์ ๋น์ฉ ํ๋์จ์ด์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ณ ์์ต๋๋ค.
Low-Cost Fault Tolerance
ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋๋ ์ผ๋ฐ์ ์ผ๋ก ๋์ ๊ฐ์ฉ์ฑ์ ์ ๊ณตํ๋ ํ๋์จ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋ ๊ณ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ถฉ๋ถํ ๋ด๊ฒฐํจ์ฑ์ ๊ฐ์ถ์ง ๋ชปํ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ๋ฉด, Meta๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ ์ ์ดํ ์ ์์ผ๋ฏ๋ก, ๋ฎ์ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํ๋ ์ ๋น์ฉ ํ๋์จ์ด์์๋ ์คํ๋ ์ ์๋๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ด๊ฒฐํจ์ฑ์ด ๊ฐํ ๋ฐฉ์์ผ๋ก ๊ตฌํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋์ ์๋ฒ ๋์ ๋์ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํ๊ณ ์คํ ์ค์ธ ์ํฌ๋ก๋์ ์ํฅ์ ์ฃผ์ง ์๋๋ก ์ ์ง๋ณด์๋ฅผ ์ํํ๊ธฐ ์ํด ์ด์ค ์ ์ ๊ณต๊ธ ์ฅ์น(dual power supplies)์ ์ด์ค ToR(Top-of-Rack) ์ค์์น๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด, Meta์ ์๋ฒ ๋์ ์ด์ค ์ ์ ๊ณต๊ธ ์ฅ์น๋ ์ด์ค ToR ์ค์์น๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๋์ , ํ๋์จ์ด ์ด์คํ๋ ํจ์ฌ ๋ ํฐ ๋ฒ์์์ ์ด๋ฃจ์ด์ง๋ฉฐ, ๊ฐ ์ ๋ ฅ ๋ฉ์ธ ์ค์์น๋ณด๋(MSB)๊ฐ ์ฝ 10,000~20,000๋์ ์๋ฒ๋ฅผ ๋ด๋นํฉ๋๋ค. 6๊ฐ์ MSB๋ง๋ค ํ๋์ ์๋น MSB๋ง ๋ฐฑ์ ์ผ๋ก ์กด์ฌํฉ๋๋ค. ๋ํ, ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋์ ๊ฐ์ ๋จธ์ (VM)์ ์ผ๋ฐ์ ์ผ๋ก ๋คํธ์ํฌ ์ฐ๊ฒฐ ๋ธ๋ก ๋๋ฐ์ด์ค(network-attached block devices)๋ฅผ ์ฌ์ฉํ์ฌ ๋ผ์ด๋ธ VM ๋ง์ด๊ทธ๋ ์ด์ ์ ์ํํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด, Meta์ ์ปจํ ์ด๋๋ ๋ฃจํธ ๋์คํฌ๋ก ์ ๋น์ฉ์ ์ง์ ์ฐ๊ฒฐ SSD(directly attached SSD)๋ฅผ ์ฌ์ฉํ๋ฏ๋ก, ๋ฐ์ดํฐ์ผํฐ ์ ์ง๋ณด์ ์ค ๋ผ์ด๋ธ ์ปจํ ์ด๋ ๋ง์ด๊ทธ๋ ์ด์ ์ด ์ด๋ ต์ต๋๋ค. Meta๋ ์ ๋น์ฉ ํ๋์จ์ด์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ์ํํธ์จ์ด ์๋ฃจ์ ์ ํ์ฉํฉ๋๋ค. ์ฒซ์งธ, Meta์ ์์ ํ ๋น ๋๊ตฌ๋ ์๋น์ค์ ์ปจํ ์ด๋์ ๋ฐ์ดํฐ ์ค๋๊ฐ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ์ผํฐ ํ์ ์ฅ์ ๋๋ฉ์ธ(MSB)์ ์ถฉ๋ถํ ๋ถ์ฐ๋๋๋ก ํ์ฌ ๋ด๊ฒฐํจ์ฑ์ ํฅ์์ํต๋๋ค. ๋์งธ, ์ปจํ ์ด๋์ ๋ผ์ดํ์ฌ์ดํด ๊ด๋ฆฌ๋ฅผ ์๋น์ค๊ฐ ์ ์ดํ ์ ์๋๋ก ํ๋ ํ๋ ฅ ํ๋กํ ์ฝ(cooperative protocol)์ ํตํด, ๋์ผํ ๋ฐ์ดํฐ ์ค๋์ ๋ ๊ฐ ๋ณต์ ๋ณธ์ด ๋์์ ์ข ๋ฃ๋์ง ์๋๋ก ํ๋ ๋ฑ ์ ํ๋ฆฌ์ผ์ด์ ์์ค์ ์ ์ฝ ์ฌํญ์ ์ ์ง๋ณด์ ์์ ์์๋ ์ค์ํ๋๋ก ํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก, Global-DaaC๋ ์ ์ฒด ๋ฐ์ดํฐ์ผํฐ ์ง์ญ์ ์์ค, ๊ฐ ์ง์ญ์ MSB ํ ๊ฐ ์์ค, ๊ทธ๋ฆฌ๊ณ ๊ฐ ์ง์ญ์์ ์์์ ์ผ๋ถ ์๋ฒ ์์ค์๋ ์๋น์ค๊ฐ ์ ์์ ์ผ๋ก ์ด์๋ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค. Meta๋ ์ด๋ฌํ ๋ด๊ฒฐํจ์ฑ์ด ์ ์ง๋๋์ง ํ์ธํ๊ธฐ ์ํด ํ๋ก๋์ ํ๊ฒฝ์์ ์ ๊ธฐ์ ์ผ๋ก ํ ์คํธ๋ฅผ ์ํํฉ๋๋ค.
Global-DaaC๋ ์ ์ฒด ๋ฐ์ดํฐ์ผํฐ ์ง์ญ์ ์ฅ์ , ๊ฐ ์ง์ญ์ MSB(Main Switch Board) ํ๋์ ์ฅ์ , ๊ทธ๋ฆฌ๊ณ ๊ฐ ์ง์ญ์์ ์ผ์ ๋น์จ์ ๋ฌด์์ ์๋ฒ ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์๋น์ค๊ฐ ์ง์์ ์ผ๋ก ์ด์๋ ์ ์๋๋ก ๋ฐฐํฌ๋ฉ๋๋ค.
Meta์ ์ธํ๋ผ๋ ์ ์ฒด ๋ฐ์ดํฐ์ผํฐ ์ง์ญ์ด ์ฅ์ ๋ฅผ ๊ฒช๋๋ผ๋ ์ฌ์ฉ์์๊ฒ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ์ค๊ณ๋์ด ์์ง๋ง, ๋ฐ์ดํฐ์ผํฐ ์ง์ญ์ ์๊ฐ ์ฆ๊ฐํ๋ฉด์ ํ๋ฆฌ์ผ์ธ๊ณผ ๊ฐ์ ๋๊ท๋ชจ ์์ฐ์ฌํด๋ก ์ธํด ์ธ์ ํ ๋ ์ง์ญ์ด ๋์์ ์ํฅ์ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์ปค์ง๊ณ ์์ต๋๋ค. ๋ ๊ฐ์ ์ง์ญ์ด ๋์์ ์ฅ์ ๋ฅผ ๊ฒช์ ๊ฐ๋ฅ์ฑ์ ๋๋นํด ์ฉ๋์ ๊ณผ๋ํ๊ฒ ํ ๋น(over-provisioning)ํ๋ ๋์ , Meta๋ ์ํํธ์จ์ด ๊ธฐ๋ฐ ์ ๊ทผ ๋ฐฉ์์ ์ฑํํฉ๋๋ค. ์ฌ๋ฌ ์ง์ญ์ด ๋์์ ์ฅ์ ๋ฅผ ๊ฒช์ ๊ฒฝ์ฐ, ์ค์๋๊ฐ ๋ฎ์ ๊ธฐ๋ฅ์ ๋นํ์ฑํํ๊ณ , ๋์์ ํ์ง์ ๋ฎ์ถ๋ ๋ฑ์ ๋ฐฉ์์ผ๋ก ์๋น์ค ํ์ง์ ์ ์ง์ ์ผ๋ก ์ ํ์์ผ ์์คํ ๋ถํ๋ฅผ ์ค์ ๋๋ค.
Eliminating the Costs of Routing Proxies
์ผ๋ฐ์ ์ธ ์๋น์ค ๋ฉ์(service mesh)๋ RPC ์์ฒญ์ ๋ผ์ฐํ ํ๊ธฐ ์ํด ์ฌ์ด๋์นด ํ๋ก์(sidecar proxy)๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ์ง๋ง, Meta์ ์๋น์ค ๋ฉ์๋ ์ ์ฒด RPC ์์ฒญ ์ค ๋จ 1%๋ง ํ๋ก์๋ฅผ ์ฌ์ฉํ์ฌ ๋ผ์ฐํ ํฉ๋๋ค. ๋๋จธ์ง 99%์ RPC ์์ฒญ์ ์๋น์ค ์คํ ํ์ผ์ ์ง์ ์ฐ๊ฒฐ๋ ๋ผ์ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ์ง์ ์ฐ๊ฒฐ๋๋ฉฐ, ์ค๊ฐ ํ๋ก์๋ฅผ ์ฐํํฉ๋๋ค. ์ด๋ฌํ ๋น์ ํต์ ์ธ ๋ฐฉ์ ๋๋ถ์ Meta๋ ์ฝ 10๋ง ๋์ ํ๋ก์ ์๋ฒ ๋น์ฉ์ ์ ๊ฐํ ์ ์์ง๋ง, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ฝ 1๋ง ๊ฐ์ ์๋น์ค์ ์ปดํ์ผ๋์ด ๊ฐ๊ธฐ ๋ค๋ฅธ ๋ฐฐํฌ ์ผ์ ์ผ๋ก ์ด์๋๊ธฐ ๋๋ฌธ์ ๋ฐฐํฌ ๊ณผ์ ์์ ๋์ ๊ณผ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. Meta์ ์ํํธ์จ์ด ๋ฐฐํฌ ๋ฐ ๊ตฌ์ฑ ๊ด๋ฆฌ ๋๊ตฌ๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
Tiered Storage and Local SSDs
Meta๋ ๋ฐ์ดํฐ ์ ๊ทผ ๋น๋์ ์ง์ฐ ์๊ฐ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ํซ(hot), ์(warm), ์ฝ๋(cold) ๋ฐ์ดํฐ๋ก ๋ถ๋ฅํ๊ณ , ๊ฐ ์ ํ์ ์ ํฉํ ์คํ ๋ฆฌ์ง ์์คํ ์ ์ฌ์ฉํ์ฌ ๋น์ฉ ํจ์จ์ฑ์ ์ต์ ํํฉ๋๋ค. ์์ ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ํซ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์บ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ SSD(Solid State Drive)์ ์ ์ฅํฉ๋๋ค. ๋น๋์ค, ์ด๋ฏธ์ง ๋ฐ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค(์: ์ฌ์ฉ์ ํ๋ ๋ก๊ทธ)์ ๊ฐ์ ์ ๋ฐ์ดํฐ๋ ๋ถ์ฐ ํ์ผ ์์คํ ์ ์ ์ฅ๋๋ฉฐ, ์ฃผ๋ก HDD(Hard Disk Drive)๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํฉ๋๋ค. ๊ฐ ์คํ ๋ฆฌ์ง ์๋ฒ์๋ ํ๋์ CPU, 36๊ฐ์ HDD, ๊ทธ๋ฆฌ๊ณ ๋ฉํ๋ฐ์ดํฐ ์บ์ฑ์ ์ํ 2๊ฐ์ SSD๊ฐ ์ฅ์ฐฉ๋์ด ์์ต๋๋ค. 10๋ ์ด์ ๋ ๊ณ ํด์๋ ๋น๋์ค์ ๊ฐ์ ๊ฑฐ์ ์ ๊ทผํ์ง ์๋ ์ฝ๋ ๋ฐ์ดํฐ๋ ๊ณ ๋ฐ๋(high-density) HDD ์๋ฒ์ ์์นด์ด๋น๋๋ฉฐ, ๊ฐ ์๋ฒ์๋ ํ๋์ CPU์ 216๊ฐ์ HDD๊ฐ ํ์ฌ๋์ด ์์ด, ์ด ์์ ๋น์ฉ(TCO)๊ณผ ๋ฐ์ดํฐ ๋ณต๊ตฌ ์๋ ๊ฐ์ ๊ท ํ์ ๋ง์ถฅ๋๋ค. ์ด HDD๋ค์ ๋๋ถ๋ถ์ ์๊ฐ ๋์ ์ ์์ด ๊บผ์ ธ ์์ผ๋ฉฐ, ํ์ํ ๋๋ง ํ์ฑํ๋ฉ๋๋ค. SSD์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ํฌ๋ก๋ ์ค ์ผ๋ถ๋ ๊ธด ๊ผฌ๋ฆฌ ์ง์ฐ ์๊ฐ(tail latency)์ ํ์ฉํ ์ ์์ผ๋ฉฐ, SSD ํ์ฉ๋๋ฅผ ๊ทน๋ํํ๊ธฐ ์ํด SSD ๊ธฐ๋ฐ์ ๊ณต์ ์๊ฒฉ ์คํ ๋ฆฌ์ง๋ฅผ ์ ํํฉ๋๋ค. ํ์ง๋ง, ์ง์ฐ ์๊ฐ ์๊ตฌ ์ฌํญ์ด ์๊ฒฉํ ์ํฌ๋ก๋๋ ์ฌ์ ํ ์ง์ ์ฐ๊ฒฐ๋ ๋ก์ปฌ SSD๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ค๋ฅธ ํ์ดํผ์ค์ผ์ผ ์ธํ๋ผ์ ๋น๊ตํ์ ๋, Meta๋ ๋น์ฉ ์ ๊ฐ์ ์ํด ๋ก์ปฌ SSD๋ฅผ ๋ ์์ฃผ ํ์ฉํ์ง๋ง, ์ด๋ ๊ด๋ฆฌ ๋ณต์ก์ฑ์ ์ฆ๊ฐ์ํฌ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ถํ ๋ถ๋ฐฐ๊ฐ ๋ถ๊ท ํํ ๊ฒฝ์ฐ ๋ก์ปฌ SSD๊ฐ ์ ๋๋ก ํ์ฉ๋์ง ๋ชปํ๊ณ ์ ํด ์ํ๋ก ๋จ์ ์์ ์ ์์ต๋๋ค. ๋ํ, ์ฅ์ ๋ณต๊ตฌ ๊ณผ์ ์์ ์คํจํ ์๋ฒ์ SSD์ ๋ฐ์ดํฐ๊ฐ ๊ฐํ ๋ณต๊ตฌ๊ฐ ์ด๋ ค์์ง๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, Meta๋ ๊ณตํต ์ค๋ฉ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ SSD ๊ธฐ๋ฐ์ ์ํ ์ ์ฅ ์๋น์ค(stateful service)๋ฅผ ๊ตฌํํ๋ฉฐ, ์ด ์๋ฃจ์ ์ ํ ๋ฒ ๊ตฌ์ถํ ํ ์ฌ๋ฌ ์๋น์ค์์ ์ฌ์ฌ์ฉํฉ๋๋ค.
Insight 7: Meta๋ ํ๋์จ์ด ๋น์ฉ์ ์ ๊ฐํ๊ธฐ ์ํด ์ํํธ์จ์ด ์๋ฃจ์ ์ ํ์ฉํ์ฌ ์ ๋น์ฉ ํ๋์จ์ด์ ํ๊ณ๋ฅผ ๊ทน๋ณตํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ํํธ์จ์ด ์คํ์ ๋ณต์ก์ฑ์ ์ฆ๊ฐ์ํค์ง๋ง, ๋น์ฉ ์ ๊ฐ ํจ๊ณผ๊ฐ ํฌ๊ธฐ ๋๋ฌธ์ ์ถฉ๋ถํ ๊ฐ์น ์๋ ์ ํ์ด๋ผ๊ณ ํ๋จ๋ฉ๋๋ค.
In-House Hardware Design
Meta๋ ๋น์ฉ ์ ๊ฐ๊ณผ ์ ๋ ฅ ํจ์จ์ฑ์ ๊ทน๋ํํ๊ธฐ ์ํด ์์ฒด์ ์ผ๋ก ๋ฐ์ดํฐ์ผํฐ์ ํ๋์จ์ด(์๋ฒ, ๋คํธ์ํฌ ์ค์์น, ๋น๋์ค ๊ฐ์๊ธฐ, AI ์นฉ)๋ฅผ ์ค๊ณํฉ๋๋ค. ๋ฐ์ดํฐ์ผํฐ์์ ์ ๋ ฅ์ ๊ฐ์ฅ ์ ํ์ ์ธ ์์์ ๋๋ค. ๋ฐ์ดํฐ์ผํฐ๋ฅผ ๊ฑด์คํ ๋ ์ ๋ ฅ ์ฉ๋์ด ๊ณ ์ ๋๋ฉฐ, ๋ฐ์ดํฐ์ผํฐ์ 20~30๋ ์๋ช ๋์ ์ด๋ฅผ ํ์ฅํ๋ ๊ฒ์ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ๋ฉด, ๋คํธ์ํฌ์ ์๋ฒ๋ ํ์์ ๋ฐ๋ผ ์ ๊ทธ๋ ์ด๋ํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ์ผํฐ์ ์ ๋ ฅ์ ์ข ์ข ๊ณผ์ ํ ๋น(oversubscription)๋ฉ๋๋ค. ์์ ๋ถํ๊ฐ ๊ธ์ฆํ ๋ ์ ๋ ฅ ์ฌ์ฉ์ด ์ด๊ณผ๋์ง ์๋๋ก, ์๋ํ ๋๊ตฌ๊ฐ ์ ๋ ฅ ๊ณต๊ธ ๊ณ์ธต ์ ์ฒด์์ ์ ๋ ฅ ์ ํ(power-capping) ์กฐ์น๋ฅผ ์กฐ์ ํฉ๋๋ค. Meta์ ํ๋์จ์ด ์ค๊ณ๋ ํ๋์จ์ด/์ํํธ์จ์ด ๊ณต๋ ์ค๊ณ๋ฅผ ํตํด ๋น์ฉ๊ณผ ์ ๋ ฅ ์๋น๋ฅผ ์ ๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด, AI ์นฉ์ SRAM ์ฌ์ฉ์ ์์ ๋ถํ์ ๋ง๊ฒ ์ต์ ํํ๊ฑฐ๋, ๋ถํ์ํ ๊ตฌ์ฑ ์์(์: ์์ถ ๋๊ฐ ์์คํ ์ด ํฌํจ๋ ์์ด์ปจ)๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ์์ด ์์ต๋๋ค. ๋ํ, Meta๋ ์์ฒด์ ์ผ๋ก ๋คํธ์ํฌ ์ค์์น์ ๊ด๋ จ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ์ฌ, ์ค์์น ์ํํธ์จ์ด๋ฅผ ์ผ๋ฐ ์๋น์ค์ฒ๋ผ ๋ค๋ฃฐ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ์์ฃผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. Meta์ ๋๋ถ๋ถ์ ํ๋์จ์ด ์ค๊ณ๋ Open Compute Project๋ฅผ ํตํด ์คํ ์์ค๋ก ๊ณต์ ๋ฉ๋๋ค.
Insight 8: Meta๋ ํ๋์จ์ด ๋น์ฉ๊ณผ ์ ๋ ฅ ์๋น๋ฅผ ์ค์ด๊ธฐ ์ํด ์์ฒด์ ์ผ๋ก ๋ฐ์ดํฐ์ผํฐ, ์๋ฒ, ๋, ๋คํธ์ํฌ ์ค์์น๋ฅผ ์ค๊ณํ๋ฉฐ, ์ด๋ฌํ ์ค๊ณ๋ฅผ ์คํ ์์ค๋ก ๊ณต์ ํฉ๋๋ค.
Designing Scalable Systems
ํ์ดํผ์ค์ผ์ผ ์ธํ๋ผ์์ ๋ฐ๋ณต์ ์ผ๋ก ๋ฑ์ฅํ๋ ํต์ฌ ์ฃผ์ ์ค ํ๋๋ ํ์ฅ ๊ฐ๋ฅํ ์์คํ ์ ์ค๊ณํ๋ ๊ฒ์ ๋๋ค. BGP, BitTorrent, ๋ถ์ฐ ํด์ ํ ์ด๋ธ(DHT)๊ณผ ๊ฐ์ ์ธํฐ๋ท ํ๊ฒฝ์ ์ํด ์ค๊ณ๋ ๋ถ์ฐ ์์คํ ์ ์ข ์ข ํ์ฅ์ฑ์ด ๋ฐ์ด๋๋ค๋ ํ๊ฐ๋ฅผ ๋ฐ์ต๋๋ค. ๊ทธ๋ฌ๋, ๋ฐ์ดํฐ์ผํฐ ํ๊ฒฝ์์๋ ์์ ์ ํ์ด ๋ํ๊ณ ๋จ์ผ ์กฐ์ง์ด ์ ์ฒด ์์คํ ์ ์ ์ดํ ์ ์๊ธฐ ๋๋ฌธ์, ์ค์ ์ง์ค์ ์ปจํธ๋กค๋ฌ๊ฐ ์ถฉ๋ถํ ํ์ฅ์ฑ์ ์ ๊ณตํ ๋ฟ๋ง ์๋๋ผ ๋ ๋จ์ํ๊ณ ๋์ ํ์ง์ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์๋ค๋ ๊ฒ์ด Meta์ ๊ฒฝํ์ ๋๋ค.
Deprecating Decentralized Controllers
์ด ์น์ ์์๋ ์ค์ ์ง์ค์ ์ปจํธ๋กค๋ฌ์ ๋ถ์ฐ ์ปจํธ๋กค๋ฌ ๊ฐ์ ํธ๋ ์ด๋์คํ(trade-off)์ ๋ํ ๋ช ๊ฐ์ง ์ฌ๋ก๋ฅผ ๋ค๋ฃน๋๋ค. Meta์ ๋ฐ์ดํฐ์ผํฐ ํจ๋ธ๋ฆญ(fabric) ๋ด ๋คํธ์ํฌ ์ค์์น๋ ์ฌ์ ํ ํธํ์ฑ์ ์ํด BGP๋ฅผ ์ฌ์ฉํ์ง๋ง, ๋คํธ์ํฌ ํผ์ก(network congestion) ๋๋ ๋งํฌ ์ฅ์ (link failure) ๋ฐ์ ์ ๊ฒฝ๋ก๋ฅผ ์ฌ์ค์ ํ ์ ์๋ ์ค์ ์ง์ค์ ์ปจํธ๋กค๋ฌ๋ฅผ ๊ฐ์ถ๊ณ ์์ต๋๋ค. BGP๋ฅผ ์ ์ธํ๊ณ , Meta๋ ๋๋ถ๋ถ์ ๋ถ์ฐ ์ปจํธ๋กค๋ฌ๋ฅผ ์ค์ ์ง์ค์ ์ปจํธ๋กค๋ฌ๋ก ์ ํํ์ต๋๋ค. ์๋ฅผ ๋ค์ด, Meta์ ์ฌ์ค WAN์์๋ ๊ธฐ์กด์ ๋ถ์ฐํ RSVP-TE์์ ์ค์ ์ง์ค์ ์ปจํธ๋กค๋ฌ๋ก ์ ํํ์ฌ ์ต์ ์ ํธ๋ํฝ ๊ฒฝ๋ก๋ฅผ ๊ณ์ฐํ๊ณ , ์ผ๋ฐ์ ์ธ ์ฅ์ ์๋๋ฆฌ์ค์ ๋๋นํ ๋ฐฑ์ ๊ฒฝ๋ก๋ฅผ ์ฌ์ ์ ์ค์ ํ ์ ์๋๋ก ํ์ต๋๋ค. ์ด๋ฌํ ์ ํ์ ํตํด ๋คํธ์ํฌ ์์์ ๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋์์ผ๋ฉฐ, ๋คํธ์ํฌ ์ฅ์ ๋ฐ์ ์ ๋ ๋น ๋ฅด๊ฒ ๋ณต๊ตฌํ ์ ์์์ต๋๋ค. ํค-๊ฐ ์ ์ฅ์(key-value store)์์, DHT๋ ๋ค์ค ํ ๋ผ์ฐํ (multi-hop routing)์ ์ฌ์ฉํ์ฌ ํน์ ํค๋ฅผ ๋ด๋นํ๋ ์๋ฒ๋ฅผ ๊ฒฐ์ ํ๋ฉฐ, Cassandra๋ ์ผ๊ด์ฑ ํด์ฑ(consistent hashing)์ ์ฌ์ฉํฉ๋๋ค. ๋ ์์คํ ๋ชจ๋ ์ค์ ์ง์ค์ ์ปจํธ๋กค๋ฌ ์์ด ๋์ํฉ๋๋ค. ๋ฐ๋ฉด, Meta๋ ๋ ๋์ ๋ถํ ๋ถ์ฐ(load balancing)์ ์ํด ์ค์ ์ง์ค์ ์ปจํธ๋กค๋ฌ๋ฅผ ํ์ฉํ์ฌ ํค๊ฐ ํฌํจ๋ ์ค๋(shard)๋ฅผ ์๋ฒ์ ๋์ ์ผ๋ก ์ฌํ ๋นํ๋๋ก ์ค๊ณ๋ ์ค๋ฉ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋๋ ๋ฐ์ดํฐ ๋ถ๋ฐฐ ์์คํ ์์๋ BitTorrent์์ Owl๋ก ์ ํํ์ผ๋ฉฐ, Owl์ ํผ์ด(peer)๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ด๋์์ ๊ฐ์ ธ์ฌ์ง๋ฅผ ์ค์์์ ๊ฒฐ์ ํ์ฌ ๋ค์ด๋ก๋ ์๋๋ฅผ ํฌ๊ฒ ํฅ์์์ผฐ์ต๋๋ค. Owl๊ณผ Meta์ ์ฌ์ค WAN์ ๋ ๋์ ์์ฌ ๊ฒฐ์ ์ ์ํด ์ ์ด ํ๋ฉด(control plane)์ ์ค์ ์ง์คํํ์ง๋ง, ์ค์ ๋ฐ์ดํฐ ์ ์ก์ด๋ ๋ค์ด๋ก๋๋ฅผ ์ํํ๋ ๋ฐ์ดํฐ ํ๋ฉด(data plane)์ ์ฌ์ ํ ๋ถ์ฐ๋ ๋ฐฉ์์ ์ ์งํฉ๋๋ค. ์๊ท๋ชจ ๋ฉํ๋ฐ์ดํฐ ๋ถ๋ฐฐ๋ฅผ ์ํด, ์ด๊ธฐ์๋ Java๋ก ๊ตฌํ๋ 3๋จ๊ณ ๋ถ๋ฐฐ ํธ๋ฆฌ(distribution tree)๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ์ด ํธ๋ฆฌ์ ์ค๊ฐ ๋ ธ๋๋ ์ ์ฉ ํ๋ก์ ์๋ฒ(proxy server)์์ผ๋ฉฐ, ๋ฆฌํ ๋ ธ๋(leaf node)๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ๋ ์๋ก, ๋์ ์ผ๋ก ๊ฐ์ ๋ฐ ํํดํ ์ ์์์ต๋๋ค. ๊ทธ๋ฌ๋, ์ด ๊ตฌํ ๋ฐฉ์์ด ํ์ฅ์ฑ์ ํ๊ณ์ ๋๋ฌํ์, Meta๋ ์ค๊ฐ ๋ ธ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ๋ ์๋ก ๊ตฌ์ฑ๋ P2P(peer-to-peer) ๋ถ๋ฐฐ ํธ๋ฆฌ๋ก ์ ํํ์์ต๋๋ค. ์ด ๊ตฌ๋ ์๋ค์ ๋ค๋ฅธ ๊ตฌ๋ ์์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ์ญํ ์ ์ํํ์ต๋๋ค. ํ์ง๋ง ์๋ฐฑ๋ง ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ๋ ์ ์ค ์ผ๋ถ๋ ์ ์ฉ ์๋ฒ๊ฐ ์๋์๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ ๋ณ๋์ด ์ฌํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก, ์ด๋ฌํ ๊ตฌ๋ ์๋ฅผ ์ค๊ฐ ๋ ธ๋๋ก ํ์ฉํ์ฌ ํธ๋ํฝ์ ์ ๋ฌํ๋ ๋ฐฉ์์ ์ ๋ขฐ์ฑ์ด ๋ฎ์์ก์ผ๋ฉฐ, ์ด์ ๋ฐ๋ผ ๋น๋ฒํ๊ณ ์๊ฐ์ด ๋ง์ด ์์๋๋ ๋๋ฒ๊น ์ด ํ์ํ๊ฒ ๋์์ต๋๋ค. ๊ฒฐ๊ตญ, Meta๋ ๋ช ๋ ๊ฐ์ ์ด์ ๊ฒฝํ ๋์ P2P ๋ถ๋ฐฐ ํธ๋ฆฌ๋ฅผ ํ๊ธฐํ๊ณ , ์ ์ฉ ํ๋ก์ ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ์กด ์ํคํ ์ฒ๋ก ๋์๊ฐ์ต๋๋ค. ๋ํ, ๊ธฐ์กด Java ๊ตฌํ์ ์ฑ๋ฅ์ด ๋ ๋ฐ์ด๋ C++ ๊ตฌํ์ผ๋ก ๋์ฒดํ์ฌ ์์ฒ๋ง ๋ช ์ ๊ตฌ๋ ์ ๊ท๋ชจ์๋ ์ํํ๊ฒ ํ์ฅ๋ ์ ์๋๋ก ๊ฐ์ ํ์ต๋๋ค.
Insight 9: ๋ฐ์ดํฐ์ผํฐ ํ๊ฒฝ์์๋ ์ค์ ์ง์ค์ ์ปจํธ๋กค๋ฌ๊ฐ ๋ ๋จ์ํ๋ฉฐ, ๋ ๋์ ํ์ง์ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์๊ธฐ ๋๋ฌธ์ Meta๋ ๋ถ์ฐํ ์ปจํธ๋กค๋ฌ๋ณด๋ค ์ค์ ์ง์ค์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ ํธํฉ๋๋ค. ๋ง์ ๊ฒฝ์ฐ, ์ค์ ์ง์ค์ ์ ์ด ํ๋ฉด(control plane)๊ณผ ๋ถ์ฐํ ๋ฐ์ดํฐ ํ๋ฉด(data plane)์ ๊ฒฐํฉํ ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทผ ๋ฐฉ์์ด ์ต์ ์ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.
Case Study: Scalable Service Mesh ์ด ์น์ ์์๋ Meta์ ์๋น์ค ๋ฉ์(Service Mesh)์ธ ServiceRouter๋ฅผ ์ฌ๋ก ์ฐ๊ตฌ๋ก ์ฌ์ฉํ์ฌ ํ์ฅ ๊ฐ๋ฅํ ์์คํ ์ค๊ณ ๋ฐฉ์์ ์ค๋ช ํ๊ณ , ์ค์ ์ง์ค์ ์ปจํธ๋กค๋ฌ์ ๋ถ์ฐํ ๋ฐ์ดํฐ ํ๋ฉด(data plane)์ด ๊ฒฐํฉ๋ ์ํคํ ์ฒ๊ฐ ๋ฐ์ดํฐ์ผํฐ ํ๊ฒฝ์์ ํจ๊ณผ์ ์ผ๋ก ํ์ฅ๋ ์ ์์์ ๋ณด์ฌ์ค๋๋ค.ServiceRouter๋ ์ด๋น ์์ญ์ต ๊ฐ์ RPC๋ฅผ ์๋ฐฑ๋ง ๊ฐ์ L7(Application Layer) ๋ผ์ฐํฐ๋ฅผ ํตํด ๋ผ์ฐํ ํฉ๋๋ค. ๊ทธ๋ฆผ 3์ ์ ๊ณ์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์๋น์ค ๋ฉ์ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ฉฐ, ์ฌ๊ธฐ์ ๊ฐ ์๋น์ค ํ๋ก์ธ์ค์๋ RPC ์์ฒญ์ ๋ผ์ฐํ ํ๋ L7 ์ฌ์ด๋์นด ํ๋ก์(sidecar proxy)๊ฐ ํจ๊ป ์คํ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์๋ฒ 1์์ ์คํ ์ค์ธ ์๋น์ค A๊ฐ ์๋น์ค B์ ์์ฒญ์ ๋ณด๋ผ ๋, ์๋ฒ 1์ ํ๋ก์๋ ํด๋น ์์ฒญ์ ์๋ฒ 2, 3, 4์ ๋ถ์ฐํ์ฌ ๋ถํ๋ฅผ ๊ท ํ ์๊ฒ ๋ฐฐ๋ถํฉ๋๋ค. ์ด ๋ฐฉ์์ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์์ง๋ง, ํ์ดํผ์ค์ผ์ผ ์ธํ๋ผ์์๋ ํ์ฅ์ฑ์ด ๋ถ์กฑํฉ๋๋ค. ๊ทธ ์ด์ ๋ ์ค์ ์ปจํธ๋กค๋ฌ๊ฐ ์๋ฐฑ๋ง ๊ฐ์ ์ฌ์ด๋์นด ํ๋ก์์ ๋ผ์ฐํ ํ ์ด๋ธ์ ์ง์ ๊ด๋ฆฌํ๊ธฐ์๋ ๋ถ๋ด์ด ํฌ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ค์ ์ปจํธ๋กค๋ฌ๋ ๊ธ๋ก๋ฒ ๋ผ์ฐํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ๊ณผ ๊ฐ L7 ๋ผ์ฐํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ์ ๋์์ ์ํํฉ๋๋ค. ํ์ฅ์ฑ์ ํ๋ณดํ๊ธฐ ์ํด, Meta๋ ๊ธ๋ก๋ฒ ๋ผ์ฐํ ๋ฉํ๋ฐ์ดํฐ ์์ฑ ๊ธฐ๋ฅ์ ์ค์ ์ปจํธ๋กค๋ฌ์ ์ ์งํ๊ณ , ๊ฐ๋ณ L7 ๋ผ์ฐํฐ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ L7 ๋ผ์ฐํฐ ์์ฒด๊ฐ ์ํํ๋๋ก ์ด์ ํ์ฌ, ๊ฐ ๋ผ์ฐํฐ๊ฐ ์ค์ค๋ก ์ค์ ํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ํ์์ต๋๋ค. ๊ทธ๋ฆผ 4๋ ServiceRouter์ ํ์ฅ ๊ฐ๋ฅํ ์ํคํ ์ฒ๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์์ ๊ณ์ธต์์๋ ์๋ก ๋ค๋ฅธ ์ปจํธ๋กค๋ฌ๋ค์ด ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ณ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์๋น์ค ๋ฑ๋ก, ๋คํธ์ํฌ ์ง์ฐ(latency) ์ธก์ ๊ฐ ์ ๋ฐ์ดํธ, ๊ทธ๋ฆฌ๊ณ ์๋น์ค๋ณ ์ง์ญ ๊ฐ ๋ผ์ฐํ ํ ์ด๋ธ ๊ณ์ฐ ๋ฑ์ ๋ด๋นํฉ๋๋ค. ๊ฐ ์ปจํธ๋กค๋ฌ๋ ์ค์ ๋ผ์ฐํ ์ ๋ณด ๋ฐ์ดํฐ๋ฒ ์ด์ค(RIB, Routing Information Base)๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ฉฐ, ๊ฐ๋ณ L7 ๋ผ์ฐํฐ์ ์ค์ ๋ฐ ๊ด๋ฆฌ๋ ์ํํ์ง ์์ต๋๋ค. RIB๋ Paxos ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฉฐ, ์ค๋ฉ(sharding)์ ํตํด ํ์ฅ ๊ฐ๋ฅํฉ๋๋ค. RIB ๋๋ถ์ ์ปจํธ๋กค๋ฌ๋ ์ํ๋ฅผ ์ ์งํ์ง ์๋(stateless) ๋ฐฉ์์ผ๋ก ๋์ํ ์ ์์ผ๋ฉฐ, ์ค๋ฉ์ ํตํด ์ฝ๊ฒ ํ์ฅํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ๊ฐ์ ์ปจํธ๋กค๋ฌ ์ธ์คํด์ค๊ฐ ๋์์ ๋ค์ํ ์๋น์ค์ ์ง์ญ ๊ฐ ๋ผ์ฐํ ํ ์ด๋ธ์ ๊ณ์ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ฆผ 4์ ์ค๊ฐ ๊ณ์ธต์์, ๋ถ๋ฐฐ ๊ณ์ธต(distribution layer)์ ์์ฒ ๊ฐ์ RIB ๋ณต์ ๋ณธ(replica)์ ํ์ฉํ์ฌ ์๋ฐฑ๋ง ๊ฐ์ L7 ๋ผ์ฐํฐ๋ก๋ถํฐ ๋ฐ์ํ๋ ์ฝ๊ธฐ ํธ๋ํฝ์ ์ฒ๋ฆฌํฉ๋๋ค. ํ์ ๊ณ์ธต์์๋, RIB์ ์ง์์ ๋ฐ๋ผ ๊ฐ L7 ๋ผ์ฐํฐ๊ฐ ์ค์ค๋ก ์ค์ ์ ๊ตฌ์ฑํ๋ฉฐ, ์ ์ด ํ๋ฉด(control plane)์ด ์ง์ ๊ฐ์ ํ ํ์๊ฐ ์์ต๋๋ค. ์ด ์์คํ ์ ๋ค์ํ ์ ํ์ L7 ๋ผ์ฐํฐ๋ฅผ ์ง์ํ๋ฉฐ, ์ฌ๊ธฐ์๋ ๋ก๋ ๋ฐธ๋ฐ์(load balancer), ๋ผ์ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํฌํจ๋ ์๋น์ค, ๊ทธ๋ฆฌ๊ณ ์ฌ์ด๋์นด ํ๋ก์๊ฐ ํฌํจ๋ฉ๋๋ค. ServiceRouter์ ์ฌ๋ก์์ ๋ณผ ์ ์๋ฏ์ด, Meta๋ ์ค์ ์ง์ค์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ๋ฉด์๋ ํ์ฅ์ฑ์ ํ๋ณดํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ํด ์ํ๋ฅผ ์ ์งํ์ง ์๋(stateless) ์ปจํธ๋กค๋ฌ, ์ปจํธ๋กค๋ฌ ์ค๋ฉ, ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ณ L7 ๋ผ์ฐํฐ ๊ด๋ฆฌ๋ฅผ ์ค์ ์ปจํธ๋กค๋ฌ์์ ์ ๊ฑฐํ๋ ๋ฑ์ ๊ธฐ์ ์ ํ์ฉํฉ๋๋ค.
Future Directions
Meta์ ํ์ดํผ์ค์ผ์ผ ์ธํ๋ผ๋ ๋งค์ฐ ๋ณต์กํ์ง๋ง, ๋ณธ ๋ฌธ์์์๋ ์ฃผ์ ๊ฐ๋ฐ ์ธ์ฌ์ดํธ๋ฅผ ์ค์ฌ์ผ๋ก ๊ฐ๋ตํ๊ณ ์์ ๊ฐ๋ ์์ฃผ์ ๊ฐ์๋ฅผ ์ ๊ณตํ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก, ํ์ดํผ์ค์ผ์ผ ์ธํ๋ผ์ ์ ์ฌ์ ์ธ ๋ฏธ๋ ํธ๋ ๋์ ๋ํ Meta์ ๊ฒฌํด๋ฅผ ๊ณต์ ํ๊ณ ์ ํฉ๋๋ค.
AI
AI ์ํฌ๋ก๋๋ ํ์ฌ ๋ฐ์ดํฐ์ผํฐ์์ ๊ฐ์ฅ ํฐ ๋น์ค์ ์ฐจ์งํ๋ ์ํฌ๋ก๋ ์นดํ ๊ณ ๋ฆฌ๊ฐ ๋์์ต๋๋ค. Meta๋ ์ด๋ฒ 10๋ ์ด ๋๋๊ธฐ ์ ์ ๋ฐ์ดํฐ์ผํฐ ์ ๋ ฅ ์๋น์ ์ ๋ฐ ์ด์์ด AI ์ํฌ๋ก๋์ ํ ๋น๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. AI๋ ๋์ ์์ ์๋ชจ(resource-intensive)์ ๊ณ ๋์ญํญ ๋คํธ์ํฌ ์๊ตฌ ์ฌํญ ๋ฑ ๋ ํนํ ํน์ฑ์ ๊ฐ์ง๋ฏ๋ก, ์ธํ๋ผ์ ๋ชจ๋ ์ธก๋ฉด์ ๊ทผ๋ณธ์ ์ผ๋ก ๋ณํ์ํฌ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ์ง๋ 20๋ ๋์ ํ์ดํผ์ค์ผ์ผ ์ธํ๋ผ๋ ์ ๋น์ฉ ๋ฒ์ฉ ์๋ฒ๋ฅผ ๋๋์ผ๋ก ํ์ฉํ๋ ์ค์ผ์ผ ์์(scale-out) ์ ๊ทผ ๋ฐฉ์์ ํตํด ์ฑ๊ณต์ ๊ฑฐ๋์์ต๋๋ค. ํ์ง๋ง ํฅํ AI ํด๋ฌ์คํฐ๋ ๊ณผ๊ฑฐ ์ํผ์ปดํจํฐ์์ ์ฌ์ฉ๋ ์ค์ผ์ผ ์ (scale-up) ๋ฐฉ์์ผ๋ก ๋ฐ์ ํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋๊ท๋ชจ ๋จธ์ ๋ฌ๋ ํ์ต์ ์ํด RDMA(Remote Direct Memory Access)๋ฅผ Ethernet์ ํตํด ํ์ฉํ์ฌ ๋์ ๋์ญํญ๊ณผ ๋ฎ์ ์ง์ฐ ์๊ฐ์ ์ ๊ณตํ๋ ๋ฐฉ์์ด ์ด์ ํด๋นํฉ๋๋ค. Meta๋ AI๋ฅผ ์ํ ์ ์ฒด ์คํ์ ๊ณต๋ ์ค๊ณ(co-design)ํ๋ ์ ๊ทผ ๋ฐฉ์์ ํํ๊ณ ์์ผ๋ฉฐ, ์ฌ๊ธฐ์๋ PyTorch, ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ, AI ์นฉ, ๋คํธ์ํฌ, ๋ฐ์ดํฐ์ผํฐ, ์๋ฒ, ์คํ ๋ฆฌ์ง, ์ ๋ ฅ ๋ฐ ๋๊ฐ ์์คํ ์ด ํฌํจ๋ฉ๋๋ค.
Domain-Specific Hardware
2000๋ ๋ ์ดํ ๊ฐ์ํ๋ ํ๋์จ์ด ๋ค์์ฑ์ด ๋ค์ ์ฆ๊ฐํ ๊ฒ์ผ๋ก ์์๋๋ฉฐ, AI ํ์ต ๋ฐ ์ถ๋ก , ๊ฐ์ํ, ๋น๋์ค ์ธ์ฝ๋ฉ, ์ํธํ, ์์ถ, ๊ณ์ธตํ ๋ฉ๋ชจ๋ฆฌ(tiered memory), ๋คํธ์ํฌ ๋ด ๋ฐ ์คํ ๋ฆฌ์ง ๋ด ์ฒ๋ฆฌ์ ๊ฐ์ ๋ค์ํ ๋ชฉ์ ์ ์ํ ๋ง์ถคํ ๋ฐ ํน์ ํ๋์จ์ด๊ฐ ํ์ฐ๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ๋ณํ๋ ๊ท๋ชจ์ ๊ฒฝ์ (economies of scale)๋ก ์ธํด ํ์ดํผ์ค์ผ์ผ ๊ธฐ์ ๋ค์ด ๋๋์ ํน์ ํ๋์จ์ด๋ฅผ ์ค๊ณํ๊ณ ๋ฐฐํฌํ์ฌ ๋น์ฉ์ ์ ๊ฐํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฌ๋, ์ด๋ ๋งค์ฐ ์ด์ง์ ์ธ(homogeneous) ํ๋์จ์ด ๊ตฌ์ฑ์ ๊ด๋ฆฌํ๊ณ ํ์ฉํด์ผ ํ๋ ์ํํธ์จ์ด ์คํ์ ์๋ก์ด ๋์ ๊ณผ์ ๋ฅผ ์ ์ํ ๊ฒ์ ๋๋ค.
Edge Datacenters
Meta๋ ๋ฉํ๋ฒ์ค(Metaverse) ๋ฐ ์ฌ๋ฌผ์ธํฐ๋ท(IoT) ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์ด ์๋นํ ์ฆ๊ฐํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํด๋ผ์ฐ๋ ๊ฒ์(Cloud Gaming)์ ๊ทธ๋ํฝ ๋ ๋๋ง์ ์ฌ์ฉ์ ๊ธฐ๊ธฐ์์ ์ฃ์ง ๋ฐ์ดํฐ์ผํฐ(Edge Datacenter)์ GPU ์๋ฒ๋ก ์ด๋์ํค๋ฉฐ, ์ด ๊ณผ์ ์์ 25ms ์ดํ์ ๋คํธ์ํฌ ์ง์ฐ ์๊ฐ์ด ํ์ํฉ๋๋ค. ์ค์๊ฐ ์๋ต์ฑ์ ๋ํ ์์ ์ฆ๊ฐ๋ก ์ธํด ์ฃ์ง ๋ฐ์ดํฐ์ผํฐ์ ์๋๊ณผ ๊ท๋ชจ๊ฐ ํฌ๊ฒ ์ฑ์ฅํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.์ด์ ๋ฐ๋ผ, ์ธํ๋ผ ์ ์ด ํ๋ฉด(control plane)์ ๋์ฑ ๋ถ์ฐ๋ ๋ฐ์ดํฐ์ผํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋๋ก ์ ์ํด์ผ ํ๋ฉฐ, ์ด์์ ์ผ๋ก๋ Global-DaaC๋ฅผ ๊ฐ์ ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์๊ฐ ๋ถ์ฐ๋ ์ธํ๋ผ์ ๋ณต์ก์ฑ์ ์ ๊ฒฝ ์ฐ์ง ์๋๋ก ๋ณดํธํด์ผ ํฉ๋๋ค.
Developer Productivity
์ง๋ 20๋ ๋์ ์๋ํ ๋๊ตฌ๋ ์์คํ ๊ด๋ฆฌ์(System Administrator)์ ์์ฐ์ฑ์ ํฌ๊ฒ ํฅ์์์ผ, ์๋ฒ ๋๋น ๊ด๋ฆฌ์ ๋น์จ์ด ์๋นํ ์ฆ๊ฐํ์ต๋๋ค. ๋ฐ๋ฉด, ์ผ๋ฐ์ ์ธ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ฌ์ ํ ๋ ธ๋ ์ง์ฝ์ ์ด๋ฉฐ, ์๋์ ์ผ๋ก ์์ฐ์ฑ ํฅ์์ด ๋๋ฆฐ ํธ์ ๋๋ค. ์ด๋ฒ 10๋ ๋์ ์ด๋ฌํ ์ถ์ธ์ ๋ณํ๊ฐ ์์ ๊ฒ์ผ๋ก ์์๋๋ฉฐ, ๋ ๊ฐ์ง ์ด์ ๋ก ์ธํด ๊ฐ๋ฐ์์ ์์ฐ์ฑ์ด ๊ธ๊ฒฉํ ํฅ์๋ ๊ฒ์ ๋๋ค. ์ฒซ์งธ, AI ๊ธฐ๋ฐ ์ฝ๋ ์์ฑ ๋ฐ ๋๋ฒ๊น (AI-powered code generation and debugging), ๋์งธ, ํน์ ์ฐ์ (vertical domains)์์ ์์ ํ ํตํฉ๋ ์๋ฒ๋ฆฌ์ค(serverless) ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ๋๋ค. Meta์ FrontFaaS๋ ํ์์ ์์์ด๋ฉฐ, ์์ผ๋ก ๋ค์ํ ์ฐ์ ๋ถ์ผ์์ ์์ฐ์ฑ์ ๊ทน๋ํํ๋ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ด ๋ฑ์ฅํ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ์ง๋ 20๋ ๋์ ํ์ดํผ์ค์ผ์ผ ์ธํ๋ผ์์ ์ด๋ฃจ์ด์ง ๋น ๋ฅธ ํ์ ์ ์์ผ๋ก๋ ๊ณ์๋ ๊ฒ์ผ๋ก ์์๋๋ฉฐ, ํนํ AI์ ๋ฐ์ ์ด ์ด๋ฅผ ์ฃผ๋ํ ๊ฒ์ ๋๋ค. Meta๋ ํ์ดํผ์ค์ผ์ผ ๊ธฐ์ ๋ค์ด ์ธ์ฌ์ดํธ๋ฅผ ๊ณต์ ํจ์ผ๋ก์จ, ์ปค๋ฎค๋ํฐ ์ ์ฒด๊ฐ ๋ฐ์ ์๋๋ฅผ ๋์ฑ ๊ฐ์ํํ ์ ์๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค.
Acknowledgments
๋ณธ ๋ฌธ์๋ 10๋ ์ด์์ ๊ฑธ์ณ ์์ฒ ๋ช ์ Meta ์ธํ๋ผ ์์ง๋์ด๋ค์ด ์ํํ ์์ ์ ์์ฝํ ๊ฒ์ ๋๋ค. ์ด ๋ฌธ์์ ์ค๋ช ๋ ์ผ๋ถ ์์คํ ์๋ ์ ์๊ฐ ์ง์ ๊ธฐ์ฌํ์ง๋ง, ์ง์ ๊ด์ฌํ์ง ์์ ์์คํ ๋ ๋ง์ด ํฌํจ๋์ด ์์ต๋๋ค.
References
- Abhashkumar, A. et al. Running BGP in data centers at scale. In Proceedings of the 18th USENIX Symp. on Networked Systems Design and Implementation. USENIX, (2021), 65โ81.
- Andreyev, A. Introducing data center fabric, the next-generation Facebook data center network. Engineering at Meta, (2014); https://engineering. fb.com/production-engineering/introducing-data- center-fabric-the-next-generation-facebook-data- center-network/
- Balakrishnan, M. et al. Virtual consensus in Delos. In Proceedings of the 14th USENIX Symp. on Operating Systems Design and Implementation. USENIX, (2020), 617โ632.
- Barroso, L.A., Hรถlzle, U., and Ranganathan, P. The Datacenter as a Computer: Designing Warehouse- Scale Machines. Springer Nature, (2019).
- Bronson, N. et al. TAO: Facebookโs distributed data store for the social graph. In Proceedings of the 2013 USENIX Annual Technical Conf. USENIX, (2013), 49โ60.
- Campbell, L. and Tang, C. How Meta built the infrastructure for Threads. Engineering at Meta, (2023); https://engineering.fb.com/2023/12/19/core- infra/how-meta-built-the-infrastructure-for-threads/
- Chen, G.J. et al. Realtime data processing at Facebook. In Proceedings of the 2016 Intern. Conf. on Management of Data. ACM, (6), 1087โ1098.
- Choi, S. et al. FBOSS: Building switch software at scale. In Proceedings of the 2018 Conf. of the ACM Special Interest Group on Data Communication. ACM, (2018), 342โ356.
- Chou, D. Tajji: Managing global user traffic for large- scale Internet services at the edge. In Proceedings of the 27th Symp. on Operating Systems Principles. ACM, (2019), 430โ446.
- Choudhury, A. et al. MAST: Global Scheduling of ML Training across Geo-Distributed Datacenters at Hyper- scale. In Proceedings of the 18th USENIX Symp. on Operating Systems Design and Implementation. USENIX, (2024).
- Chow, M. et al. ServiceLab: Preventing tiny performance regressions at hyperscale through pre- production testing. In Proceedings of the 28th Symp. on Operating Systems Principles. ACM, (2024).
- Denis, M. et al. EBB: Reliable and evolvable express backbone network in Meta. In Proceedings of the ACM SIGCOMM 2023 Conf. ACM, (2023), 346โ359.
- Eriksen, M. et al. Global capacity management with Flux. In Proceedings of the 17th USENIX Symp. on Operating Systems Design and Implementation. USENIX, (2023).
- Ferreira, J. et al. Fabric Aggregator: A flexible solution to our traffic demand. Engineering at Meta, (2014); https://engineering.fb.com/data-center- engineering/fabric-aggregator-a-flexible-solution-to- our-traffic-demand/
- Firoozshahian, A. et al. MTIA: First generation silicon targeting Metaโs recommendation systems. In Proceedings of the 50th Annual Intern. Symp. on Computer Architecture. ACM, (2023), 1โ13.
- Flinn, J. et al. Owl: Scale and flexibility in distribution of hot content. In Proceedings of the 16th USENIX Symp. on Operating Systems Design and Implementation. USENIX, (2022), 1โ15; https://www. usenix.org/conference/osdi22/presentation/flinn
- Frachtenberg, E. et al. Thermal design in the open compute datacenter. In Proceedings of the 13th InterSociety Conf. on Thermal and Thermomechanical Phenomena in Electronic Systems. IEEE, (2012), 530โ538.
- Gangidi, A. et al. RDMA over Ethernet for distributed training at Meta scale. In Proceedings of the ACM SIGCOMM 2024 Conf. ACM, (2024), 57โ70.
- Grubic, B. et al. Conveyor: One-tool-fits-all continuous software deployment at Meta. In Proceedings of the 17th USENIX Symp. on Operating Systems Design and Implementation. USENIX, (2023).
- Guo, M. et al. MobileConfig: Holistic configuration management for mobile apps. In Proceedings of the 21st USENIX Symp. on Networked Systems Design and Implementation. USENIX, (2024).
- Heo, T. et al. IOCost: Block io control for containers in datacenters. In Proceedings of the 27th ACM Intern. Conf. on Architectural Support for Programming Languages and Operating Systems. ACM, (2022), 595โ608.
- Kumar, N. et al. Optimizing resource allocation in hyperscale datacenters: Scalability, usability, and experiences. In Proceedings of the 18th USENIX Symp. on Operating Systems Design and Implementation. USENIX, (2024).
- Lee, S. et al. Shard Manager: A generic shard management framework for geodistributed applications. In Proceedings of the 28th Symp. on Operating Systems Principles. ACM, (2021).
- Masti, S. How we built a general purpose key value store for Facebook with ZippyDB. (2021); https:// engineering.fb.com/2021/08/06/core-data/zippydb/
- Meza, J.J. et al. Defcon: Preventing overload with graceful feature degradation. In Proceedings of the 17th USENIX Symp. on Operating Systems Design and Implementation. USENIX, (2023), 607โ622.
- Newell, A. et al. RAS: Continuously optimized region- wide datacenter resource allocation. In Proceedings of the 28th Symp. on Operating Systems Principles. ACM, (2021).
- Nishtala, R. et al. Scaling Memcache at Facebook. In Proceedings of the 10th USENIX Symp. on Networked Systems Design and Implementation. USENIX, (2013), 385โ398.
- Open Compute Project. (2024); https://www. opencompute.org/
- Pan, S. Facebookโs Tectonic filesystem: Efficiency from exascale. In Proceedings of the 19th USENIX Conf. on File and Storage Technologies. USENIX, (2021), 217โ231.
- Sahraei, A. et al. XFaaS: Hyperscale and low cost serverless functions at Meta. In Proceedings of the 29th Symp. on Operating Systems Principles. ACM, (2023), 231โ246.
- Saokar, H. et al. ServiceRouter: A scalable and minimal cost service mesh. In Proceedings of the 17th USENIX Symp. on Operating Systems Design and Implementation. USENIX, (2023).
- Schlinker, B. et al. Engineering egress with Edge Fabric: Steering oceans of content to the world. In Proceedings of the Conf. of the ACM Special Interest Group on Data Communication. ACM, (2017), 418โ431.
- Tang, C. et al. Holistic configuration management at Facebook. In Proceedings of the 25th Symp. on Operating Systems Principles. ACM, (2015), 328โ343.
- Tang, C. et al. Twine: A unified cluster management system for shared infrastructure. In Proceedings of the 14th USENIX Symp. on Operating Systems Design and Implementation. USENIX, (2020), 787โ803.
- Veeraraghavan, K. et al. Kraken: Leveraging live traffic tests to identify and resolve resource utilization bottlenecks in large scale web services. In Proceedings of the 12th USENIX Symp. on Operating Systems Design and Implementation. USENIX, (2016), 635โ651.
- Veeraraghavan, K. et al. Maelstrom: Mitigating datacenter-level disasters by draining interdependent traffic safely and efficiently. In Proceedings of the 13th USENIX Symp. on Operating Systems Design and Implementation. USENIX, (2018), 373โ389.
- Weiner, J. et al. TMO: Transparent memory offloading in datacenters. In Proceedings of the 27th ACM Intern. Conf. on Architectural Support for Programming Languages and Operating Systems. ACM, (2022), 609โ621.
- Wu, Q. et al. Dynamo: Facebookโs data center- wide power management system. ACM SIGARCH Computer Architecture News 44, 3 (2016), 469โ480.
- Yoon, D.Y. et al. FBDetect: Catching tiny performance regressions at hyperscale through in-production monitoring. In Proceedings of the 30th Symp. on Operating Systems Principles. ACM, (2024).
- Yu, K. and Kumar, R. Viewing the world as a computer: Global capacity management. Engineering at Meta, (2022); https://engineering.fb.com/2022/09/06/data- center-engineering/viewing-the-world-as-a-computer- global-capacity-management/