Unison์ ํต์ฌ ์์ด๋์ด์ธ ์ฝํ ์ธ ๊ธฐ๋ฐ ์ฃผ์ ์ง์ (code being content-addressed)๊ณผ ๊ทธ๋ก๋ถํฐ ์ป๋ ๋ถ์ฐ ํ๋ก๊ทธ๋๋ฐ ๋จ์ํ, ๋น๋ ์ ๊ฑฐ, ์์กด์ฑ ์ถฉ๋ ํด์, ํ์ ์ด ์๋ ๋ด๊ตฌ์ฑ ์ ์ฅ์, ๋ ํ๋ถํ ๋๊ตฌ, ๊ตฌ์กฐํ๋ ๋ฆฌํฉํฐ๋ง ๊ฐ์ ์ด์ ์ ์ค๋ช ํฉ๋๋ค.
URL: https://www.unison-lang.org/docs/the-big-idea/#simplifying-distributed-programming
Title: docs Unison | ๐ก The big idea ยท Unison programming language
์๋๋ Unison์ ํฐ ์์ด๋์ด์ด๋ฉฐ, ๊ทธ์ ๋ฐ๋ฅธ ์ด์ ์ผ๋ถ๋ฅผ ํจ๊ป ์ค๋ช ํฉ๋๋ค:
๐ง
๊ฐ Unison ์ ์(definition)๋ **๊ตฌ๋ฌธ ํธ๋ฆฌ์ ํด์(hash)**๋ก ์๋ณ๋ฉ๋๋ค.
๋ค๋ฅด๊ฒ ๋งํ๋ฉด, Unison ์ฝ๋๋ ์ฝํ ์ธ ๊ธฐ๋ฐ ์ฃผ์ ์ง์ (content-addressed)์ ๋๋ค.
์๋ฅผ ๋ค์ด, Nat์ ๋ํ increment ํจ์๊ฐ ์์ต๋๋ค:
unisonincrement : Nat -> Nat increment n = n + 1
์ฐ๋ฆฌ๋ ์ด ํจ์์ ์ฌ๋์ด ์ฝ์ ์ ์๋ ์ด๋ฆ์ ๋ถ์๊ณ (ํจ์ Nat.+ ์ญ์ ์ฌ๋์ด ์ฝ์ ์ ์๋ ์ด๋ฆ์ ๊ฐ์ง๋๋ค), ์ด๋ฆ์ ํจ์์ ํด์์ ์ํฅ์ ์ฃผ์ง ์๋ ๋ณ๋๋ก ์ ์ฅ๋ ๋ฉํ๋ฐ์ดํฐ์ผ ๋ฟ์
๋๋ค. Unison์ด ํด์ํ๋ increment์ ๊ตฌ๋ฌธ ํธ๋ฆฌ๋ ๋๋ต ๋ค์๊ณผ ๊ฐ์ด ์๊ฒผ์ต๋๋ค:
increment = (#arg1 -> #a8s6df921a8 #arg1 1)
์ฆ, ๋ชจ๋ ์ด๋ฆ ์๋ ์ธ์๋ ์์น๋ก ๋ฒํธ๊ฐ ๋งค๊ฒจ์ง ๋ณ์ ์ฐธ์กฐ๋ก ๋์ฒด๋๊ณ , ๋ชจ๋ ์์กด์ฑ(์ด ๊ฒฝ์ฐ Nat.+ ํจ์)์ ํด์๋ก ๋์ฒด๋ฉ๋๋ค. ๋ฐ๋ผ์ increment์ ํด์๋ ๊ทธ ์ ํํ ๊ตฌํ์ ์ ์ผํ๊ฒ ์๋ณํ๊ณ , ๋ชจ๋ ์์กด์ฑ๊น์ง ํ์ (pinning)ํฉ๋๋ค.
๋น์ : ๊ฐ Unison ์ ์๋ ๊ด๋ํ ๋ถ๋ณ(immutable) ์ฃผ์ ๊ณต๊ฐ์์ ์ ์ผํ๊ณ ๊ฒฐ์ ์ ์ธ ์ฃผ์(ํด์)๋ฅผ ๊ฐ์ง๋๋ค. ์ด๋ฆ์ ์ด ๊ณต๊ฐ์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ ๊ฐ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ค ์ด๋ฆ์ด ์ด๋ค ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋์ง๋ ๋ฐ๊ฟ ์ ์์ง๋ง, ๊ฐ ์ฃผ์์ ๋ค์ด ์๋ ๋ด์ฉ์ ์์ํ ๋ณํ์ง ์์ต๋๋ค.
์ด ์ถ๋ฐ์ ์ ๋๋ผ์ด ์ด์ ๋ค์ ์ ๊ณตํฉ๋๋ค. ๋ถ์ฐ ํ๋ก๊ทธ๋๋ฐ์ ๋จ์ํํ๊ณ , ๋น๋์ ์์กด์ฑ ์ถฉ๋์ ์ ๊ฑฐํ๋ฉฐ, ํ์ ์ด ์๋ ๋ด๊ตฌ์ฑ ์ ์ฅ์๋ฅผ ์ง์ํ๊ณ , ๊ตฌ์กฐํ๋ ๋ฆฌํฉํฐ๋ง์ ๊ฐ๋ฅํ๊ฒ ํ๋ฉฐ, ์ฝ๋ ์์ ์ ์ํ ๋ ๋์ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ ๋ฑ ํจ์ฌ ๋ ๋ง์ ๊ฒ๋ค์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
๐
์ด๊ฑด ๋จ์ง ์ด๋ก ์ด๋ ์ถ์ธก์ด ์๋๋๋ค. ์ฐ๋ฆฌ๋ Unison ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋ฐฐํฌํ๋ ค๋ ๋๊ตฌ๋ ์ด ์ด์ ๋ค์ ์ค์ ๋ก ํ์ฉํ ์ ์๋๋ก Unison Cloud Platform์ ๋ง๋ค์์ต๋๋ค.
์ด์ ๊ฐ ์ด์ ์ด ์ด๋ป๊ฒ ๋ํ๋๋์ง ์ดํด๋ด ์๋ค.
์ค๋๋ ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์ผ๋ฐ์ ์ผ๋ก โํ๋ก๊ทธ๋จ์ ๋จ์ผ ์ปดํจํฐ์ ๋จ์ผ OS ํ๋ก์ธ์ค๊ฐ ํ๋ ์ผ์ ๊ธฐ์ ํ๋ ๊ฒโ์ด๋ผ๋ ์๊ฐ์ ์ค์ฌ์ผ๋ก ์ค๊ณ๋์ด ์์ต๋๋ค. ํ๋ก๊ทธ๋จ ๊ฒฝ๊ณ ๋ฐ์ ๊ฒ๋ค๊ณผ ์ํธ์์ฉํ๋ ค๋ฉด ์๋ฅผ ๋ค์ด ์์ผ์ผ๋ก ๋ฐ์ดํธ๋ฅผ ๋ณด๋ด๋ ์์ผ๋ก ๋งค์ฐ ๊ฐ์ ์ ์ผ๋ก ํด์ผ ํฉ๋๋ค. ์ด๋๊ฐ ๋ค๋ฅธ ๊ณณ์์ ๊ณ์ฐ์ โ๊ทธ๋ฅโ ์คํํ ์ ์๊ณ , ๋คํธ์ํฌ๋ก ๋ฐ์ดํธ๋ฅผ ๋ณด๋ธ ๋ค์, (์ด๋ป๊ฒ๋ ?) ๋ฐ๋ํธ์์ ๊ทธ ๋ฐ์ดํธ๋ฅผ ๋ฐ์ ์ญ์ง๋ ฌํํ๊ณ , ๋ฐ๋ผ๊ฑด๋ ์ํ๋ ๊ณ์ฐ์ ์คํํด ์ค ๋ณ๋์ ํ๋ก๊ทธ๋จ์ด ๋ ์๊ณ ๋ฃ๊ณ (listening) ์์ด์ผ ํฉ๋๋ค.
์ด ๊ธฐ์กด ํจ๋ฌ๋ค์์์๋ ๋ถ์ฐ ๊ณ์ฐ์ด ํ๋์ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ธฐ์ ๋์ง ์์ต๋๋ค. ๋์ ์๋ง์ ๊ฐ๋ณ ํ๋ก๊ทธ๋จ์ ์จ๊ฐ ๊ธ๋ฃจ(glue), ๋ํธ ํ ์ดํ(duct tape), YAML ํ์ผ, ๊ทธ๋ฆฌ๊ณ ๋คํธ์ํฌ๋ก ์ ์ก๋๋ JSON ๋ฉ์ด๋ฆฌ๋ก ๊ฟฐ๋ง์ถฐ์ผ ํฉ๋๋ค.
๊ฒ๋ค๊ฐ, ์ ์ฒด์ ์ผ๋ก ๋น์ ์ด ์ํ๋ ์ ์ฒด ๊ณ์ฐ์ ์คํํ๋๋ก ์ปดํจํ ์์๋ค์ ์ค์ ํ๋ ์ผ์ ๋ณต์กํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ณผ์ ์์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์ ๊ณตํ๋ ์จ๊ฐ ํธ์(๋์)๋ฅผ ์ ํ ๋ชป ๋ฐ์ต๋๋ค. ํ ๋์ ๋จธ์ ์ ๋์์ผ๋ก ํ๋ก๊ทธ๋๋ฐํ ๋๋ ๋ณดํต ํ์ ์ฒด์ปค๊ฐ ์์ด ๋ชจ๋ ์กฐ๊ฐ์ด ์ ๋ง๋์ง ํ์ธํด ์ฃผ๊ณ , ์ํ๋ ๋ฐฉ์์ผ๋ก ์ถ์ํํ๊ฑฐ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ๋ฅผ ๋์ ํ๋ ๋ฑ์ ์ผ์ ํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ฌ๋ฌ ์ปดํจํฐ๊ฐ ํจ๊ป ์ ์ฉํ ์ผ์ ํ๋๋ก ๋ง๋ค๊ธฐ ์ํด ํ์ํ ์ฌ๋ฐ๋ฅธ ๋ ์ด์ด๋ฅผ ์กฐ๋ฆฝํ๋ ๋ฐ์๋ ์ด๋ฐ ์ง์์ด ๋์ ๋๊ฒ ๋ถ์กฑํฉ๋๋ค.
Unison์์๋ ์ ์๊ฐ ์ฝํ ์ธ ํด์๋ก ์๋ณ๋๊ธฐ ๋๋ฌธ์, ์์์ ๊ณ์ฐ์ ํ ์์น์์ ๋ค๋ฅธ ์์น๋ก ๊ทธ๋ฅ ์ฎ๊ธธ ์ ์๊ณ , ๋๋ฝ๋ ์์กด์ฑ์ ์ฆ์์์ ๋ฐฐํฌ๋ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ ํ๋กํ ์ฝ์ ๋๋ต ์ด๋ ์ต๋๋ค: ์ก์ ์๊ฐ ๋ฐ์ดํธ์ฝ๋ ํธ๋ฆฌ๋ฅผ ์์ ์์๊ฒ ๋ณด๋ด๋ฉด, ์์ ์๋ ๋ฐ์ดํธ์ฝ๋๋ฅผ ๊ฒ์ฌํ์ฌ ์์ ์๊ฒ ์๋ ํด์๊ฐ ์๋์ง ํ์ธํฉ๋๋ค. ํ์ํ ๋ชจ๋ ํด์๋ฅผ ์ด๋ฏธ ๊ฐ๊ณ ์๋ค๋ฉด ๊ณ์ฐ์ ์คํํ ์ ์๊ณ , ์๋๋ผ๋ฉด ๋๋ฝ๋ ๊ฒ๋ค์ ์์ฒญํ๊ณ ์ก์ ์๊ฐ ์ฆ์์์ ๋๊ธฐํ(sync)ํด ์ค๋๋ค. ์ด๋ค์ ๋ค์์ ์ํด ์บ์๋ฉ๋๋ค.
์ด๋ฐ ์์ ๊ณ์ฐ์ ์ฌ๋ฐฐ์น ๋ฅ๋ ฅ์ ๋ ์ ํ์ ์ธ ํํ์ ์ฝ๋ ๋ฐฐํฌ, ์๊ฒฉ ํ๋ก์์ ํธ์ถ(RPC) ๋ฑ์ ํฌ๊ด(subsume)ํ๋ฉฐ, ๊ฐ๋ ฅํ ๋ถ์ฐ ์ปดํจํ ์ปดํฌ๋ํธ๋ฅผ ํ๋ฒํ Unison ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ตฌ์ถํ ์ ์๊ฒ ํด์ค๋๋ค.
์ ์ฒด ๋ถ์ฐ ์์คํ ์ ๊ธฐ์ ํ๋ ํ๋ก๊ทธ๋จ์ โ๊ทธ๋ฅโ ์คํํ๊ธฐ ์ ์ ์ฌ์ ์ค๋น๋ฅผ ํ์ง ์์๋ ๋๋ค๋ ๊ฑด ํด๋ฐฉ๊ฐ์ด ์์ต๋๋ค. ํ์ํ ์ฝ๋๋ฅผ ์คํํ ์ ์๋๋ก ์ปดํจํ ์์๋ค์ด ์ค๋น๋์ด ์๊ฒ ๋ง๋ค๊ธฐ ์ํด(์ปจํ ์ด๋๋ฅผ ๋น๋ํ๊ฑฐ๋, ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ jar ํ์ผ์ ์ด๋๊ฐ์ ์ ๋ก๋ํ๊ฑฐ๋ ๋ฑ๋ฑ) โ๋์ญ ์ธ(out of band)โ๋ก ๋ง์ ์ผ์ ํด์ผ ํ๋ ๋์ , Unison์ ๋ถ์ฐ ์ปดํจํ ๋ชจ๋ธ์์๋ ๊ทธ์ ์ฝ๋๋ฅผ ์คํํ๋ฉด ๋๊ณ , ๋น ์ง ์์กด์ฑ์ ์ฆ์์์ ๋๊ธฐํ๋ ์ ์์ต๋๋ค.
๋ฌผ๋ก ๋ถ์ฐ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ์ ํ ์ด๋ ค์ธ ์ ์๊ณ , ๋ถ์ฐ ํ๋ก๊ทธ๋จ์ ์์ฐจ์ (single-machine) ํ๋ก๊ทธ๋จ๊ณผ๋ ๋ค๋ฆ ๋๋ค. ํ์ง๋ง ๋ถ์ฐ ํ๋ก๊ทธ๋๋ฐ์ด ๋ถํ์ํ๊ฒ ์ง๋ฃจํ๊ณ ๋ฒ๊ฑฐ๋ก์์๋ ์ ๋ฉ๋๋ค. ๋ฐฐํฌ, ์ค์ , ๊ฐ๊ณผ ๊ณ์ฐ์ ์ฎ๊ธฐ๊ธฐ ์ํ ์ง๋ฃจํ ์ธ์ฝ๋ฉ/๋์ฝ๋ฉ์ ์๊ฐ์ ์ฐ์ง ๋ง๊ณ , ๋ถ์ฐ ํ๋ก๊ทธ๋จ์์ ์ค์ ๋ก ์ค์ํ ๊ฒ๋ค์ ์๊ฐ์ ์์๋ค!
Unison์์๋ ๊ฑฐ์ ์ฝ๋ ๋น๋๋ฅผ ๊ธฐ๋ค๋ฆด ์ผ์ด ์์ต๋๋ค. ์ ๊ทธ๋ด๊น์?
Unison ์ ์๋ ํด์๋ก ์๋ณ๋๋ฏ๋ก ๊ฒฐ์ฝ ๋ฐ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ค ์ด๋ฆ์ด ์ด๋ค ํด์์ ์ฐ๊ฒฐ๋๋์ง๋ ๋ฐ๊ฟ ์ ์๊ณ (์ด๊ฒ์ด Unison์ ๋ฆฌํฉํฐ๋ง ๋ฐ ์ฝ๋ ์งํ ์ ๊ทผ์ ํ์ฉ๋ฉ๋๋ค), ํ์ง๋ง ํน์ ํด์์ ์ฐ๊ฒฐ๋ ์ ์ ์์ฒด๋ ์ ๋ ๋ฐ๋์ง ์์ต๋๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ ์๋ฅผ ํ ๋ฒ๋ง ํ์ฑํ๊ณ ํ์ ์ฒดํฌํ ๋ค, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ๋ฌดํจํ๋์ง ์๋ ์บ์์ ์ ์ฅํ ์ ์์ต๋๋ค. ๊ฒ๋ค๊ฐ ์ด ์บ์๋ IDE๋ ๋น๋ ๋๊ตฌ ์์ ์ผ์์ ์ธ ์ํ(๊ฐ๋ ์ด์ ์์ด ๋ถ์ผ์นํด์ง๋) ๊ฐ์ ๊ฒ์ด ์๋๋ผ, Unison ์ฝ๋๋ฒ ์ด์ค ํฌ๋งท์ ์ผ๋ถ์ ๋๋ค. ๋๊ตฐ๊ฐ ์ ์๋ฅผ ํ์ฑํ๊ณ ํ์ ์ฒดํฌํด์ ์ฝ๋๋ฒ ์ด์ค์ ํ ๋ฒ ์ถ๊ฐํ๋ฉด, ๊ทธ ์ผ์ ๋ค์ ํ ํ์๊ฐ ์์ต๋๋ค.
์ด ์์ด๋์ด๋ ์์ ๊ณ์ฐ์ ๋ํ ํ ์คํธ ๊ฒฐ๊ณผ ์บ์ฑ์๋ ์ ์ฉ๋ฉ๋๋ค(I/O๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฐ์ ์ ํ ์คํธ). ์์กด์ฑ์ด ๋ฐ๋์ง ์์๋ค๋ฉด ๊ฒฐ์ ์ ํ ์คํธ๋ฅผ ๋ค์ ์คํํ ํ์๊ฐ ์์ต๋๋ค!
์ด๋ ๊ฒ ์ ๋ฐฉ์๋ก ์ ์ฉ๋๋ ์บ์ฑ ๋๋ถ์, ์ปดํ์ผ๋ฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ธฐ๋ณด๋ค ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ์๊ฐ์ ์ฐ๊ฒ ๋ฉ๋๋ค.
์์กด์ฑ ์ถฉ๋์ ๊ทผ๋ณธ์ ์ผ๋ก ์๋ก ๋ค๋ฅธ ์ ์๋ค์ด ๊ฐ์ ์ด๋ฆ์ โ๊ฒฝ์โํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค. ํ์ง๋ง ๋ ๊ฐ์ ๋ค๋ฅธ ์ ์๊ฐ ๊ฐ์ ์ด๋ฆ์ ์ฐ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ ์ ๊ฒฝ ์จ์ผ ํ ๊น์? ์ฌ์ค ์ ๊ฒฝ ์ธ ํ์๊ฐ ์์ต๋๋ค. ์ด ์ ํ์ ์ ์๋ฅผ ์ด๋ฆ์ผ๋ก ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์ ์๊น๋๋ค. Unison์์๋ ์ ์๋ฅผ ํด์๋ก ์ฐธ์กฐํ๊ณ (์ด๋ฆ์ ๋ณ๋๋ก ์ ์ฅ๋๋ ๋ฉํ๋ฐ์ดํฐ์ผ ๋ฟ), ๋ฐ๋ผ์ ์์กด์ฑ ์ถฉ๋๊ณผ ๋ค์ด์๋ชฌ๋ ์์กด์ฑ ๋ฌธ์ ๋ ์์ ์กด์ฌํ์ง ์์ต๋๋ค.
๋์ , ์ฐ๋ฆฌ๊ฐ ์ง๊ธ โ์์กด์ฑ ์ถฉ๋โ์ด๋ผ๊ณ ์๊ฐํ๋ ๊ฒ์ ๋น์ทํ ๋ชฉ์ ์ ์ํํ๋ ์ฌ๋ฌ ์ฉ์ด(term)๋ ํ์
(type)์ด ์กด์ฌํ๋ ์ํฉ์ผ ๋ฟ์
๋๋ค. ์๋ฅผ ๋ค์ด Email ํ์
์ ์๊ฐํด ๋ด
์๋ค. Alice ๋ผ์ด๋ธ๋ฌ๋ฆฌ v1์ Email๊ณผ v2์ Email์ด ์์ ์ ์๊ณ (๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ์ ์ด์ ์ผ๋ก ํฌํจ๋ ์๋ ์์), ์ฐ๋ฆฌ๋ ์ด๋ฐ ์์กด์ฑ โ์ถฉ๋โ ๋๋ฌธ์ โ๊นจ์งโ ๋น๋๋ฅผ ๊ณ ์น๋๋ผ ๋ชจ๋ ๊ฒ์ ๋ฉ์ถฐ์ผ ํ๋ ๋ฐ ์ต์ํฉ๋๋ค. ํ์ง๋ง Unison์์๋ ์ฝ๋๋ฒ ์ด์ค ์์ ๋ ๊ฐ์ ์๋ก ๋ค๋ฅธ Email ํ์
์ด ๋ ๋ค๋๊ณ ์์ด๋ ์ ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ด๋ค์ ์๋ก ๋ค๋ฅธ ํด์๋ฅผ ๊ฐ์ง ์๋ก ๋ค๋ฅธ ํ์
์ผ๋ก ์กด์ฌํ๋ฉฐ, ๋์ ๋์์ ๋ค๋ฃฐ ์ ์์ต๋๋ค(๊ทธ๋ฆฌ๊ณ ํ์ชฝ์์ ๋ค๋ฅธ ์ชฝ์ผ๋ก ๋ณํํ๋ ํ๋ฒํ ํจ์๋ ์์ฑํ ์ ์์ต๋๋ค).
๋ฌผ๋ก ์๊ฐ์ด ์ง๋๋ฉด์ ์ฝ๋๋ฒ ์ด์ค ์์ ๋ Email ํ์
์ ํ๋๋ก ํตํฉํ๊ณ ์ถ์ด์ง ์๋ ์์ต๋๋ค. ํ์ง๋ง Unison์์๋ ์ฝ๋๋ฒ ์ด์ค๊ฐ ๊นจ์ง ์ํ๊ฐ ๋์ด ์๋ฌด ์ฝ๋๋ ์คํํ์ง ๋ชปํ๋ ์ํฉ์ด ์๋๋ผ, ๋น์ ์ด ์ํ ๋ ์ฌ์ ์๊ฒ ํตํฉํ ์ ์์ต๋๋ค.
โ๊ฐ์โ ํจ์๋ ํ์ ์ ์ฌ๋ฌ ๋ฒ์ ์ด ์ฝ๋๋ฒ ์ด์ค์ ์กด์ฌํ๋ ๊ฒ์, ์ฝ๋๋ฒ ์ด์ค์์ ํํ ์๊ธฐ๋ ๋ค๋ฅธ ์ข ๋ฅ์ ์ค๋ณต๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋น์ทํด ๋ณด์ด๋ ํจ์ ๋ช ๊ฐ๊ฐ ์ฌ์ค ๊ณตํต ์ถ์ํ๋ก ์ ์๋ ์ ์๋ค๋ ๊ฑธ ์์์ฐจ๋ฆฌ๋ ๊ฒฝ์ฐ์ฒ๋ผ์. ๋๊ฐ ๋๋ฉด ๊ทธ ์ค๋ณต์ ์ ๋ฆฌํด ํตํฉํ๋ฉด ๋ฉ๋๋ค. ์ด๋ฐ ์์ฐ์ค๋ฌ์ด ๊ณผ์ ์ด ํญ์ ๋ค๋ฅธ ๋ชจ๋ ์์ ๋ณด๋ค ๋ฌด์กฐ๊ฑด ์ฐ์ ํด์ผ ํ ์ด์ ๋ ์์ต๋๋ค.
๊ฐ์ ์์์ ์ผ๋ก ์ ์ฅํ๋ ๋ฐ์๋ ๋ ๊ฐ์ง ์ธก๋ฉด์ด ์์ต๋๋ค. ํ๋๋ ํฅ๋ฏธ๋ก์ด ๋ถ๋ถ์ ๋๋ค: ๋ฐฉ๋ํ ๋ฐ์ดํฐ ์ปฌ๋ ์ ์ ๋ํด ์ด๋ค ์ข ๋ฅ์ ์คํค๋ง๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์จ์ผ ํน์ ์ฟผ๋ฆฌ๋ ๊ณ์ฐ์ด ํจ์จ์ ์ธ๊ฐ?
ํฅ๋ฏธ๋กญ์ง ์์ ๋ถ๋ถ์, SQL์ด๋ NoSQL์ด๋ ๋ค๋ฅธ ๋ฌด์์ด๋ ํ๋ก๊ทธ๋จ๊ณผ ์ ์ฅ์ ๊ณ์ธต ์ฌ์ด ๊ฒฝ๊ณ์์ ๋ ๋ค๋ค์ผ ํ๋ ์ง๋ ฌํ/์ญ์ง๋ ฌํ์ ๋๋ค.
Unison์์๋ ์ด๋ค ๊ฐ์ด๋ (ํจ์ ์์ฒด๋ ํจ์๋ฅผ ํฌํจํ๋ ๊ฐ๊น์ง๋) ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง๋ ฌํ ํฌ๋งท์ ์๋์ผ๋ก ์ง์ ํ๊ฑฐ๋ ์ธ์ฝ๋/๋์ฝ๋๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ์ ์ฅ(persist)ํ๋ค๊ฐ ๋์ค์ ๋ค์ ๋ถ๋ฌ์ฌ ์(unpersist) ์์ต๋๋ค.
์ฌ๋๋ค์ด ์๋ ์ธ์ฝ๋ฉ/๋์ฝ๋ฉ ๋ ์ด์ด๋ฅผ ์์ฑํ๋ ์ด์ ์ค ํ๋๋, ์๊ฐ 0์ ์ง๋ ฌํ๋ฅผ ์ํํ๋ ์ฝ๋๋ฒ ์ด์ค์ ์๊ฐ์ ๋๋ ์๋ ํ ์ญ์ง๋ ฌํ๋ฅผ ์ํํ๋ ์ฝ๋๋ฒ ์ด์ค๊ฐ ๋ค๋ฅผ ์ ์๋ค๊ณ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ ์ฝ๋๋ฒ ์ด์ค๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ค๋ฅธ ๋ฒ์ ์ ๊ฐ์ง๋ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ฝ์ ์ ์๊ฒ ๋ ์ง๋ ๋ชจ๋ฆ ๋๋ค! ๊ทธ๋์ ์์์ฑ ๊ฒฝ๊ณ ์์ชฝ์ SQL์ ํ, JSON ๋ธ๋กญ ๊ฐ์ ์์ ์ ์ธ ํฌ๋งท์ผ๋ก ๋ณํํ๋ ์ง๋ฃจํ ์ฝ๋๋ฅผ ์จ์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฝํ ์ธ ํด์๋ก ์๋ณ๋๋ ์ ์๋ฅผ ์ง๋ ฌํํ๋ฉด ์ด๋ฐ ์ด๋ ค์์ ํผํ ์ ์์ต๋๋ค. ์ ์๋ ๊ฒฐ์ฝ ๋ฐ๋์ง ์์ผ๋ฉฐ, ์ญ์ง๋ ฌํ๋ ์ฒ์ ์ง๋ ฌํํ์ ๋์ ๊ฐ์ ์๋ฏธ๋ฅผ ๊ฐ์ง ๊ฐ์ ์ธ์ ๋ ๋๋ ค์ค๋๋ค.
๋ ๋์๊ฐ, ์ด ์์ด๋์ด๋ ์ ์ฅ์ ๊ณ์ธต์ ํ์ ์๊ฒ ๋ง๋ค ์ ์๊ฒ ํด์ค๋๋ค. SQL์ฒ๋ผ ํ๋ก๊ทธ๋จ์ด ์์ง ๋ชปํ๋ ๋ณ๋์ ํ์ ์์คํ ์ด ์๋๋ผ, Unison ํ๋ก๊ทธ๋จ์ ์ผ๋ถ๋ก ํ์ ์ ๊ฐ๊ฒ ๋ฉ๋๋ค. ์ฆ, ํ๋ก๊ทธ๋จ์ด ์ ์ฅํ ๊ฐ๋ค์ ์ ์ฅ์ ๊ณ์ธต์ ๋ํ ํ์ ์ด ๋ถ์ ์ฐธ์กฐ๋ฅผ ๋๋ ค์ฃผ๊ณ , ๊ทธ ์ฐธ์กฐ๋ฅผ ๋ก๋ํ ๋ ๊ธฐ๋ํ ํ์ ์ ๊ฐ์ ๋๋ ค๋ฐ๋๋ค๋ ๊ฒ์ Unison ํ์ ์์คํ ์ด ๋ณด์ฅํฉ๋๋ค.
Unison์ผ๋ก ๋ถ์ฐ ์ ์ฅ์ ๊ณ์ธต์ ์์ฑํ๋ ๊ธ์ ๊ณง ๊ณต๊ฐํ ์์ ์ด๋ ๊ธฐ๋ํด ์ฃผ์ธ์.
Unison ์ฝ๋๋ฒ ์ด์ค๋ ์ ์ฅํ๋ ๋ชจ๋ ๊ฒ์ ํ์ ์ ์๊ณ , ์๋ฒฝํ ์ปดํ์ผ ์บ์, ์์กด์ฑ์ ๋ํ ์๋ฒฝํ ์ง์, ํ์ ๊ธฐ๋ฐ ๊ฒ์์ ์ํ ์ธ๋ฑ์ค ๋ฑ์ ๊ฐ์ถ ์ ๋๋ก ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋ ํ์๊ณผ ์ํธ์์ฉ์ ์ํ ํจ์ฌ ๋ ํ๋ถํ ๋๊ตฌ๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Unison Share๋ ์ํ๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์ ํ ํ์ดํผ๋งํฌ๋ Unison ์ฝ๋๋ฅผ ํ์ํ ์ ์๊ฒ ํด์ฃผ๊ณ , ํ์ดํผ๋งํฌ๋ ์๋ฒ ๋๋ ์ฝ๋ ์ํ์ ํฌํจํ ํ๋ถํ ๋ฌธ์ ๋ ๋๋ง๋ ์ ๊ณตํฉ๋๋ค.
์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ด๋ ๊ฒ ๋ ๊ตฌ์กฐํ๋ ๋ฐฉ์์ผ๋ก ์ ์ฅํ๋ฉด ์ด๋ฐ ๊ธฐ๋ฅ๋ค์ ์ง์ํ๊ธฐ๊ฐ ํจ์ฌ ๊ฐ๋จํด์ง๋๋ค. Unison Share์ ์ฒซ ๋ฒ์ ์ Unison ์ฝ๋๋ฒ ์ด์ค API์ ์ด๋ฏธ ํฌํจ๋ ํ๋ถํ ์ ๋ณด๋ฅผ ํ์ฉํ์ฌ, ํ ์ฌ๋์ด ๋จ ๋ช ๋ฌ ๋ง์ ์์ฑํ์ต๋๋ค.
์ฝ๋๋ ๋ณธ์ง์ ์ผ๋ก ๊ตฌ์กฐํ๋ ์ ๋ณด์ ๋๋ค. ์ฐ๋ฆฌ๋ ํธ์๋ฅผ ์ํด ํ ์คํธ๋ก ์ฝ๋๋ฅผ ํธ์งํ์ง๋ง, ์ฝ๋๋ก ํ๊ณ ์ถ์ ๊ฑฐ์ ๋ชจ๋ ์ผ์ ๋จผ์ ๋ ๊ตฌ์กฐํ๋ ํํ๋ก ๋ณํํ๋ฉด ๋ ์ํ ์ ์์ต๋๋ค.
๊ฐ๋จํ ์๋ฅผ ๋ด ์๋ค: ์ ์ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ. ์ฝ๋๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ํ ์คํธ ํ์ผ ๋ฌถ์์ผ๋ก ํํ๋ ๋, ์ ์์ ์ด๋ฆ์ ์ ํํ ๋ฐ๊พธ๋ ค๋ฉด ๋จผ์ ๊ทธ ํ ์คํธ ํ์ผ๋ค์ ์ธ์ด์ ์ค์ฝํ ๊ท์น์ ์กด์คํ๊ณ ์์กด์ฑ์ด ๋ช ์์ ์ผ๋ก ๋๋ฌ๋๋ ๊ตฌ๋ฌธ ํธ๋ฆฌ๋ก ๋ณํํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ตฌ๋ฌธ ํธ๋ฆฌ์ ์ด๋ค ๋ถ๋ถ์ด ์ด๋ฆ์ ๋ฐ๊พธ๋ ค๋ ๋์์ ์ฐธ์กฐํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๋ถ๋ถ์ ๊ทธ ๋ถ๋ถ ๋ฌธ์์ด์ ํฌํจํ์ง๋ง ๋ค๋ฅธ ๊ฒ์ ๋ฐ์ธ๋ฉ๋์ด ์๋์ง(์: ๋ก์ปฌ ๋ณ์), ๋๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ด/์ฃผ์ ์์ธ์ง ๋ฑ์ ํ๋จํ ์ ์์ต๋๋ค.
์ด๋ฆ ๋ฐ๊พธ๊ธฐ๊ฐ ๋๋๋ฉด ์์ ๋ ๊ตฌ๋ฌธ ํธ๋ฆฌ๋ฅผ ๋ค์ ํ ์คํธ๋ก ์ง๋ ฌํํด์ผ ํ๋ฉฐ, ๊ทธ ๊ณผ์ ์์ ๊ฑฐ๋ํ ํ ์คํธ diff๊ฐ ์์ฑ๋๊ณ , ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค๊ณผ ๋์์ ์์ ์ค์ด๋ผ๋ฉด ์ถฉ๋๋ ๋ง์ด ์๊ธธ ์ ์์ต๋๋ค. ๋ ๋์ ๊ฒ์, ๊ณต๊ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์์ ๋ํด ์ด๋ฆ ๋ฐ๊พธ๊ธฐ๋ฅผ ํ๋ฉด, ๋ค์ด์คํธ๋ฆผ ์ฌ์ฉ์๋ค์ ์ ๊ทธ๋ ์ด๋ํ ๋ ์ฝ๋๋ฒ ์ด์ค๊ฐ ๊นจ์ง ์ํ๊ฐ ๋๋ค๋ ์ ์ ๋๋ค. ์ ๋ง ์ด๋ฆฌ์์ง ์๋์?
๋ ๋ค๋ฅธ ์๋ก, ๋น๋ ๋๊ตฌ์ IDE์ ์ผ์์ ์ธ ์ปดํ์ผ ์บ์๋ฅผ ์๊ฐํด ๋ด ์๋ค. ์ด ๋๊ตฌ๋ค์ ๋ถํ์ํ ์ฌ์ปดํ์ผ์ ํผํ๋ ค๊ณ ํ ์คํธ ์ฝ๋๋ฅผ ๋ ํ๋ถํ ํํ๋ก ์ฒ๋ฆฌํด ์บ์ํ๋ ค๊ณ ์์ฒญ๋๊ฒ ๋ ธ๋ ฅํ์ง๋ง, ํนํ ๊ธฐ๋ฐ์ด ๋๋ ํ ์คํธ ํ์ผ์ด ๊ณ์ ๋ณ๊ฒฝ๋๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ ๋๋ก ํ๊ธฐ๋ ๊ฝค ์ด๋ ต์ต๋๋ค.
Unison์ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ ๋๋ก ๋ โ์ฝ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์คโ๋ก ํํํจ์ผ๋ก์จ ์ด๋ฐ ์ด๋ ค์์ ์๋น ๋ถ๋ถ์ ์ฐํํฉ๋๋ค. ๋น์ ์ ์ฌ์ ํ ์ข์ํ๋ ํ ์คํธ ํธ์ง๊ธฐ๋ก ์ฝ๋๋ฅผ ํธ์งํ๊ณ ์์ฑํ์ง๋ง, ์ฝ๋๊ฐ ์ฝ๋๋ฒ ์ด์ค๋ก ํก์(slurp)๋๋ฉด ์ ์ฒ๋ฆฌ๋ ํํ๋ก ์ ์ฅ๋์ด ์ฆ์(non-breaking) ์ด๋ฆ ๋ฐ๊พธ๊ธฐ, ํ์ ๊ธฐ๋ฐ ๊ฒ์, ํ์ดํผ๋งํฌ๋ ์ฝ๋ ๊ฐ์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ๋ํ ์ด๋ค ์ ์๋ ํ ๋ฒ์ ๋ช ๋ น์ผ๋ก ํ ์คํธ ๋ฒํผ๋ก ๋ค์ ๊ฐ์ ธ์ฌ ์ ์์ผ๋ฉฐ(๋ณด๊ธฐ ์ข๊ฒ pretty-print๋๊ณ , ์ ์์ ๋ํด ์ต์ ์ด๋ฆ์ ์ฌ์ฉ), ์ฝ๊ฒ ํธ์งํ ์ ์์ต๋๋ค.
ํํธ์ผ๋ก๋ ํ ์คํธ ํ์ผ๊ณผ ํ ์คํธ ๊ธฐ๋ฐ ๋๊ตฌ๋ ์ด๋ฏธ ๊ฑฐ๋ํ ์ํ๊ณ๋ฅผ ๊ฐ๊ณ ์๊ณ ์ฌ๋๋ค์ด ์ต์ํฉ๋๋ค. ํ์ง๋ง ์ฝ๋๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก์์ ํ ์คํธ๋, Unison์ด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ ๊ตฌ์กฐํํด ํํํจ์ผ๋ก์จ โ๊ณต์ง๋กโ ์ป๋ ๋ง๋ํ ์ด์ ๋ค์ ๋นํด ์ํด๊ฐ ํฝ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด์ ๊ฒจ์ฐ ํ๋ฉด์ ๊ธ๊ณ ์์ ๋ฟ์ ๋๋ค. Unison์ ์ฝ๋ ์์ ๋๊ตฌ๋ ๊ณ์ ๋ ์ข์์ง ๊ฒ์ด๊ณ , ํ ์คํธ ๊ธฐ๋ฐ ์ฝ๋๋ฒ ์ด์ค๋ก๋ ์ด๋ ต๊ฑฐ๋ ๋ถ๊ฐ๋ฅํ ์์ ํ ์๋ก์ด ๊ฐ๋ฅ์ฑ์ด ์ด๋ฆด ๊ฒ์ ๋๋ค.
Unison์ ๊ธฐ๋ณธ ๋ชจ๋ธ์ ์ ์๋ ๊ฒฐ์ฝ ๋ฐ๋์ง ์๋๋ค๋ ๊ฒ์ด์ง๋ง, ์ฌ๋์ด ์ฝ์ ์ ์๋ ์ด๋ฆ์ด ์ด๋ค ์ ์(ํด์)์ ๋งคํ๋๋์ง๋ ๋๋๋ก ๋ฐ๊พธ๊ณ ์ถ์ต๋๋ค. ๋ฒ๊ทธ๋ฅผ ๊ณ ์น๊ฑฐ๋, ์ฑ๋ฅ์ ๊ฐ์ ํ๊ฑฐ๋, ๊ธฐ์กด ์ด๋ฆ์ ์๋ก์ด ์ ์๋ก ์ฌ์ฌ์ฉํ๊ณ ์ถ์ ์ ์์ต๋๋ค.
Unison์์๋ ์ด๋ฆ์ด ์ด๋ค ํด์์ ๋งคํ๋๋์ง๋ฅผ ๋ฐ๊พธ๋ ์ผ์, ํ ์คํธ ํ์ผ์ ์ ์๋ฆฌ์์(mutating in place) ์์ ํ ๋ค์ ์คํด๋ฅผ ๋ถ๋ฅด๋ ์ปดํ์ผ ์๋ฌ์ ์คํจํ ํ ์คํธ์ ๊ธด ๋ชฉ๋ก์ ๊ณ ์น๋ ์ ํ์ ์ธ ๋ฐฉ์์ด ์๋๋ผ, ๊ตฌ์กฐํ๋ ๋ฆฌํฉํฐ๋ง ์ธ์ ์ผ๋ก ์ํํฉ๋๋ค. Unison ์ฝ๋๋ฒ ์ด์ค๋ ๋ฆฌํฉํฐ๋ง ๋์ค์๋ ๊ฒฐ์ฝ ๊นจ์ง ์ํ๊ฐ ๋์ง ์์ต๋๋ค.
์ฝ๋๋ฒ ์ด์ค๊ฐ ๋ง์น ๋ง์ฒ๋ฃจ(skyscraper)๋ผ๊ณ ํ๋ฉด, ์ผ๋ฐ์ ์ธ ๋ฆฌํฉํฐ๋ง ๋ฐฉ์์ ๊ธฐ์ด ๊ธฐ๋ฅ ์ค ํ๋๋ฅผ ๋ฏ์ด๋ด๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ๋ง์ฒ๋ฃจ๋ ์ํด ๋๋ฏธ(์คํด๋ฅผ ๋ถ๋ฅด๋ ์ปดํ์ผ ์๋ฌ์ ๊ธด ๋ชฉ๋ก)๋ก ๋ฌด๋์ง๊ณ , ๋น์ ์ ๊ทธ ์ํด๋ก๋ถํฐ ๋ค์ ์ ์๋ ๋ง์ฒ๋ฃจ๋ฅผ ์ฌ๊ฑดํ๋ ค๊ณ ํฉ๋๋ค.
Unison์ ๋ฐฉ์์ ๊ธฐ์กด ๋ง์ฒ๋ฃจ๋ฅผ ๊ทธ๋๋ก ๋ ์ฑ, ๋ง๋ฒ์ ๋ณต์ ๋๊ตฌ๋ก ๊ทธ ์ผ๋ถ๋ฅผ ์ ๋ง์ฒ๋ฃจ๋ก ๋ณต์ฌํด ๊ฐ๋ ๊ฒ์ ๋๋ค. ์ฝ๋๋ฒ ์ด์ค๋ ๊ฒฐ์ฝ ๊นจ์ง์ง ์์ต๋๋ค. ๋ชจ๋ ์ฝ๋๋ ์คํ ๊ฐ๋ฅํฉ๋๋ค. ๋ค๋ง ์ค๊ฐ ๋จ๊ณ์์๋ ๋ ๋ฒ์งธ ๋ง์ฒ๋ฃจ๋ฅผ ์์ง ์์ ํ ์ง์ง ๋ชปํ๊ณ ๋ชจ๋ ์ด๋ฆ์ ์ ํ(cut over)ํ์ง ๋ชปํ์ ์ ์์ต๋๋ค. Unison์ ์ด๋ฅผ ์ถ์ ํ๊ณ , ํด๊ฒฐํด์ผ ํ ์ผ์ ๊น๋ํ TODO ๋ชฉ๋ก์ผ๋ก ์ ๊ณตํด ์ค๋๋ค.
์ฝํ ์ธ ๊ธฐ๋ฐ ์ฃผ์ ์ง์ ์ฝ๋๋ผ๋ ์์ด๋์ด์ ์ค๋ ํจ๊ปํ ์๋ก, ์ด ์์ด๋์ด๊ฐ ์ ์ ๋น์ ์ ์ฌ๋ก์ก๊ธฐ ์์ํฉ๋๋ค. ์ด๋ ์์์ ์ด๊ฑฐ๋ ์ด์ํ ๊ฒ์ด ์๋๋ผ, ์์ฒญ๋ ์ค์ฉ์ ์ด์ ์ ๊ฐ์ง ๋ ผ๋ฆฌ์ ์ด๊ณ ํฉ๋ฆฌ์ ์ธ ์ ํ์ ๋๋ค. ์์ด๋์ด์ ๋จ์ํจ์ ์ดํดํ๊ฒ ๋๊ณ , ์ฌ๊ธฐ์ ๊ธฐ์ ๊ทธ ํ์์ฑ์ ๋ณด๊ฒ ๋ฉ๋๋ค(โ์ฝ๋๊ฐ ์ฝํ ์ธ ๊ธฐ๋ฐ ์ฃผ์ ์ง์ ์ด์๋ค๋ฉด ํจ์ฌ ์ฌ์ ์ ํ ๋ฐโฆโ). ํ์ง๋ง ์ ๋ง ์ด ์์ด๋์ด๋ฅผ ์ค์ฌ์ผ๋ก ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๋ง๋๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊น์? ๋ค, ๊ฐ๋ฅํฉ๋๋ค!
Unison์ ๋ง๋๋ ์ฌ๋ฏธ ์ค ํ๋๋ ํ๋ฅญํด ๋ณด์ด๋ ํต์ฌ ์์ด๋์ด์ ํจ์๋ฅผ ๋๊น์ง ๋ฐ์ด๋ถ์ด๋ฉฐ ํ์ธํ๋ ๊ณผ์ ์ด์์ต๋๋ค. ๊ทธ ๊ณผ์ ์์ ํฐ ์ง๋ฌธ์ด ํ๋ ๋ ์ฌ๋์ต๋๋ค: ์ ์ ์์ฒด๋ ๋ณํ์ง ์๋๋ผ๋, ์ฐ๋ฆฌ๊ฐ ๊ด์ฌ ์๋ ์ ์๊ฐ ๋ฌด์์ธ์ง ๋ฐ๊พธ๊ณ ๋ณด๊ธฐ ์ข์ ์ด๋ฆ์ ๋ถ์ด๊ณ ์ถ์ ๋๊ฐ ์์ต๋๋ค. ๊ทธ๋ผ ๊ทธ๊ฑด ์ด๋ป๊ฒ ์๋ํด์ผ ํ ๊น์? ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ๋ฆฌํฉํฐ๋งํ๊ฑฐ๋ ์ ๊ทธ๋ ์ด๋ํ ๊น์? ์ฝ๋๋ฒ ์ด์ค๋ ์ฌ์ ํ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ํ ์คํธ ํ์ผ ๋ฌถ์์ด์ด๋ ๋ ๊น์, ์๋๋ฉด ๋ค๋ฅธ ๋ฌด์ธ๊ฐ๊ฐ ํ์ํ ๊น์?
์ฝํ ์ธ ๊ธฐ๋ฐ ์ฃผ์ ์ง์ ์ฝ๋๋ฅผ ๋ค๋ฃจ๊ธฐ ์ข๊ฒ ๋ง๋ค๋ ค๋ฉด ๋ค๋ฅธ ๋ฌด์ธ๊ฐ๊ฐ ํ์ํฉ๋๋ค. Unison์์๋ ๊ทธ ๋ฌด์ธ๊ฐ๋ฅผ Unison Codebase Manager(์ ๋์จ ์ฝ๋๋ฒ ์ด์ค ๊ด๋ฆฌ์)๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
๐์ฝ๋๋ฒ ์ด์ค ๊ด๋ฆฌ์์ Unison ์ธ์ด ๋๋ฌ๋ณด๊ธฐ