Facebook์€ Buck2 ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

Facebook์€ ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋งค์šฐ ํฐ ์ €์žฅ์†Œ์—์„œ ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋นŒ๋“œ ์‹œ์Šคํ…œ์ธ Buck2๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ตฌํ˜„๊ณผ ์ด์ „์— Facebook์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ Buck ์‹œ์Šคํ…œ์˜ ์ฃผ์š” ์ฐจ์ด์ ์€ Java ๋Œ€์‹  Rust ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์–ด์…ˆ๋ธ”๋ฆฌ ํ”„๋กœ์„ธ์Šค์˜ ํšจ์œจ์„ฑ๊ณผ ์ƒ์‚ฐ์„ฑ์ด ํฌ๊ฒŒ ์ฆ๊ฐ€ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋™์ผํ•œ ์ธํ”„๋ผ์˜ ๋‚ด๋ถ€ ํ…Œ์ŠคํŠธ์—์„œ Buck2๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•จ). Buck๋ณด๋‹ค ๋‘ ๋ฐฐ ๋น ๋ฅธ ์ž‘์—…) ์ฝ”๋“œ๋Š” Apache 2.0 ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

์ด ์‹œ์Šคํ…œ์€ ํŠน์ • ์–ธ์–ด์˜ ์ฝ”๋“œ ์–ด์…ˆ๋ธ”๋ฆฌ์— ์–ฝ๋งค์ด์ง€ ์•Š๊ณ  ์ฆ‰์‹œ C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell ๋ฐ OCaml ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ์ ํŠธ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. , Facebook์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Bazel๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Python์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” Starlark ์–ธ์–ด๋Š” ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์„ค๊ณ„ํ•˜๊ณ  ์Šคํฌ๋ฆฝํŠธ ๋ฐ ๊ทœ์น™์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Starlark๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ด์…ˆ๋ธ”๋ฆฌ ์‹œ์Šคํ…œ์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๊ณ  ์–ด์…ˆ๋ธ”๋ฆฌ๋œ ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉ๋˜๋Š” ํŠน์ • ์–ธ์–ด๋ฅผ ์ถ”์ƒํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ ์บ์‹ฑ, ์ž‘์—… ๋ณ‘๋ ฌํ™”, ์ž‘์—… ์›๊ฒฉ ์‹คํ–‰ ์ง€์›(์›๊ฒฉ ๋นŒ๋“œ ์‹คํ–‰)์„ ํ†ตํ•ด ๊ณ ์„ฑ๋Šฅ์ด ๋‹ฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์–ด์…ˆ๋ธ”๋ฆฌ ํ™˜๊ฒฝ์—์„œ๋Š” "๋ฐ€ํ์„ฑ"์ด๋ผ๋Š” ๊ฐœ๋…์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์–ด์…ˆ๋ธ”๋ฆฌ๋œ ์ฝ”๋“œ๋Š” ์™ธ๋ถ€ ์„ธ๊ณ„์™€ ์ฐจ๋‹จ๋˜๊ณ , ์–ด์…ˆ๋ธ”๋ฆฌ ํ”„๋กœ์„ธ์Šค ์ค‘์— ์™ธ๋ถ€์—์„œ ์•„๋ฌด๊ฒƒ๋„ ๋กœ๋“œ๋˜์ง€ ์•Š์œผ๋ฉฐ, ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์—์„œ ์ž‘์—…์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค( ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐœ๋ฐœ์ž ์ปดํ“จํ„ฐ์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์กฐ๋ฆฝํ•œ ๊ฒฐ๊ณผ๋Š” ์—ฐ์† ํ†ตํ•ฉ ์„œ๋ฒ„์˜ ๋นŒ๋“œ์™€ ์™„์ „ํžˆ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์˜์กด์„ฑ์ด ๋ถ€์กฑํ•œ ์ƒํ™ฉ์€ Buck2์—์„œ๋Š” ์˜ค๋ฅ˜๋กœ ์ธ์‹๋ฉ๋‹ˆ๋‹ค.

Buck2์˜ ์ฃผ์š” ๊ธฐ๋Šฅ:

  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ง€์› ๊ทœ์น™๊ณผ ์–ด์…ˆ๋ธ”๋ฆฌ ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ์€ ์™„์ „ํžˆ ๋ณ„๊ฐœ์ž…๋‹ˆ๋‹ค. ๊ทœ์น™์€ Starlark ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  Starlark ํˆดํ‚ท๊ณผ ๊ตฌํ˜„์€ Rust๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์–ด์…ˆ๋ธ”๋ฆฌ ์‹œ์Šคํ…œ์€ ๋‹จ์ผ ์ฆ๋ถ„ ์ข…์†์„ฑ ๊ทธ๋ž˜ํ”„(๋‹จ๊ณ„ ๊ตฌ๋ถ„ ์—†์Œ)๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ Buck ๋ฐ Bazel์— ๋น„ํ•ด ์ž‘์—… ๋ณ‘๋ ฌํ™” ๊นŠ์ด๋ฅผ ๋†’์ด๊ณ  ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ์˜ค๋ฅ˜๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • GitHub์— ๊ฒŒ์‹œ๋œ Buck2 ์ฝ”๋“œ์™€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ง€์› ๊ทœ์น™์€ Facebook ์ธํ”„๋ผ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋‚ด๋ถ€ ๋ฒ„์ „๊ณผ ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค(์œ ์ผํ•œ ์ฐจ์ด์ ์€ Facebook์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ ๋ฐ ์–ด์…ˆ๋ธ”๋ฆฌ ์„œ๋ฒ„์˜ ๋ฒ„์ „์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค).
  • ์กฐ๋ฆฝ ์‹œ์Šคํ…œ์€ ์›๊ฒฉ ์„œ๋ฒ„์—์„œ ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์›๊ฒฉ ์ž‘์—… ์‹คํ–‰ ์‹œ์Šคํ…œ๊ณผ์˜ ํ†ตํ•ฉ์„ ์—ผ๋‘์— ๋‘๊ณ  ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์›๊ฒฉ ์‹คํ–‰ API๋Š” Bazel๊ณผ ํ˜ธํ™˜๋˜๋ฉฐ Buildbarn ๋ฐ EngFlow์™€์˜ ํ˜ธํ™˜์„ฑ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์ณค์Šต๋‹ˆ๋‹ค.
  • ์ „์ฒด ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ์ด ํ‘œ์‹œ๋˜๋Š” ๊ฐ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ์˜ ํ†ตํ•ฉ์ด ์ œ๊ณต๋˜์ง€๋งŒ ์‹ค์ œ๋กœ ์ž‘์—…์€ ์ €์žฅ์†Œ ์ผ๋ถ€์˜ ํ˜„์žฌ ๋กœ์ปฌ ์กฐ๊ฐ์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค(๊ฐœ๋ฐœ์ž๋Š” ์ „์ฒด ์ €์žฅ์†Œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ํ•„์š”ํ•œ ํŒŒ์ผ๋งŒ ๋ณผ ์ˆ˜ ์žˆ์Œ) ์•ก์„ธ์Šค๋˜๋Š” ํ•ญ๋ชฉ์€ ์ €์žฅ์†Œ์—์„œ ์ถ”์ถœ๋ฉ๋‹ˆ๋‹ค. Sapling์—์„œ ์‚ฌ์šฉํ•˜๋Š” EdenFS ๊ธฐ๋ฐ˜์˜ VFS์™€ Git LFS๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€