Unison ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํต์ฌ ์์ด๋์ด์ ๊ทธ๋ก๋ถํฐ ๋์ค๋ ๋ถ์ฐ ํ๋ก๊ทธ๋๋ฐ ๋จ์ํ, ๋น๋ ์ ๊ฑฐ, ์์กด์ฑ ์ถฉ๋ ํด์, ํ์ ์ด ์๋ ์ง์ ์ ์ฅ์, ๊ตฌ์กฐ์ ๋ฆฌํฉํฐ๋ง, ํ๋ถํ ์ฝ๋๋ฒ ์ด์ค ๋๊ตฌ ๋ฑ ์ฃผ์ ์ด์ ๋ค์ ์ค๋ช ํ๋ค.
์ฌ๊ธฐ Unison์ ํฐ ์๊ฐ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ด ๊ฐ์ ธ์ค๋ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ ํจ๊ป ์ค๋ช ํ๊ฒ ์ต๋๋ค:
๐ง
๊ฐ Unison ์ ์๋ ํด๋น ๊ตฌ๋ฌธ ํธ๋ฆฌ์ ํด์(hash) ๋ก ์๋ณ๋ฉ๋๋ค.
๋ค์ ๋งํด, Unison ์ฝ๋๋ ์ฝํ ์ธ ์ฃผ์ ๋ฐฉ์(content-addressed)์ ๋๋ค.
์๋ฅผ ๋ค์ด, Nat ํ์
์ ๋ํ increment ํจ์๊ฐ ์์ต๋๋ค:
unisonincrement : Nat -> Nat increment n = n + 1
์ด ํจ์์ ์ฌ๋์ด ์ฝ์ ์ ์๋ ์ด๋ฆ์ ๋ถ์๊ณ (increment), ํจ์ Nat.+ ์ญ์ ์ฌ๋์ด ์ฝ์ ์ ์๋ ์ด๋ฆ์ ๊ฐ๊ณ ์์ง๋ง, ์ด๋ฆ์ ๋จ์ง ๋ฐ๋ก ์ ์ฅ๋๋ ๋ฉํ๋ฐ์ดํฐ์ผ ๋ฟ์ด๋ฉฐ ํจ์์ ํด์์ ์๋ฌด๋ฐ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. Unison์ด ํด์๋ฅผ ๊ณ์ฐํ ๋ ์ฌ์ฉํ๋ increment์ ๊ตฌ๋ฌธ ํธ๋ฆฌ๋ ๋๋ต ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
textincrement = (#arg1 -> #a8s6df921a8 #arg1 1)
์ฆ, ๋ชจ๋ ์ด๋ฆ ๋ถ์ ์ธ์๋ ์์น ๊ธฐ๋ฐ์ผ๋ก ๋ฒํธ๊ฐ ๋งค๊ฒจ์ง ๋ณ์ ์ฐธ์กฐ๋ก ๋์ฒด๋๊ณ , ๋ชจ๋ ์์กด์ฑ(์ด ์์์๋ Nat.+ ํจ์)์ ๊ทธ ์ ์์ ํด์๋ก ๋์ฒด๋ฉ๋๋ค. ๋ฐ๋ผ์ increment์ ํด์๋ ๊ทธ ์ ํํ ๊ตฌํ์ ๊ณ ์ ํ๊ฒ ์๋ณํ๊ณ , ๊ทธ ๋ชจ๋ ์์กด์ฑ๊น์ง ์์ ํ ๊ณ ์ (pinned down)ํฉ๋๋ค.
๋น์ ๋ฅผ ๋ค๋ฉด: ๊ฐ Unison ์ ์๋ ๊ฑฐ๋ํ ๋ถ๋ณ ์ฃผ์ ๊ณต๊ฐ ์์์ ๊ณ ์ ํ๊ณ ๊ฒฐ์ ์ ์ธ ์ฃผ์(๊ทธ ํด์)๋ฅผ ๊ฐ์ต๋๋ค. ์ด๋ฆ์ ์ด ๊ณต๊ฐ ์์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ ๊ฐ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ค ์ด๋ฆ์ด ์ด๋ค ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋์ง๋ ๋ฐ๊ฟ ์ ์์ง๋ง, ๊ฐ ์ฃผ์์ ๋ด์ฉ์ ์์ํ ๋ณํ์ง ์์ต๋๋ค.
์ด๋ฌํ ์ถ๋ฐ์ ์ ๋๋ผ์ด ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ๋ถ์ฐ ํ๋ก๊ทธ๋๋ฐ์ ๋จ์ํ๊ฒ ๋ง๋ค๊ณ , ๋น๋์ ์์กด์ฑ ์ถฉ๋์ ์์ ๋ฉฐ, ํ์ ์ด ์๋ ๋ด๊ตฌ์ฑ ์๋ ์ ์ฅ์๋ฅผ ์ง์ํ๊ณ , ๊ตฌ์กฐ์ ๋ฆฌํฉํฐ๋ง์ ๊ฐ๋ฅํ๊ฒ ํ๊ณ , ์ฝ๋๋ฅผ ๋ค๋ฃจ๋ ๋ ๋์ ๋๊ตฌ๋ค์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฑ, ๊ทธ ์ธ์๋ ๋ง์ ์ฅ์ ์ด ์์ต๋๋ค.
๐
์ด๊ฒ์ ๋จ์ํ ์ด๋ก ์ด๋ ์ถ์ธก์ด ์๋๋๋ค. ์ฐ๋ฆฌ๋ ๋๊ตฌ๋ Unison ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋ฐฐํฌํ ์ ์๋๋ก ์ด๋ฌํ ์ด์ ์ ์ค์ ๋ก ํ์ฉํ๋ Unison Cloud Platform์ ๋ง๋ค์์ต๋๋ค.
์ด์ ๊ฐ ์ด์ ์ด ์ด๋ป๊ฒ ๋์ค๋์ง ์ฐจ๋ก๋๋ก ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ํ์ฌ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค์ ๋์ฒด๋ก โํ๋ก๊ทธ๋จ์ ๋จ์ผ ์ปดํจํฐ์ ๋จ์ผ OS ํ๋ก์ธ์ค๊ฐ ๋ฌด์์ ํ๋์ง๋ฅผ ๊ธฐ์ ํ๋ ๊ฒโ์ด๋ผ๋ ๊ฐ๋ ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ํ๋ก๊ทธ๋จ ๊ฒฝ๊ณ ๋ฐ์ ๊ฒ๊ณผ ์ํธ์์ฉํ ๋๋, ์๋ฅผ ๋ค์ด ์์ผ์ ํตํด ๋ฐ์ดํธ๋ฅผ ์ ์กํ๋ ์์ผ๋ก ๋งค์ฐ ๊ฐ์ ์ ์ผ๋ก๋ง ํ ์ ์์ต๋๋ค. ์ด๋ค ๊ณ์ฐ์ โ๊ทธ๋ฅโ ๋ค๋ฅธ ๊ณณ์์ ์คํํ ์๋ ์๊ณ , ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํธ๋ฅผ ๋ณด๋ด์ผ ํ๋ฉฐ, ๊ทธ ๋ฐ๋ํธ์์๋ ๋ณ๋์ ํ๋ก๊ทธ๋จ์ด ์คํ ์ค์ด์ด์ ๊ทธ ๋ฐ์ดํธ๋ฅผ ์์ ํ๊ณ ์ญ์ง๋ ฌํํ ํ, ์ฌ๋ฌ๋ถ์ด ์ํ๋ ๊ณ์ฐ์ ์คํํด ์ฃผ๊ธฐ๋ฅผ (์ด๋ป๊ฒ๋ ) ๋ณด์ฅํด์ผ ํฉ๋๋ค.
์ด ๊ธฐ์กด ํจ๋ฌ๋ค์์์๋ ๋ถ์ฐ ๊ณ์ฐ์ด ํ๋์ ํ๋ก๊ทธ๋จ์ด ์๋๋ผ, ์๋ง์ ๋ณ๋ ํ๋ก๊ทธ๋จ๋ค์ด ๋ค์ํจ ๊ธ๋ฃจ ์ฝ๋, ๋ํธ ํ ์ดํ, YAML ํ์ผ, ๊ทธ๋ฆฌ๊ณ ๋คํธ์ํฌ๋ฅผ ์ค๊ฐ๋ JSON ๋ฉ์ด๋ฆฌ๋ค๋ก ์ด์ด ๋ถ์ฌ์ ธ์ ํํ๋ฉ๋๋ค.
๋ํ, ์ฌ๋ฌ๋ถ์ด ๊ด์ฌ ์๋ ์ ์ฒด ๊ณ์ฐ์ ์ํํ๋๋ก ๋ชจ๋ ์ปดํจํ ์์์ ์ค์ ํ๋ ๊ฒ๋ ๋ณต์กํ ์ผ์ ๋๋ค. ์ ์ฒด์ ์ผ๋ก ๊ทธ ์์๋ค์ด ์ํ๋ ๊ณ์ฐ์ ์ํํ๋๋ก ํ๋ ฅํ๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋์ฑ ์ด๋ ต์ต๋๋ค. ์ด ๊ณผ์ ์์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์ ๊ณตํ๋ ์ฌ๋ฌ ๊ฐ์ง ํธ์ ๊ธฐ๋ฅ๋ ์ ํ ๋๋ฆฌ์ง ๋ชปํฉ๋๋ค. ๋จ์ผ ๋จธ์ ์ ๋์์ผ๋ก ํ๋ก๊ทธ๋จ์ ์์ฑํ ๋์๋, ์ผ๋ฐ์ ์ผ๋ก ํ์ ์ฒด์ปค๊ฐ ์์ด์ ๋ชจ๋ ์กฐ๊ฐ์ด ์๋ก ์ ๋ง๋์ง ๋์์ฃผ๊ณ , ์ฌ๋ฌ๋ถ์ ์ํ๋ ๋ฐฉ์์ผ๋ก ์ถ์ํ๋ฅผ ํ๊ณ , ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ๋ฅผ ๋์ ํ๋ ๋ฑ ๋ค์ํ ์ผ์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๋ฌ ์ปดํจํฐ๊ฐ ํจ๊ป ์ ์ฉํ ์ผ์ ํ๋๋ก ๋ง๋๋ ๋ ์ด์ด๋ฅผ ๊ตฌ์ฑํ ๋์๋ ์ด๋ฌํ ์ง์์ด ๋์ ๋๊ฒ ๋ถ์กฑํฉ๋๋ค.
Unison์์๋ ์ ์๊ฐ ์ฝํ ์ธ ํด์๋ก ์๋ณ๋๊ธฐ ๋๋ฌธ์, ์์์ ๊ณ์ฐ์ ํ ์์น์์ ๋ค๋ฅธ ์์น๋ก ๊ทธ๋ฅ ์ฎ๊ฒจ๊ฐ ์ ์๊ณ , ํ์ํ ์์กด์ฑ์ด ์๋ค๋ฉด ๊ทธ๋๊ทธ๋ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ ํ๋กํ ์ฝ์ ๋๋ต ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ ์ก์๋ ๋ฐ์ดํธ์ฝ๋ ํธ๋ฆฌ๋ฅผ ์์ ์์๊ฒ ๋ณด๋ด๊ณ , ์์ ์๋ ๊ทธ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉฐ ์์ ์๊ฒ ์๋ ํด์๊ฐ ์๋์ง ํ์ธํฉ๋๋ค. ํ์ํ ๋ชจ๋ ํด์๋ฅผ ์ด๋ฏธ ๊ฐ๊ณ ์๋ค๋ฉด ๊ณ์ฐ์ ๊ณง๋ฐ๋ก ์คํํ ์ ์๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ถ์กฑํ ๊ฒ๋ค์ ์์ฒญํ๊ณ , ์ ์ก์๋ ๊ทธ๊ฒ๋ค์ ์ฆ์์์ ๋๊ธฐํํด ์ค๋๋ค. ์ด๋ ๊ฒ ๋ฐ์ ๊ฒ๋ค์ ๋ค์ ๋ฒ์ ์ํด ์บ์๋ฉ๋๋ค.
์ด๋ ๊ฒ ์์์ ๊ณ์ฐ์ ์ฎ๊ธธ ์ ์๋ ๋ฅ๋ ฅ์, ๊ธฐ์กด์ ๋ ์ ํ์ ์ธ ๊ฐ๋ ๋ค์ธ ์ฝ๋ ๋ฐฐํฌ, ์๊ฒฉ ํ๋ก์์ ํธ์ถ(RPC) ๋ฑ์ ํฌ๊ด(subsume)ํ๋ฉฐ, ๊ฐ๋ ฅํ ๋ถ์ฐ ์ปดํจํ ์ปดํฌ๋ํธ๋ฅผ ํ๋ฒํ Unison ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ตฌ์ถํ ์ ์๊ฒ ํด ์ค๋๋ค.
ํ๋ก๊ทธ๋จ์ โ๊ทธ๋ฅโ ์คํํ๊ธฐ๋ง ํ๋ฉด, ๊ทธ ํ๋ก๊ทธ๋จ์ด ์ ์ฒด ๋ถ์ฐ ์์คํ ์ ๊ธฐ์ ํ ์ ์์ผ๋ฉด์๋ ์ฌ์ ์ ์๋ฌด๋ฐ ์ค์ ์ ํ์ง ์์๋ ๋๋ค๋ ์ ์ ๊ต์ฅํ ํด๋ฐฉ๊ฐ์ ์ค๋๋ค. ์ฝ๋๊ฐ ์คํ๋๊ธฐ ์ ์, ํ์ํ ์ฝ๋๋ฅผ ์คํํ ์ค๋น๋ฅผ ์ปดํจํ ์์์๊ฒ ์ํค๊ธฐ ์ํด(์ปจํ ์ด๋๋ฅผ ๋น๋ํ๊ณ , ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ jar ํ์ผ์ ์ด๋๊ฐ์ ์ ๋ก๋ํ๊ณ , ๊ธฐํ ๋ฑ๋ฑ) ์จ๊ฐ โ๋ฐ๊นฅ(band ๋ฐ)โ ์์ ์ ํ ํ์๊ฐ ์์ต๋๋ค. Unison์ ๋ถ์ฐ ์ปดํจํ ๋ชจ๋ธ์์๋ ๊ทธ๋ฅ ์ฝ๋๋ฅผ ์คํํ๊ธฐ๋ง ํ๋ฉด ๋๊ณ , ๋ถ์กฑํ ์์กด์ฑ์ ๊ทธ๋๊ทธ๋ ๋๊ธฐํํ๋ฉด ๋ฉ๋๋ค.
๋ฌผ๋ก ๋ถ์ฐ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ์ ํ ์ด๋ ค์ธ ์ ์์ผ๋ฉฐ, ๋ถ์ฐ ํ๋ก๊ทธ๋จ์ ์์ฐจ์ ์ธ ๋จ์ผ ๋จธ์ ํ๋ก๊ทธ๋จ๊ณผ๋ ๋ค๋ฆ ๋๋ค. ํ์ง๋ง ๋ถ์ฐ ํ๋ก๊ทธ๋๋ฐ์ด ๋ถํ์ํ๊ฒ ์ง๋ฃจํ๊ณ ๊ณ ํต์ค๋ฌ์ธ ํ์๋ ์์ต๋๋ค. ๋ถ์ฐ ํ๋ก๊ทธ๋จ์์ ์ ๋ง ์ค์ํ ๊ฒ๋ค์ ์๊ฐ์ ์ฐ๊ณ , ๋ฐฐํฌ์ ์ค์ , ๊ฐ์ ์ฎ๊ธฐ๊ธฐ ์ํ ์ง๋ฃจํ ์ธ์ฝ๋ฉ/๋์ฝ๋ฉ ์์ ์๋ ์๊ฐ์ ๋ญ๋นํ์ง ๋ง์๋ค!
Unison์์๋ ์ฝ๋๋ฅผ ๋น๋ํ๋๋ผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๊ฑฐ์ ์์ต๋๋ค. ์ ๊ทธ๋ด๊น์?
Unison ์ ์๋ ํด์๋ก ์๋ณ๋๋ฏ๋ก, ํ ๋ฒ ์ ์๋ ๋ค์๋ ์ ๋ ๋ณํ์ง ์์ต๋๋ค. ์ด๋ค ์ด๋ฆ์ด ์ด๋ค ํด์์ ์ฐ๊ฒฐ๋๋์ง๋ฅผ ๋ฐ๊พธ๋ ์ผ(์ด๊ฒ์ Unison์ ๋ฆฌํฉํฐ๋ง ๋ฐ ์ฝ๋ ์งํ ๋ฐฉ์์ ์ฌ์ฉ๋ฉ๋๋ค)์ ํ ์ ์์ง๋ง, ํน์ ํด์์ ์ฐ๊ฒฐ๋ ์ ์ ์์ฒด๋ ๋ฐ๋์ง ์์ต๋๋ค.
๋ฐ๋ผ์ ์ ์๋ค์ ํ ๋ฒ ํ์ฑํ๊ณ ํ์ ์ฒดํนํ ๋ค, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ๋ฌดํจํ๋์ง ์๋ ์บ์์ ์ ์ฅํ ์ ์์ต๋๋ค. ๊ฒ๋ค๊ฐ ์ด ์บ์๋ IDE๋ ๋น๋ ๋๊ตฌ ์์ ์กด์ฌํ๋ ์ด๋ค ์์ ์ํ(๊ฐ๋ ์ด์ํ๊ฒ ์ผ๊ด์ฑ์ด ๊นจ์ ธ ๋ฒ๋ฆฌ๋ ์ข ๋ฅ์ ๊ฒ)๊ฐ ์๋๋ผ, Unison ์ฝ๋๋ฒ ์ด์ค ํฌ๋งท์ ์ผ๋ถ์ ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ํ ๋ฒ ์ ์๋ฅผ ํ์ฑํ๊ณ ํ์ ์ฒดํนํ์ฌ ์ฝ๋๋ฒ ์ด์ค์ ์ถ๊ฐํด ๋์๋ค๋ฉด, ๊ทธ ์์ ์ ๋ค๋ฅธ ๋๊ตฌ๋ ๋ค์ ํ ํ์๊ฐ ์์ต๋๋ค.
์ด ์์ด๋์ด๋ ์์ ๊ณ์ฐ(pure computation)์ ๋ํ ํ ์คํธ ๊ฒฐ๊ณผ ์บ์์๋ ๊ทธ๋๋ก ์ ์ฉํ ์ ์์ต๋๋ค. I/O๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฐ์ ๋ก ์ ์ธ ํ ์คํธ๋ผ๋ฉด, ๊ทธ ์ด๋ค ์์กด์ฑ๋ ๋ฐ๋์ง ์์๋ค๋ฉด ๋ค์ ์คํํ ์ด์ ๊ฐ ์์ต๋๋ค!
์ด๋ ๊ฒ ์ ๋ฐ์ ์ผ๋ก ์บ์๋ฅผ ํ์ฉํจ์ผ๋ก์จ, ์ฌ๋ฌ๋ถ์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ์๊ฐ์ ์ฐ๊ณ , ์ปดํ์ผ๋ฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋ฐ ์๊ฐ์ ๋ญ๋นํ์ง ์๊ฒ ๋ฉ๋๋ค.
์์กด์ฑ ์ถฉ๋์ ๊ทผ๋ณธ์ ์ผ๋ก ์๋ก ๋ค๋ฅธ ์ ์๋ค์ด ๋์ผํ ์ด๋ฆ์ โ๋๊ณ ๊ฒฝ์โํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ ์ฐ๋ฆฌ๊ฐ ๋ ๋ค๋ฅธ ์ ์๊ฐ ๊ฐ์ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ ๊ฒฝ์ ์จ์ผ ํ ๊น์? ์ค์ ๋ก๋ ๊ทธ๋ด ํ์๊ฐ ์์ต๋๋ค. ์ด๋ฐ ์ ์ฝ์ ์ ์๋ฅผ ์ด๋ฆ์ผ๋ก ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์ผ ๋ฟ์ ๋๋ค. Unison์์๋ ์ ์๋ฅผ ํด์๋ก ์ฐธ์กฐํ๊ณ (์ด๋ฆ์ ๊ทธ์ ๋ฐ๋ก ์ ์ฅ๋๋ ๋ฉํ๋ฐ์ดํฐ์ผ ๋ฟ์ ๋๋ค), ๋ฐ๋ผ์ ์์กด์ฑ ์ถฉ๋๊ณผ ๋ค์ด์๋ชฌ๋ ์์กด์ฑ ๋ฌธ์ ๋ ์ ์ด์ ์๊ธฐ์ง ์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ง๊ธ โ์์กด์ฑ ์ถฉ๋โ์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์ํฉ์, Unison์์๋ ๊ทธ์ ๋น์ทํ ๋ชฉ์ ์ ๊ฐ์ง ์ฌ๋ฌ ๊ฐ์ ํญ(term)์ด๋ ํ์
์ด ์กด์ฌํ๋ ์ํฉ์ผ ๋ฟ์
๋๋ค. ์๋ฅผ ๋ค์ด Email ํ์
์ด ์๋ค๊ณ ํด ๋ด
์๋ค. ํ๋๋ Alice์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ v1์์ ์จ ๊ฒ์ด๊ณ , ๋ค๋ฅธ ํ๋๋ (์๋ง๋ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ์ ์ด์ ์ผ๋ก ํฌํจ๋) Alice์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ v2์์ ์จ ๊ฒ์ผ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฐ ์์กด์ฑ โ์ถฉ๋โ ๋๋ฌธ์ ๋น๋๊ฐ โ๋ง๊ฐ์ก๊ธฐโ ๋๋ฌธ์ ๋ชจ๋ ์ผ์ ๋ฉ์ถ๊ณ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ค๊ณ ์ฌ๊ฒจ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Unison์์๋ ์ฝ๋๋ฒ ์ด์ค ์์ ์๋ก ๋ค๋ฅธ ๋ ๊ฐ์ Email ํ์
์ด ๋ ๋ค๋๊ณ ์๋ ๊ฒ์ ์ ํ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค. ์ด ๋์ ์๋ก ๋ค๋ฅธ ํด์๋ฅผ ๊ฐ์ง ์๋ก ๋ค๋ฅธ ํ์
์ผ๋ก ์กด์ฌํ๋ฉฐ, ์ฌ๋ฌ๋ถ์ ์ด ๋์ ๋์์ ๋ค๋ฃฐ ์ ์๊ณ , ์ฌ์ง์ด ํ๋ฒํ ํจ์๋ค์ ์์ฑํ์ฌ ํ์ชฝ์์ ๋ค๋ฅธ ์ชฝ์ผ๋ก ๋ณํํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค.
๋ฌผ๋ก ์๊ฐ์ด ์ง๋๋ฉด์ ์ฌ๋ฌ๋ถ์ ์ฝ๋๋ฒ ์ด์ค ์์ ์๋ ๋ Email ํ์
์ ํ๋๋ก ํตํฉํ๊ณ ์ถ์ ์ ์์ต๋๋ค. ํ์ง๋ง ์ด๊ฑด ์ฌ๋ฌ๋ถ์ด ์ํ ๋ ์ฒ์ฒํ ํ ์ ์๋ ์ผ์
๋๋ค. ๊ทธ๋์ ์ฝ๋๋ฒ ์ด์ค๊ฐ โ๋ง๊ฐ์ง ์ํโ๊ฐ ๋์ง ์์ผ๋ฉฐ, ์ด ์ถฉ๋์ด ํด๊ฒฐ๋ ๋๊น์ง ์ฝ๋๋ฅผ ์คํํ์ง๋ ๋ชปํ๊ณ ์๋ฌด ๊ฒ๋ ๋ชป ํ๋ ์ํฉ์ ๋น ์ง์ง๋ ์์ต๋๋ค.
โ๊ฐ์โ ํจ์๋ ํ์ ์ ์ฌ๋ฌ ๋ฒ์ ์ด ์ฝ๋๋ฒ ์ด์ค ์์ ๋ ๋ค๋๋ ๊ฒ์, ์ฌ์ค ์ฝ๋๋ฒ ์ด์ค ์์ ์๊ธธ ์ ์๋ ๋ค๋ฅธ ์ข ๋ฅ์ ์ค๋ณต๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋์ค์ ๋ณด๋ ์ด๋ค ๊ณตํต ์ถ์ํ๋ก ์ ์ํ ์ ์์ ๋ฒํ ๋น์ทํ ํจ์๋ค์ด ์ฌ๋ฌ ๊ฐ ์๋ ์ํฉ๊ณผ ๋น์ทํฉ๋๋ค. ์ ์ ํ ์๊ธฐ๊ฐ ๋๋ฉด ๊ทธ๋ฐ ์ค๋ณต์ ์ ๋ฆฌํด์ ํ๋๋ก ๋ชจ์ผ๊ฒ ์ง๋ง, ์ด๋ฐ ์์ฐ์ค๋ฌ์ด ๊ณผ์ ์ด ๋ ๋ค๋ฅธ ๋ชจ๋ ์์ ๋ณด๋ค ์ต์ฐ์ ์ด ๋์ด์ผ ํ ํ์๋ ์์ต๋๋ค.
๊ฐ์ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ๋ ๋ฐ์๋ ๋ ๊ฐ์ง ์ธก๋ฉด์ด ์์ต๋๋ค. ํ๋๋ ํฅ๋ฏธ๋ก์ด ๋ถ๋ถ์ ๋๋ค. ์ฆ, ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํด ์ด๋ค ์คํค๋ง๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด์ผ, ํน์ ์ง์๋ ๊ณ์ฐ์ด ํจ์จ์ ์ผ๋ก ๋์ํ ์ง๋ฅผ ๊ณ ๋ฏผํ๋ ๊ฒ์ ๋๋ค.
๋ค๋ฅธ ํ๋๋ ํฅ๋ฏธ๋กญ์ง ์์ ๋ถ๋ถ์ ๋๋ค. ํ๋ก๊ทธ๋จ๊ณผ ๊ทธ ์๋ ์ ์ฅ์ ๊ณ์ธต(SQL, NoSQL ๋๋ ๊ทธ ์ธ ์ด๋ค ๊ฒ์ด๋ ) ์ฌ์ด์ ๊ฒฝ๊ณ์์, ์ง๋ ฌํ์ ์ญ์ง๋ ฌํ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ชจ๋ ์ง๋ฃจํ ์์ ๋ค์ ๋๋ค.
Unison์์๋ ์ด๋ค ๊ฐ์ด๋ (ํจ์๋, ํจ์๋ฅผ ํฌํจํ๋ ๊ฐ๊น์ง๋) ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง๋ ฌํ ํฌ๋งท์ ์ง์ ์ง์ ํ๊ฑฐ๋ ์ธ์ฝ๋/๋์ฝ๋๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ์์ํ(persist)ํ๊ณ ๋์ค์ ๋ค์ ๋ณต์(unpersist)ํ ์ ์์ต๋๋ค.
์ฌ๋๋ค์ด ์ข ์ข ์๋์ผ๋ก ์ธ์ฝ๋ฉ/๋์ฝ๋ฉ ๊ณ์ธต์ ์์ฑํ๋ ์ด์ ์ค ํ๋๋, ์์ 0์์ ๋ฐ์ดํฐ๋ฅผ ์ง๋ ฌํํ๋ ์ฝ๋๋ฒ ์ด์ค์, ์๊ฐ์ ํน์ ์๋ ํ์ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ญ์ง๋ ฌํํ๋ ์ฝ๋๋ฒ ์ด์ค๊ฐ ์๋ก ๋ค๋ฅผ ์ ์๋ค๊ณ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์๋ก์ด ์ฝ๋๋ฒ ์ด์ค๊ฐ ๋ค๋ฅธ ๋ฒ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๊ทธ๋ฌ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ฝ์ด ์ฌ ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค! ๋ฐ๋ผ์ ์ ์ฅ ๊ฒฝ๊ณ๋ฅผ ๊ธฐ์ค์ผ๋ก SQL์ ํ, JSON ๋ธ๋กญ ๋ฑ๊ณผ ๊ฐ์ ์์ ์ ์ธ ํฌ๋งท์ผ๋ก ๋ณํํ๊ธฐ ์ํ ์ง๋ฃจํ ์ฝ๋๋ฅผ ์์ชฝ์ ์์ฑํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฝํ ์ธ ํด์๋ก ์๋ณ๋๋ ์ ์๋ฅผ ์ง๋ ฌํํ๋ฉด ์ด๋ฌํ ์ด๋ ค์์ ํผํ ์ ์์ต๋๋ค. ์ ์๋ ์ ๋ ๋ณํ์ง ์์ผ๋ฉฐ, ์ญ์ง๋ ฌํ๋ฅผ ํ๋ฉด ์ธ์ ๋ ์ฒ์ ์ง๋ ฌํํ์ ๋์ ๋์ผํ ์๋ฏธ๋ฅผ ๊ฐ์ง ๊ฐ์ ์ป๊ฒ ๋ฉ๋๋ค.
๋ ๋์๊ฐ ์ด ์์ด๋์ด๋ฅผ ํตํด ์ ์ฅ ๊ณ์ธต ์์ฒด๋ฅผ ํ์ ์ด ์๋๋ก ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋์ ํ์ ์์คํ ์ ์ฌ๋ฌ๋ถ์ ํ๋ก๊ทธ๋จ์ด ์์ง ๋ชปํ๋ ๋ณ๋์ ํ์ ์์คํ (SQL์ ์๋ ๊ฒ์ฒ๋ผ)์ด ์๋๋ผ, ์ฌ๋ฌ๋ถ์ Unison ํ๋ก๊ทธ๋จ์ ์ผ๋ถ์ ๋๋ค. ์ฆ, ํ๋ก๊ทธ๋จ์ด ์ด๋ค ๊ฐ์ ์์ํํ๋ฉด, ์ ์ฅ ๊ณ์ธต์ ๋ํ ํ์ ์ด ๋ถ์ ์ฐธ์กฐ(typed reference)๋ฅผ ์ป๊ฒ ๋๊ณ , Unison์ ํ์ ์์คํ ์ ๊ทธ ์ฐธ์กฐ๋ฅผ ๋ค์ ๋ก๋ํ ๋ ๊ธฐ๋ํ ํ์ ์ ๊ฐ์ ๋ฐ๊ฒ ๋ ๊ฒ์์ ๋ณด์ฅํด ์ค๋๋ค.
Unison์ผ๋ก ๋ถ์ฐ ์ ์ฅ์ ๊ณ์ธต์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ธ๋ ๊ณง ๋ค๋ฃฐ ์์ ์ ๋๋ค.
Unison ์ฝ๋๋ฒ ์ด์ค๋ ์์ ์ด ์ ์ฅํ๋ ๋ชจ๋ ๊ฒ์ ํ์ ์ ์๊ณ ์๊ณ , ์๋ฒฝํ ์ปดํ์ผ ์บ์๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์์กด์ฑ์ ๋ํ ์์ ํ ์ง์์ ๊ฐ์ง๊ณ ์๊ณ , ํ์ ๊ธฐ๋ฐ ๊ฒ์์ ์ํ ์ธ๋ฑ์ค ๋ฑ์ ๊ฐ์ถ, ์ ๋๋ก ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค. ์ด ๋๋ถ์ ์ฝ๋๋ฅผ ๋๋ฌ๋ณด๊ณ ์ํธ์์ฉํ๊ธฐ ์ํ ํจ์ฌ ๋ ํ๋ถํ ๋๊ตฌ๋ฅผ ์์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Unison Share๋ ์ํ๊ณ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์์ ํ ํ์ดํผ๋งํฌ๋ Unison ์ฝ๋ ํํ๋ก ๋๋ฌ๋ณผ ์ ์๊ฒ ํด์ฃผ๋ฉฐ, ํ์ดํผ๋งํฌ๊ฐ ๋ฌ๋ฆฐ ๋ด์ฅ ์ฝ๋ ์ํ์ ํฌํจํ๋ ํ๋ถํ ๋ฌธ์๋ ๋ ๋๋งํฉ๋๋ค.
์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ด๋ ๊ฒ ๋ ๊ตฌ์กฐํ๋ ๋ฐฉ์์ผ๋ก ์ ์ฅํ๋ฉด, ์ด๋ฐ ๊ธฐ๋ฅ๋ค์ ์ง์ํ๋ ๊ฒ์ด ํจ์ฌ ๊ฐ๋จํด์ง๋๋ค. Unison Share์ ์ฒซ ๋ฒ์ ์ Unison ์ฝ๋๋ฒ ์ด์ค API์ ์ด๋ฏธ ์กด์ฌํ๋ ํ๋ถํ ์ ๋ณด๋ฅผ ํ์ฉํ์ฌ, ํ ์ฌ๋์ด ๋ช ๋ฌ ๋ง์ ์์ฑํ์ต๋๋ค.
์ฝ๋๋ ๊ทผ๋ณธ์ ์ผ๋ก ๊ตฌ์กฐํ๋ ์ ๋ณด์ ๋๋ค. ์ฐ๋ฆฌ๋ ํธ์์ ์ฝ๋๋ฅผ ํ ์คํธ๋ก ํธ์งํ์ง๋ง, ์ฌ์ค ์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ํ๊ณ ์ถ์ ๊ฑฐ์ ๋ชจ๋ ์ผ์ ์ด๋ฅผ ๋ ๊ตฌ์กฐํ๋ ํํ๋ก ๋ณํํ ๋ค์ ํ๋ ํธ์ด ๋ ๋ซ์ต๋๋ค.
๊ฐ๋จํ ์๋ฅผ ํ๋ ์ดํด๋ด ์๋ค. ์ ์ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ(rename) ์ ๋๋ค. ์ฝ๋๊ฐ ๊ฐ๋ณ ํ ์คํธ ํ์ผ๋ค์ ๋ฌถ์์ผ๋ก ํํ๋์ด ์์ ๋, ์ ์๋ฅผ ์ ํํ๊ฒ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ ์ํด์๋ ๋จผ์ ๊ทธ ํ ์คํธ ํ์ผ๋ค์, ์ธ์ด์ ์ค์ฝํ ๊ท์น์ ๋ฐ๋ฅด๋ฉฐ ์์กด์ฑ์ด ๋ช ์์ ์ผ๋ก ๋๋ฌ๋๋ ๊ตฌ๋ฌธ ํธ๋ฆฌ๋ก ๋ณํํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํด์ผ ๊ตฌ๋ฌธ ํธ๋ฆฌ์ ์ด๋ค ๋ถ๋ถ์ด ์ด๋ฆ์ ๋ฐ๊พธ๋ ค๋ ๋์์ ์ฐธ์กฐํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๋ถ๋ถ์ ๋จ์ง ๊ฐ์ ๋ฌธ์์ด์ ํฌํจํ๊ณ ์์ง๋ง ์ค์ ๋ก๋ ๋ค๋ฅธ ๊ฒ(์๋ฅผ ๋ค์ด ๋ก์ปฌ ๋ณ์)์ ๋ฐ์ธ๋ฉ๋์ด ์๊ฑฐ๋, ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ด๋ ์ฃผ์ ์์ ๋ค์ด ์๋ ๊ฒ์ธ์ง๋ฅผ ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
์ด๋ฆ ๋ฐ๊พธ๊ธฐ๊ฐ ๋๋ ๋ค์๋, ์์ ๋ ๊ตฌ๋ฌธ ํธ๋ฆฌ๋ฅผ ๋ค์ ํ ์คํธ๋ก ์ง๋ ฌํํด์ผ ํ๋ฉฐ, ์ด ๊ณผ์ ์์ ๊ฑฐ๋ํ ํ ์คํธ diff๊ฐ ์์ฑ๋๊ณ , ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค๊ณผ ๋์์ ์ฝ๋๋ฅผ ์์ ํ๊ณ ์๋ค๋ฉด ์๋ง์ ์ถฉ๋์ด ์๊ธธ ์ ์์ต๋๋ค. ๋๊ตฐ๋ค๋, ์ด๋ฆ ๋ฐ๊พธ๊ธฐ๊ฐ ๊ณต๊ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ ์ ์์ ๋ํด ์ด๋ฃจ์ด์ก๋ค๋ฉด, ๋ค์ด์คํธ๋ฆผ ์ฌ์ฉ์๋ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๋ ์๊ฐ ์ฝ๋๋ฒ ์ด์ค๊ฐ ๋ง๊ฐ์ง ์ํ๊ฐ ๋์ด ๋ฒ๋ฆด ๊ฒ์ ๋๋ค. ์ด๊ฑฐ ์ข ์ฐ์ค๊ฝ์ค๋ฝ์ง ์๋์?
๋ ๋ค๋ฅธ ์๋ฅผ ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ๋น๋ ๋๊ตฌ์ IDE์ ์ผ์์ ์ธ ์ปดํ์ผ ์บ์์ ๋๋ค. ์ด๋ฐ ๋๊ตฌ๋ค์ ํ ์คํธ ์ฝ๋๋ฅผ ๋ ํ๋ถํ ํํ๋ก ์ฒ๋ฆฌํ์ฌ ์บ์ํ๋ ค๊ณ ํ๊ณ , ์ฝ๋๋ฅผ ๋ถํ์ํ๊ฒ ์ฌ์ปดํ์ผํ์ง ์์ผ๋ ค ๋งค์ฐ ๋ ธ๋ ฅํ์ง๋ง, ๊ธฐ๋ณธ ํ ์คํธ ํ์ผ์ด ๋๊ตฌ์ ๋์์์ ๊ณ์ ๋ฐ๋์ด ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ด ์์ ์ ๋งค์ฐ ์ด๋ ต์ต๋๋ค.
Unison์ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ ๋๋ก ๋ โ์ฝ๋ ๋ฐ์ดํฐ๋ฒ ์ด์คโ๋ก ํํํจ์ผ๋ก์จ ์ด๋ฌํ ์ด๋ ค์์ ์๋น ๋ถ๋ถ์ ํผํด ๊ฐ๋๋ค. ์ฌ๋ฌ๋ถ์ ์ฌ์ ํ ์ ํธํ๋ ํ ์คํธ ํธ์ง๊ธฐ๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ณ ํธ์งํ์ง๋ง, ์ฝ๋๊ฐ ์ฝ๋๋ฒ ์ด์ค๋ก โํก์(slurp)โ๋๋ ์๊ฐ, ์ ๊ฐ๊ณต๋ ํํ๋ก ์ ์ฅ๋๋ฉฐ, ์ด ๋๋ถ์ ๊นจ์ง์ง ์๋ ์ฆ๊ฐ์ ์ธ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ, ํ์ ๊ธฐ๋ฐ ๊ฒ์, ํ์ดํผ๋งํฌ๋ ์ฝ๋ ๋ฑ ๋ค์ํ ์ด์ ์ ์ป๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ค ์ ์๋ ํ ๋ช ๋ น๋ง์ผ๋ก(์์๊ฒ pretty-print ๋๊ณ , ์ ์์ ๋ํด ์ต์ ์ด๋ฆ์ ์ฌ์ฉํ ์ฑ๋ก) ๋ค์ ํ ์คํธ ๋ฒํผ์ ๊ฐ์ ธ์ ์ฝ๊ฒ ํธ์งํ ์ ์์ต๋๋ค.
ํํธ์ผ๋ก, ํ ์คํธ ํ์ผ๊ณผ ํ ์คํธ ๊ธฐ๋ฐ ๋๊ตฌ๋ค์ ์ด๋ฏธ ๊ฑฐ๋ํ ์ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ์ฌ๋๋ค๋ ์ต์ํฉ๋๋ค. ํ์ง๋ง ์ฝ๋๋ฅผ ์ ์ฅํ๋ ํ์์ผ๋ก์ ํ ์คํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์, ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ ๊ตฌ์กฐํ๋ ๋ฐฉ์์ผ๋ก ํํํ์ ๋ Unison์ด โ๊ณต์ง๋กโ ์ป๋ ์์ฒญ๋ ์ด์ ๋ค์ ๋์น๊ฒ ๋ง๋ญ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์์ง ์ด ๊ฐ๋ฅ์ฑ์ ํ๋ฉด๋ง ๊ธ์ด ๋ณธ ์ํ์ ๋๋ค. Unison์ ์ฝ๋ ์์ ๋๊ตฌ๋ค์ ์์ผ๋ก๋ ๊ณ์ ์ข์์ง ๊ฒ์ด๊ณ , ํ ์คํธ ๊ธฐ๋ฐ ์ฝ๋๋ฒ ์ด์ค๋ก๋ ๊ตฌํํ๊ธฐ ์ด๋ ต๊ฑฐ๋ ๋ถ๊ฐ๋ฅํ ์ ํ ์๋ก์ด ๊ฐ๋ฅ์ฑ๋ค์ด ์ด๋ฆด ๊ฒ์ ๋๋ค.
Unison์ ๊ทผ๋ณธ ๋ชจ๋ธ์์๋ ์ ์ ์์ฒด๋ ์ ๋ ๋ณํ์ง ์์ง๋ง, ์ฌ๋์ด ์ฝ์ ์ ์๋ ์ด๋ฆ์ด ์ด๋ค ์ ์(์ด๋ค ํด์)๋ฅผ ๊ฐ๋ฆฌํค๋์ง๋ ๋๋๋ก ๋ฐ๊พธ๊ณ ์ถ์ ์ ์์ต๋๋ค. ๋ฒ๊ทธ๋ฅผ ๊ณ ์ณ์ผ ํ๊ฑฐ๋, ์ฑ๋ฅ์ ๊ฐ์ ํด์ผ ํ๊ฑฐ๋, ๋จ์ํ ๊ธฐ์กด ์ด๋ฆ์ ์๋ก์ด ์ ์์ ์ฌ์ฌ์ฉํ๊ณ ์ถ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
Unison์์๋ ์ด๋ค ์ด๋ฆ์ด ์ด๋ค ํด์์ ๋งคํ๋๋์ง๋ฅผ ๋ฐ๊พธ๋ ์์ ์, ์ผ๋ฐ์ ์ธ โํ ์คํธ ํ์ผ์ ์ ์๋ฆฌ์์ ๋ฐ๊พธ๊ณ , ์ฐ๋๋ฏธ ๊ฐ์ ์คํด๋ฅผ ๋ถ๋ฌ์ผ์ผํค๋ ์ปดํ์ผ ์๋ฌ์ ์คํจํ ํ ์คํธ๋ฅผ ๋์ค์ ๊ณ ์น๋โ ๋ฐฉ์์ด ์๋๋ผ, ๊ตฌ์กฐ์ ๋ฆฌํฉํฐ๋ง ์ธ์ ์ ํตํด ์ํํฉ๋๋ค. Unison ์ฝ๋๋ฒ ์ด์ค๋ ๋ฆฌํฉํฐ๋ง ๋์ค์๋ ๊ฒฐ์ฝ ๋ง๊ฐ์ง ์ํ๊ฐ ๋์ง ์์ต๋๋ค.
์ฌ๋ฌ๋ถ์ ์ฝ๋๋ฒ ์ด์ค๊ฐ ๋ง์น ์ด๊ณ ์ธต ๋น๋ฉ ๊ฐ๋ค๊ณ ํด ๋ด ์๋ค. ์ผ๋ฐ์ ์ธ ๋ฆฌํฉํฐ๋ง ๋ฐฉ์์ ๊ธฐ์ด๊ฐ ๋๋ ๊ธฐ๋ฅ ํ๋๋ฅผ ๋ฝ์ ๋ด๋ ๊ฒ๊ณผ ๋น์ทํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋น๋ฉ์ ๋ฌด๋์ ธ ํํ(๊ธด ๋ชฉ๋ก์ ์คํด๋ฅผ ๋ถ๋ฅด๋ ์ปดํ์ผ ์๋ฌ)๋ก ๋ณํ๊ณ , ์ฌ๋ฌ๋ถ์ ๊ทธ ํํ ์์์ ๋ค์ ์ ๋๋ก ์ ์๋ ๋น๋ฉ์ ์ฌ๊ฑดํ๋ ค๊ณ ์ ์จ์ผ ํฉ๋๋ค.
Unison์ ์ ๊ทผ๋ฒ์ ๊ธฐ์กด ๋น๋ฉ์ ๊ทธ๋๋ก ๋๊ณ , ๋ง๋ฒ์ ๋ณต์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํด ๊ทธ ์ผ๋ถ๋ฅผ ์๋ก์ด ๋น๋ฉ์ผ๋ก ๋ณต์ฌํด ์ค๋ ๊ฒ์ ๋๋ค. ์ฝ๋๋ฒ ์ด์ค๋ ๊ฒฐ์ฝ ๋ง๊ฐ์ง ์ํ๊ฐ ๋์ง ์์ต๋๋ค. ๋ชจ๋ ์ฝ๋๋ ์ธ์ ๋ ์คํ ๊ฐ๋ฅํฉ๋๋ค. ๋ค๋ง ๋ฆฌํฉํฐ๋ง ๋์ค์๋ ์์ง ๋ ๋ฒ์งธ ๋น๋ฉ์ ์์ ํ ๋ค ์ง์ด ์ด๋ฆ์ ๋ชจ๋ ์ฎ๊ฒจ ๋์ง๋ ์์์ ์ ์์ต๋๋ค. Unison์ ์ด ์งํ ์ํฉ์ ์ถ์ ํ๋ฉฐ, ์ฌ๋ฌ๋ถ์ด ์ฒ๋ฆฌํด์ผ ํ ๊น๋ํ ํ ์ผ ๋ชฉ๋ก(todo list)์ ์ ๊ณตํฉ๋๋ค.
์ฝํ ์ธ ์ฃผ์ ๋ฐฉ์ ์ฝ๋(content-addressed code)๋ผ๋ ์์ด๋์ด์ ํจ๊ป ์๊ฐ์ ์ค๋ ๋ณด๋ด๋ค ๋ณด๋ฉด, ์ด ๊ฐ๋ ์ด ์ ์ ๋จธ๋ฆฟ์์ ์ฌ๋ก์ก๊ธฐ ์์ํฉ๋๋ค. ์ด๊ฑด ์ด๋ค ์์์ ์ด๊ฑฐ๋ ์ด์ํ ๊ฒ์ด ์๋๋ผ, ์์ฒญ๋ ์ค์ฉ์ ์ด์ ์ ๊ฐ์ง ๋ ผ๋ฆฌ์ ์ด๊ณ ํฉ๋ฆฌ์ ์ธ ์ ํ์ ๋๋ค. ์ด ์์ด๋์ด์ ๋จ์ํจ์ ์ ์ ๋ ๋์ด ํ๊ฐํ๊ฒ ๋๊ณ , ์ด๋์์๋ ์ด ๊ฐ๋ ์ด ํ์ํด ๋ณด์ด๊ธฐ ์์ํฉ๋๋ค(โ์ฝ๋๊ฐ ์ฝํ ์ธ ์ฃผ์ ๋ฐฉ์์ด์๋ค๋ฉด ์ด๊ฑด ํจ์ฌ ์ฌ์ ์ ํ ๋ฐโฆโ). ๊ทธ๋ฐ๋ฐ ์ด ์์ด๋์ด๋ฅผ ์ค์ฌ์ผ๋ก ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ค์ ๋ก ๋ง๋๋ ๊ฒ์ด ๊ณผ์ฐ ํ์ค์ ์ผ๊น์? ๋ค, ๊ทธ๋ ์ต๋๋ค!
Unison์ ๋ง๋๋ ์ฆ๊ฑฐ์์ ์ผ๋ถ๋, ํ๋ฅญํด ๋ณด์ด๋ ์ด ํต์ฌ ์์ด๋์ด์ ํจ์๋ฅผ ๋๊น์ง ๋ฐ๋ผ๊ฐ ๋ณด๋ ๋ฐ ์์์ต๋๋ค. ๊ทธ ๊ณผ์ ์์ ํฐ ์ง๋ฌธ์ด ํ๋ ๋์์ต๋๋ค. ์ ์ ์์ฒด๋ ๋ณํ์ง ์๋๋ผ๋, ์ฐ๋ฆฌ๋ ๋๋๋ก ๊ด์ฌ ์๋ ์ ์๋ฅผ ๋ฐ๊พธ๊ณ ๊ทธ ์ ์์ ๋ณด๊ธฐ ์ข์ ์ด๋ฆ์ ๋ถ์ด๊ณ ์ถ์ด ํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ๊ทธ๊ฑด ์ด๋ป๊ฒ ์๋ํด์ผ ํ ๊น์? ์ด๋ป๊ฒ ๋ฆฌํฉํฐ๋ง์ ํ๊ฑฐ๋ ์ฝ๋๋ฅผ ์ ๊ทธ๋ ์ด๋ํ ์ ์์๊น์? ์ฝ๋๋ฒ ์ด์ค๋ ์ฌ์ ํ ๋จ์ง ๊ฐ๋ณ ํ ์คํธ ํ์ผ๋ค์ ๋ฌถ์์ผ๊น์, ์๋๋ฉด ๋ค๋ฅธ ๋ฌด์ธ๊ฐ๊ฐ ํ์ํ ๊น์?
์ฝํ ์ธ ์ฃผ์ ๋ฐฉ์ ์ฝ๋๋ฅผ ํธํ๊ฒ ๋ค๋ฃจ๋ ค๋ฉด, ์ค์ ๋ก ๋ค๋ฅธ ๋ฌด์ธ๊ฐ๊ฐ ํ์ํฉ๋๋ค. Unison์์๋ ์ด ๋ฌด์ธ๊ฐ๋ฅผ Unison ์ฝ๋๋ฒ ์ด์ค ๋งค๋์ (Unison Codebase Manager) ๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
๐ ์ฝ๋๋ฒ ์ด์ค ๋งค๋์ ์ Unison ์ธ์ด ๋๋ฌ๋ณด๊ธฐ