ํ๋ก ํธ์๋ ์ค์๊ฐ ์ถฉ๋ ํด๊ฒฐ ๋ฐ ํ์ ํธ์ง ๋ณํฉ ๋ก์ง์ ์ฌ์ธต ๋ถ์ํฉ๋๋ค. OT, CRDT ๋ฑ ํต์ฌ ๊ธฐ์ ๊ณผ ์ค์ฉ์ ์์ ๋ฅผ ํตํด ์ ์ธ๊ณ ๊ฐ๋ฐ์์๊ฒ ํฌ๊ด์ ์ธ ์ดํด๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํ๋ก ํธ์๋ ์ค์๊ฐ ์ถฉ๋ ํด๊ฒฐ: ํ์ ํธ์ง ๋ณํฉ ๋ก์ง
์ค๋๋ ๊ณผ ๊ฐ์ด ์ํธ ์ฐ๊ฒฐ๋ ์ธ์์์, ๋์งํธ ๋ฌธ์์ ์ฝ๋๋ฅผ ์ค์๊ฐ์ผ๋ก ์ํํ๊ฒ ํ์ ํ๋ ๋ฅ๋ ฅ์ ๋ ์ด์ ์ฌ์น๊ฐ ์๋ ํ์๊ฐ ๋์์ต๋๋ค. ๋ค๋ฅธ ์๊ฐ๋์์ ์ผํ๋ ๊ธ๋ก๋ฒ ํ๋ถํฐ ๊ฐ์ธ ํ๋ก์ ํธ์์ ํ๋ ฅํ๋ ๊ฐ์ธ์ ์ด๋ฅด๊ธฐ๊น์ง, ๊ฐ๋ ฅํ๊ณ ํจ์จ์ ์ธ ํ์ ํธ์ง ์๋ฃจ์ ์ ๋ํ ์์๋ ๊ณ์ํด์ ์ฆ๊ฐํ๊ณ ์์ต๋๋ค. ์ด ๊ธ์ ํ๋ก ํธ์๋์์ ์ด๋ฌํ ๊ธฐ๋ฅ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ํต์ฌ ๊ฐ๋ ๊ณผ ๊ธฐ์ ์ ๊น์ด ํ๊ณ ๋ค๋ฉฐ, ํนํ ์ถฉ๋ ํด๊ฒฐ๊ณผ ๋์ ํธ์ง ์ฒ๋ฆฌ์ ์ค์ํ ๋ณํฉ ๋ก์ง์ ์ด์ ์ ๋ง์ถฅ๋๋ค.
๊ณผ์ ์ดํดํ๊ธฐ: ๋์ ํธ์ง๊ณผ ์ถฉ๋
ํ์ ํธ์ง์ ํต์ฌ์๋ ๋์ ํธ์ง ์ฒ๋ฆฌ๋ผ๋ ๊ณผ์ ๊ฐ ์์ต๋๋ค. ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ๊ฐ์ ๋ฌธ์๋ฅผ ์์ ํ๋ฉด ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด ์๊น๋๋ค. ์ด๋ฌํ ์ถฉ๋์ ๋ ์ด์์ ์ฌ์ฉ์๊ฐ ๋ฌธ์์ ๋์ผํ ๋ถ๋ถ์ ์์ถฉํ๋ ๋ณ๊ฒฝ์ ๊ฐํ ๋ ๋ฐ์ํฉ๋๋ค. ์ด๋ฌํ ์ถฉ๋์ ํด๊ฒฐํ ์ ์ ํ ๋ฉ์ปค๋์ฆ์ด ์์ผ๋ฉด ์ฌ์ฉ์๋ ๋ฐ์ดํฐ ์์ค, ์๊ธฐ์น ์์ ๋์ ๋๋ ์ ๋ฐ์ ์ผ๋ก ์ค๋ง์ค๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฒช์ ์ ์์ต๋๋ค.
๋ฐ๋๊ณผ ๋์ฟ ๊ฐ์ ๋ค๋ฅธ ์์น์ ์๋ ๋ ์ฌ์ฉ์๊ฐ ๋์ผํ ๋ฌธ๋จ์ ํธ์งํ๋ ์๋๋ฆฌ์ค๋ฅผ ์๊ฐํด ๋ด ์๋ค. ๋ฐ๋์ ์ฌ์ฉ์ A๋ ๋จ์ด๋ฅผ ์ญ์ ํ๊ณ , ๋์ฟ์ ์ฌ์ฉ์ B๋ ๋จ์ด๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๋ง์ฝ ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ถฉ๋ ํด๊ฒฐ ์์ด ์ ์ฉ๋๋ค๋ฉด, ์ต์ข ๋ฌธ์๋ ์ผ๊ด์ฑ์ด ์์ ์ ์์ต๋๋ค. ๋ฐ๋ก ์ด ์ง์ ์์ ์ถฉ๋ ํด๊ฒฐ ์๊ณ ๋ฆฌ์ฆ์ด ํ์์ ์ด ๋ฉ๋๋ค.
ํต์ฌ ๊ฐ๋ ๊ณผ ๊ธฐ์
์ค์๊ฐ ํ์ ํธ์ง์ ๊ณผ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ๋ฌ ๊ธฐ์ ์ด ๊ฐ๋ฐ๋์์ต๋๋ค. ๊ฐ์ฅ ๋๋๋ฌ์ง ๋ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ ์ด์ ๋ณํ(Operational Transform, OT)๊ณผ ์ถฉ๋ ์๋ ๋ณต์ ๋ฐ์ดํฐ ํ์ (Conflict-free Replicated Data Types, CRDTs)์ ๋๋ค.
์ด์ ๋ณํ(Operational Transform, OT)
์ด์ ๋ณํ(OT)์ ๊ฐ ์ฌ์ฉ์๊ฐ ์ํํ ์์ ์ ๋ณํํ์ฌ ๋ชจ๋ ํด๋ผ์ด์ธํธ์์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ผ๊ด๋๊ฒ ์ ์ฉ๋๋๋ก ๋ณด์ฅํ๋ ๊ธฐ์ ์ ๋๋ค. ํต์ฌ์ ์ผ๋ก OT๋ ํ ์คํธ ์ฝ์ , ํ ์คํธ ์ญ์ ๋๋ ์์ฑ ๋ณ๊ฒฝ๊ณผ ๊ฐ์ ์์ ์ ์ ์ํ๋ ์์ด๋์ด์ ์์กดํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ณ๊ฒฝ์ ๊ฐํ๋ฉด ํด๋น ์์ ์ ์๋ฒ๋ก ์ ์ก๋๊ณ , ์๋ฒ๋ ๋ค๋ฅธ ๋ชจ๋ ๋์ ์์ ์ ๋ํด ํด๋น ์์ ์ ๋ณํํฉ๋๋ค. ์ด ๋ณํ์ ์์ ์ด ์ผ๊ด๋ ์์๋ก ์ ์ฉ๋๋๋ก ๋ณด์ฅํ์ฌ ์ถฉ๋์ ์ํํ๊ฒ ํด๊ฒฐํฉ๋๋ค.
์์: ์ฌ์ฉ์ A๊ฐ ์์น 5์ "world"๋ฅผ ์ฝ์ ํ๊ณ ์ถ๊ณ , ์ฌ์ฉ์ B๋ ์์น 3-7์ ๋ฌธ์๋ฅผ ์ญ์ ํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ๊ธฐ ์ ์ ์๋ฒ๋ ์ด ์์ ๋ค์ ์๋ก์ ๋ํด ๋ณํํด์ผ ํฉ๋๋ค. ๋ณํ์๋ ๊ธฐ๋ณธ OT ๋ก์ง์ ๋ฐ๋ผ ์ฌ์ฉ์ A์ ์ฝ์ ์์น๋ฅผ ์กฐ์ ํ๊ฑฐ๋ ์ฌ์ฉ์ B๊ฐ ์ญ์ ํ ๋ฒ์๋ฅผ ์กฐ์ ํ๋ ๊ฒ์ด ํฌํจ๋ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ ์ฌ์ฉ์ ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
OT์ ์ฅ์ :
- ์ฑ์ํ๊ณ ์ ์ ๋ฆฝ๋์ด ์์ต๋๋ค.
- ์ผ๊ด์ฑ๊ณผ ์๋ ด์ ๋ํ ๊ฐ๋ ฅํ ๋ณด์ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๋ง์ ํ์ ํธ์ง๊ธฐ์์ ๋๋ฆฌ ๊ตฌํ๋์ด ์์ต๋๋ค.
OT์ ๋จ์ :
- ๊ตฌํ์ด ๋ณต์กํ๋ฉฐ, ํนํ ๋ณต์กํ ๋ฌธ์ ๊ตฌ์กฐ์์๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
- ํจ์จ์ ์ผ๋ก ํ์ฅํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
- ๋ณํ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ค์ ์ง์ค์ ์๋ฒ๊ฐ ํ์ํฉ๋๋ค.
์ถฉ๋ ์๋ ๋ณต์ ๋ฐ์ดํฐ ํ์ (Conflict-free Replicated Data Types, CRDTs)
์ถฉ๋ ์๋ ๋ณต์ ๋ฐ์ดํฐ ํ์ (CRDTs)์ ํ์ ํธ์ง์ ๋ํด ๋ค๋ฅธ ์ ๊ทผ๋ฒ์ ์ ๊ณตํ๋ฉฐ, ๋ณํ์ ์ํ ์ค์ ์กฐ์ ์์ด ๋ณธ์ง์ ์ผ๋ก ์ถฉ๋์ ํด๊ฒฐํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค. CRDT๋ ๊ฐํ์ฑ๊ณผ ๊ฒฐํฉ์ฑ์ ๊ฐ๋๋ก ์ค๊ณ๋์ด, ์์ ์ด ์ ์ฉ๋๋ ์์๊ฐ ์ต์ข ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฏธ์น์ง ์์์ ์๋ฏธํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ํธ์ง์ ํ๋ฉด ํด๋น ์์ ์ ๋ชจ๋ ํผ์ด์๊ฒ ๋ธ๋ก๋์บ์คํธ๋ฉ๋๋ค. ๊ฐ ํผ์ด๋ ์ด ์์ ์ ๋ก์ปฌ ๋ฐ์ดํฐ์ ๋ณํฉํ๋ฉฐ, ๋์ผํ ์ํ๋ก ์๋ ดํ๋ ๊ฒ์ด ๋ณด์ฅ๋ฉ๋๋ค. CRDT๋ ํนํ ์คํ๋ผ์ธ ์ฐ์ ์๋๋ฆฌ์ค์ P2P ์ ํ๋ฆฌ์ผ์ด์ ์ ๋งค์ฐ ์ ํฉํฉ๋๋ค.
์์: GCounter(์ฆ๊ฐ ์ ์ฉ ์นด์ดํฐ) CRDT๋ ์์ ๋ฏธ๋์ด ๊ฒ์๋ฌผ์ '์ข์์' ์๋ฅผ ์ถ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ๊ฐ ์ฌ์ฉ์๋ ์์ ์ ๋ก์ปฌ ์นด์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๊ฒ์๋ฌผ์ ์ข์ํ ๋๋ง๋ค ๋ก์ปฌ ์นด์ดํฐ๋ฅผ ์ฆ๊ฐ์ํต๋๋ค. ๊ฐ ์นด์ดํฐ๋ ๋จ์ผ ๊ฐ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ์ฌ์ฉ์์ ์นด์ดํฐ๋ฅผ ๋ณด๋ฉด ๋ ์ซ์๋ฅผ ๋ณํฉํฉ๋๋ค. ์ฆ, ๋ ์ซ์ ์ค ๋ ๋์ ๊ฐ์ด GCounter์ ์ ๋ฐ์ดํธ๋ ๊ฐ์ด ๋ฉ๋๋ค. ์์คํ ์ ๊ฐ์ด ์ค๋ฅด๊ธฐ๋ง ํ๋ฏ๋ก ์ถฉ๋์ ์ถ์ ํ ํ์๊ฐ ์์ต๋๋ค.
CRDT์ ์ฅ์ :
- OT์ ๋นํด ๊ตฌํ์ด ๋ ์ฝ์ต๋๋ค.
- ๋ถ์ฐ ๋ฐ ์คํ๋ผ์ธ ์ฐ์ ์๋๋ฆฌ์ค์ ์ ํฉํฉ๋๋ค.
- ์๋ฒ๊ฐ ๋ณต์กํ ๋ณํ ๋ก์ง์ ์ฒ๋ฆฌํ ํ์๊ฐ ์์ผ๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก OT๋ณด๋ค ํ์ฅ์ฑ์ด ์ข์ต๋๋ค.
CRDT์ ๋จ์ :
- OT๋ณด๋ค ์ ์ฐ์ฑ์ด ๋จ์ด์ง๋๋ค. ์ผ๋ถ ์์ ์ ํํํ๊ธฐ ์ด๋ ต์ต๋๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ ์ ์์ต๋๋ค.
- CRDT๊ฐ ์๋ํ๊ฒ ํ๋ ์์ฑ์ผ๋ก ์ธํด ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์ ํ์ด ์ ํ๋ฉ๋๋ค.
ํ๋ก ํธ์๋์์ ๋ณํฉ ๋ก์ง ๊ตฌํํ๊ธฐ
ํ๋ก ํธ์๋์์ ๋ณํฉ ๋ก์ง์ ๊ตฌํํ๋ ๊ฒ์ ์ ํํ ์ ๊ทผ ๋ฐฉ์(OT ๋๋ CRDT)์ ํฌ๊ฒ ์์กดํฉ๋๋ค. ๋ ๋ฐฉ๋ฒ ๋ชจ๋ ์ฌ๋ฌ ๊ฐ์ง ํต์ฌ ์ธก๋ฉด์ ์ ์คํ๊ฒ ๊ณ ๋ คํด์ผ ํฉ๋๋ค:
๋ฐ์ดํฐ ๋๊ธฐํ
์ค์๊ฐ ํ์ ์ ๊ตฌํํ๋ ค๋ฉด ๊ฒฌ๊ณ ํ ๋ฐ์ดํฐ ๋๊ธฐํ ์ ๋ต์ด ํ์ํฉ๋๋ค. WebSockets, Server-Sent Events(SSE) ๋๋ ๋ค๋ฅธ ๊ธฐ์ ์ ์ฌ์ฉํ๋ , ํ๋ก ํธ์๋๋ ์๋ฒ๋ก๋ถํฐ ์ ์ํ๊ฒ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์์ผ ํฉ๋๋ค. ๋ฐ์ดํฐ ์ ์ก์ ์ฌ์ฉ๋๋ ๋ฉ์ปค๋์ฆ์ ์ ๋ขฐํ ์ ์์ด์ผ ํ๋ฉฐ, ๋ชจ๋ ์์ ์ฌํญ์ด ๋ชจ๋ ํด๋ผ์ด์ธํธ์ ๋๋ฌํ๋๋ก ๋ณด์ฅํด์ผ ํฉ๋๋ค.
์์: WebSockets๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์๊ตฌ์ ์ธ ์ฐ๊ฒฐ์ ์ค์ ํ ์ ์์ต๋๋ค. ํ ์ฌ์ฉ์๊ฐ ๋ณ๊ฒฝ์ ๊ฐํ๋ฉด ์๋ฒ๋ ์ด ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ ํ ํ์(์: JSON)์ผ๋ก ์ธ์ฝ๋ฉํ์ฌ ์ฐ๊ฒฐ๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ์๊ฒ ๋ธ๋ก๋์บ์คํธํฉ๋๋ค. ๊ฐ ํด๋ผ์ด์ธํธ๋ ์ด ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์ OT ๋๋ CRDT์ ๊ท์น์ ๋ฐ๋ผ ์์ ์ ๋ก์ปฌ ๋ฌธ์ ํํ์ ํตํฉํฉ๋๋ค.
์ํ ๊ด๋ฆฌ
ํ๋ก ํธ์๋์์ ๋ฌธ์์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ฌ์ฉ์ ํธ์ง, ํ์ฌ ๋ฌธ์ ๋ฒ์ ๋ฐ ๋ณด๋ฅ ์ค์ธ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๋ ๊ฒ์ด ํฌํจ๋ ์ ์์ต๋๋ค. React, Vue.js, Angular์ ๊ฐ์ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ๊ฑธ์ณ ๊ณต์ ๋ฌธ์ ์ํ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐ ํ์ฉํ ์ ์๋ ์ํ ๊ด๋ฆฌ ์๋ฃจ์ (์: Redux, Vuex, NgRx)์ ์ ๊ณตํฉ๋๋ค.
์์: React์ Redux๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ ์ํ๋ฅผ Redux ์คํ ์ด์ ์ ์ฅํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๋ณ๊ฒฝ์ ๊ฐํ๋ฉด ํด๋น ์ก์ ์ด ์คํ ์ด๋ก ๋์คํจ์น๋์ด ๋ฌธ์์ ์ํ๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ๋ฌธ์ ๋ด์ฉ์ ํ์ํ๋ ์ปดํฌ๋ํธ์ ์ฌ๋ ๋๋ง์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI) ์ ๋ฐ์ดํธ
UI๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ์ต์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ํด์ผ ํฉ๋๋ค. ๋ค๋ฅธ ์ฌ์ฉ์๋ก๋ถํฐ ๋ณ๊ฒฝ ์ฌํญ์ด ๋์ฐฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ํธ์ง๊ธฐ๋ฅผ ์ผ๊ด๋๊ณ ํจ์จ์ ์ผ๋ก ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ํ๊ฒ ์ ๋ฐ์ดํธ๋๋๋ก ์ฃผ์๋ฅผ ๊ธฐ์ธ์ฌ์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ์ด๋ค ํธ์ง์ ํ๊ณ ์๋์ง ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๊ธฐ ์ํด ์ปค์ ์์น๋ฅผ ์ ๋ฐ์ดํธํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค.
์์: ํ ์คํธ ํธ์ง๊ธฐ๋ฅผ ๊ตฌํํ ๋, UI๋ Quill, TinyMCE ๋๋ Slate์ ๊ฐ์ ๋ฆฌ์น ํ ์คํธ ํธ์ง๊ธฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ฉด ํธ์ง๊ธฐ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์บก์ฒํ์ฌ ์๋ฒ๋ก ์ ์กํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ์ฌ์ฉ์๋ก๋ถํฐ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์ผ๋ฉด ๋ฌธ์์ ๋ด์ฉ๊ณผ ์ ํ ์์ญ์ด ์ ๋ฐ์ดํธ๋๊ณ ๋ณ๊ฒฝ ์ฌํญ์ด ํธ์ง๊ธฐ์ ๋ฐ์๋ฉ๋๋ค.
์ค์ฉ์ ์ธ ์์ ๋ฐ ์ฌ์ฉ ์ฌ๋ก
ํ๋ก ํธ์๋ ์ค์๊ฐ ์ถฉ๋ ํด๊ฒฐ์ ์์ฉ ๋ถ์ผ๋ ๊ด๋ฒ์ํ๊ณ ๋น ๋ฅด๊ฒ ํ์ฅ๋๊ณ ์์ต๋๋ค. ๋ช ๊ฐ์ง ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ํ์ ํ ์คํธ ํธ์ง๊ธฐ: Google Docs, Microsoft Word Online ๋ฐ ๊ธฐํ ์๋ ํ๋ก์ธ์๋ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ๋์ผํ ๋ฌธ์์์ ์์ ํ ์ ์๋ ํ์ ํธ์ง์ ์ ํ์ ์ธ ์์ ๋๋ค. ์ด๋ฌํ ์์คํ ์ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ผ๊ด๋ ๋ฌธ์ ๋ทฐ๋ฅผ ๋ณผ ์ ์๋๋ก ์ ๊ตํ OT ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํฉ๋๋ค.
- ์ฝ๋ ํธ์ง๊ธฐ: CodeSandbox ๋ฐ Replit๊ณผ ๊ฐ์ ์๋น์ค๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ค์๊ฐ์ผ๋ก ์ฝ๋์ ๋ํด ํ์ ํ ์ ์์ผ๋ฉฐ, ํ์ ๊ฐ์ ํ์ด ํ๋ก๊ทธ๋๋ฐ ๋ฐ ์๊ฒฉ ํ์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ํ๋ก์ ํธ ๊ด๋ฆฌ ๋๊ตฌ: Trello ๋ฐ Asana์ ๊ฐ์ ํ๋ซํผ์ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ํ๋ก์ ํธ๋ฅผ ์์ ํ๊ณ ์ ๋ฐ์ดํธํ ์ ์๋๋ก ํฉ๋๋ค. ์์ , ๋ง๊ฐ์ผ ๋ฐ ๊ณผ์ ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ชจ๋ ์ฐธ์ฌ์ ๊ฐ์ ์ํํ๊ฒ ๋๊ธฐํ๋์ด์ผ ํ๋ฉฐ, ์ด๋ ์ ๋ขฐํ ์ ์๋ ์ถฉ๋ ํด๊ฒฐ์ ์ค์์ฑ์ ๋ณด์ฌ์ค๋๋ค.
- ํ์ดํธ๋ณด๋ ์ ํ๋ฆฌ์ผ์ด์ : Miro ๋ฐ Mural๊ณผ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์๊ฐ ์๊ฐ์ ํ๋ก์ ํธ์์ ํ์ ํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ค์ OT ๋๋ CRDT ๊ธฐ๋ฐ ์๋ฃจ์ ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์ค์๊ฐ์ผ๋ก ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๊ณ , ์ฃผ์์ ๋ฌ๊ณ , ์์ด๋์ด๋ฅผ ๊ณต์ ํ ์ ์๊ฒ ํ์ฌ ์๊ฐ์ ์ธ ๋ฐฉ์์ผ๋ก ํ์ ํ๋ ๊ฒ์ ํจ์ฌ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- ๊ฒ์: ๋ฉํฐํ๋ ์ด์ด ๊ฒ์์ ํ๋ ์ด์ด์ ์ํ๋ฅผ ๋๊ธฐํ ์ํ๋ก ์ ์งํ๊ธฐ ์ํด ๋๊ธฐํ๊ฐ ํ์ํฉ๋๋ค. ๊ฒ์์ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณผ ์ ์๋๋ก OT ๋๋ CRDT์ ์ผ๋ถ ํ์์ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ ์ฒ๋ฆฌํฉ๋๋ค.
์ด๋ฌํ ๊ธ๋ก๋ฒ ์์ ๋ค์ ์ค์๊ฐ ํ์ ํธ์ง์ ๊ด๋ฒ์ํ ์ ์ฉ๊ณผ ์ ์ธ๊ณ ๋ค์ํ ์ฐ์ ์์ ๊ฐ๋ ฅํ ์ถฉ๋ ํด๊ฒฐ ๊ธฐ์ ์ ํ์์ฑ์ ๋ณด์ฌ์ค๋๋ค.
๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ๊ณ ๋ ค ์ฌํญ
ํ๋ก ํธ์๋ ์ค์๊ฐ ์ถฉ๋ ํด๊ฒฐ์ ๊ตฌํํ ๋๋ ํน์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ค์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค:
- ์ฌ๋ฐ๋ฅธ ์ ๊ทผ ๋ฐฉ์ ์ ํ: ๋ฌธ์ ๋ณต์ก์ฑ, ํ์ฅ์ฑ ์๊ตฌ ์ฌํญ ๋ฐ ์คํ๋ผ์ธ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํน์ ์ฌ์ฉ ์ฌ๋ก์ OT ๋๋ CRDT๊ฐ ๊ฐ์ฅ ์ ํฉํ์ง ์ ์คํ๊ฒ ๊ณ ๋ คํ์ญ์์ค.
- ์ง์ฐ ์๊ฐ ์ต์ํ: ์ฌ์ฉ์ ์์ ๊ณผ ๊ณต์ ๋ฌธ์์ ํด๋น ์์ ์ด ๋ฐ์๋๋ ์ฌ์ด์ ์ง์ฐ์ ์ค์ด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋คํธ์ํฌ ํต์ ๋ฐ ์๋ฒ ์ธก ์ฒ๋ฆฌ๋ฅผ ์ต์ ํํ๋ฉด ์ด๋ฅผ ๋ฌ์ฑํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ์ฑ๋ฅ ์ต์ ํ: ์ค์๊ฐ ํธ์ง์ ๊ณ์ฐ ๋น์ฉ์ด ๋ง์ด ๋ค ์ ์์ผ๋ฏ๋ก ๋ค์์ ๋์ ์ฌ์ฉ์์ ๋น๋ฒํ ์ ๋ฐ์ดํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ์์คํ ์ ์ค๊ณํด์ผ ํฉ๋๋ค.
- ์ฃ์ง ์ผ์ด์ค ์ฒ๋ฆฌ: ๋คํธ์ํฌ ์ฐ๊ฒฐ ๋๊น๊ณผ ๊ฐ์ ์ฃ์ง ์ผ์ด์ค๋ฅผ ๊ณํํ๊ณ ๋ฐ์ดํฐ ์์ค์ด๋ ์ฌ์ฉ์ ๋ถํธ ์์ด ์ด๋ฌํ ์ํฉ์ ์ํํ๊ฒ ์ฒ๋ฆฌํ๋๋ก ๋ณด์ฅํ์ญ์์ค.
- ์ฌ์ฉ์ ํผ๋๋ฐฑ ์ ๊ณต: ๋ณ๊ฒฝ ์ฌํญ์ด ๋๊ธฐํ๋๊ฑฐ๋ ์ถฉ๋์ด ํด๊ฒฐ๋ ๋ ์ฌ์ฉ์์๊ฒ ์๊ฐ์ ์ ํธ๋ฅผ ์ ๊ณตํ์ญ์์ค. ๋ค๋ฅธ ์ฌ๋์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์กฐ ํ์ํ๋ ๊ฒ๊ณผ ๊ฐ์ ์๊ฐ์ ์ ํธ๋ฅผ ์ ๊ณตํ๋ฉด ๋ค๋ฅธ ์ฌ์ฉ์์ ๋ณ๊ฒฝ ์ฌํญ์ ํจ์ฌ ์ฝ๊ฒ ์ดํดํ ์ ์์ต๋๋ค.
- ์ฒ ์ ํ ํ ์คํธ: ๋์ ํธ์ง, ๋คํธ์ํฌ ๋ฌธ์ ๋ฐ ์๊ธฐ์น ์์ ์ฌ์ฉ์ ํ๋์ ํฌํจํ ๋ค์ํ ์๋๋ฆฌ์ค๋ก ์ฒ ์ ํ ํ ์คํธ๋ฅผ ์ํํ์ฌ ์์คํ ์ด ์ค์ ์ํฉ์ ์ฒ๋ฆฌํ ์ ์๋์ง ํ์ธํ์ญ์์ค.
- ๋ณด์ ๊ณ ๋ ค: ๋ฌด๋จ ์ก์ธ์ค, ๋ฐ์ดํฐ ์ ์ถ ๋ฐ ์ ์์ ์ธ ์์ ์ผ๋ก๋ถํฐ ๋ณดํธํ๊ธฐ ์ํด ์ ์ ํ ๋ณด์ ์กฐ์น๋ฅผ ๊ตฌํํ์ญ์์ค. ์ด๋ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๊ฐ ๊ด๋ จ๋ ์๋๋ฆฌ์ค์์ ํนํ ์ค์ํฉ๋๋ค.
๋๊ตฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ฌ๋ฌ ๋๊ตฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ๋ก ํธ์๋์์ ์ค์๊ฐ ์ถฉ๋ ํด๊ฒฐ์ ๊ตฌํํ๋ ๊ณผ์ ์ ๋จ์ํํ ์ ์์ต๋๋ค:
- OT ๋ผ์ด๋ธ๋ฌ๋ฆฌ: ShareDB ๋ฐ Automerge์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ OT ๋ฐ CRDT ๊ธฐ๋ฐ ํ์ ํธ์ง์ ์ํ ์ฌ์ ๊ตฌ์ถ๋ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค. ShareDB๋ OT๋ฅผ ์ํ ์ข์ ์๋ฃจ์ ์ด๋ฉฐ ๋ค์ํ ์ ํ์ ๋ฌธ์๋ฅผ ์ง์ํฉ๋๋ค.
- CRDT ๋ผ์ด๋ธ๋ฌ๋ฆฌ: Automerge์ Yjs๋ CRDT ๊ธฐ๋ฐ ์์คํ ์ ๊ตฌํํ๋ ๋ฐ ํ๋ฅญํ ์ ํ์ ๋๋ค. Automerge๋ ๋ฌธ์๋ฅผ ์ฝ๊ฒ ์ ์ฅํ ์ ์๋ ๋ฌธ์ ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค. Yjs๋ ๋ํ ์ฃผ๋ณ์ ํฐ ์ปค๋ฎค๋ํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- ๋ฆฌ์น ํ ์คํธ ํธ์ง๊ธฐ: Quill, TinyMCE ๋ฐ Slate๋ ์ค์๊ฐ ํ์ ํธ์ง ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ค์ ๋ด๋ถ์ ์ผ๋ก ์ถฉ๋ ํด๊ฒฐ ๋ฐ ๋๊ธฐํ๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ ์ธ๋ถ ๋๊ธฐํ ์๋น์ค์ ํตํฉํ ์ ์์ต๋๋ค.
- WebSockets ๋ผ์ด๋ธ๋ฌ๋ฆฌ: Socket.IO์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ WebSockets๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ค์๊ฐ ํต์ ์ ๋จ์ํํ์ฌ ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์๋๋ก ํฉ๋๋ค.
์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋งค์ฐ ๋ค์ฌ๋ค๋ฅํ๋ฉฐ ๊ฐ๋ฐ์์๊ฒ ์ค์๊ฐ ํ์ ๊ธฐ๋ฅ์ ๋ง๋๋ ๋ฐ ์ ์ฉํ ๊ธฐ์ฑ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.
๋ฏธ๋ ๋ํฅ ๋ฐ ํ์
ํ๋ก ํธ์๋ ์ค์๊ฐ ์ถฉ๋ ํด๊ฒฐ ๋ถ์ผ๋ ์ง์์ ์ผ๋ก ๋ฐ์ ํ๊ณ ์์ผ๋ฉฐ, ์งํ ์ค์ธ ์ฐ๊ตฌ ๋ฐ ๊ฐ๋ฐ์ ๊ฐ๋ฅํ ๊ฒ์ ๊ฒฝ๊ณ๋ฅผ ๋ํ๊ณ ์์ต๋๋ค. ์ฃผ๋ชฉํ ๋งํ ๋ํฅ ์ค ์ผ๋ถ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๊ฐ์ ๋ OT ๋ฐ CRDT ์๊ณ ๋ฆฌ์ฆ: ์ฐ๊ตฌ์๋ค์ ์ง์์ ์ผ๋ก ๋ ํจ์จ์ ์ด๊ณ ๊ฐ๋ ฅํ OT ๋ฐ CRDT ์๊ณ ๋ฆฌ์ฆ์ ์ฐ๊ตฌํ๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ ๋ณต์กํ ํธ์ง์ ํด๊ฒฐํ๊ธฐ ์ํ ๋ ๋์ ๋ฉ์ปค๋์ฆ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
- ์คํ๋ผ์ธ ์ฐ์ ํ์ : ์คํ๋ผ์ธ ์ฐ์ ๊ธฐ๋ฅ์ด ์ธ๊ธฐ๋ฅผ ์ป๊ณ ์์ผ๋ฉฐ, ์ฌ์ฉ์๋ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ์ ํ์ ์ด๊ฑฐ๋ ์๋ ๊ฒฝ์ฐ์๋ ๋ฌธ์์ ํ๋ก์ ํธ์์ ์์ ํ ์ ์์ต๋๋ค. CRDT๋ ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ค์ํ ๊ธฐ์ ์ ๋๋ค.
- AI ๊ธฐ๋ฐ ํ์ : ํธ์ง ์ ์ ์์ฑ์ด๋ ์ ์ฌ์ ์ถฉ๋์ ์ฌ์ ์ ์๋ณํ๋ ๋ฑ ํ์ ํธ์ง์ ํฅ์์ํค๊ธฐ ์ํ ์ธ๊ณต ์ง๋ฅ์ ํตํฉ์ ํ๋ฐํ ๊ฐ๋ฐ ๋ถ์ผ์ ๋๋ค.
- ๋ณด์ ๊ฐํ: ํ์ ์ด ๋ณดํธํ๋จ์ ๋ฐ๋ผ ์ข ๋จ ๊ฐ ์ํธํ ๋ฐ ๋ ๊ฐ๋ ฅํ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ๋ฉ์ปค๋์ฆ์ ํฌํจํ ๋ณด์์ ๋ํ ๊ด์ฌ์ด ์ฆ๊ฐํ๊ณ ์์ต๋๋ค.
- ๊ณ ๊ธ ๋ฌธ์ ์ ํ: ๊ธฐ๋ณธ ํ ์คํธ์์ ๊ณ ๊ธ ์ฐจํธ ๋ฐ ๊ทธ๋ํ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ๋ฐ์ดํฐ ์ ํ์ผ๋ก ์์ ํ ์ ์๋ ๋ฅ๋ ฅ์ด ๋น ๋ฅด๊ฒ ํ์ฅ๋๊ณ ์์ต๋๋ค.
์ด๋ฌํ ์๋ก์ด ํธ๋ ๋๋ ๋ ๊ฐ๋ ฅํ๊ณ ์ ์ฐํ๋ฉฐ ์์ ํ ํ์ ํธ์ง ์๋ฃจ์ ์ผ๋ก ์ด์ด์ ธ ์ ์ธ๊ณ ์ฌ์ฉ์๋ค์ด ์ด ํ๋ก์ธ์ค๋ฅผ ๋ ์ฝ๊ฒ ์ ๊ทผํ๊ณ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค.
๊ฒฐ๋ก
ํ๋ก ํธ์๋ ์ค์๊ฐ ์ถฉ๋ ํด๊ฒฐ์ ํ๋์ ์ธ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ์ค์ํ ์์ญ์ ๋๋ค. ์ด์ ๋ณํ๊ณผ ์ถฉ๋ ์๋ ๋ณต์ ๋ฐ์ดํฐ ํ์ ์ ํต์ฌ ๊ฐ๋ ๊ณผ ๊ตฌํ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํดํ๋ ๊ฒ์ ์ ์ธ๊ณ ๊ฐ๋ฐ์์๊ฒ ํ์์ ์ ๋๋ค. ์ ์ ํ ์ ๊ทผ ๋ฐฉ์์ ์ ํํ๊ณ , ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉฐ, ์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ฌ์ฉ์๊ฐ ์์น๋ ์๊ฐ๋์ ๊ด๊ณ์์ด ์ํํ๊ฒ ํจ๊ป ์์ ํ ์ ์๋๋ก ํ๋ ๊ฐ๋ ฅํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ํ์ ํธ์ง ์๋ฃจ์ ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ค์๊ฐ ํ์ ์ ๋ํ ์์๊ฐ ๊ณ์ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ด๋ฌํ ๊ธฐ์ ์ ์๋ฌํ๋ ๊ฒ์ ์์ฌํ ์ฌ์ง ์์ด ์ ์ธ๊ณ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์๊ฒ ์ ์ ๋ ๊ฐ์น ์๋ ๊ธฐ์ ์ด ๋ ๊ฒ์ ๋๋ค. OT ๋ฐ CRDT์ ๊ฐ์ด ๋ ผ์๋ ๊ธฐ์ ๊ณผ ๊ธฐ๋ฒ์ ํ์ ํธ์ง์ ๋ณต์กํ ๋ฌธ์ ์ ๋ํ ๊ฐ๋ ฅํ ์๋ฃจ์ ์ ์ ๊ณตํ์ฌ ๋ ๋ถ๋๋ฝ๊ณ ์์ฐ์ ์ธ ๊ฒฝํ์ ๋ง๋ญ๋๋ค.