2024. 3. 11. 22:02γπ Book/λ°μ΄ν° μ€μ¬ μ ν리μΌμ΄μ μ€κ³
μλ‘
κ΅¬κΈ λ
μ€
, λ
Έμ
, νΌκ·Έλ§
κ°μ μ ν리μΌμ΄μ
μμλ λμΌν νμ΄μ§λ νλ©΄μ λ€μμ μ¬μ©μκ° λμμ νΈμ§ν μ μλ κΈ°λ₯μ μ 곡νλ€. μ΄λ¬ν μ€μκ° νμ
μ ν리μΌμ΄μ
μ μ¬λ¬λͺ
μ΄ λμμ 컨ν
μΈ λ₯Ό νΈμ§νλλΌλ κ²°κ³Όμ μΌλ‘ λμΌν λ΄μ©μΌλ‘ μλ ΄(Convergence)νλ νΉμ§μ κ°μ§λ€.
μ΄λ° κΈ°μ μ μ΄λ€ μλ¦¬λ‘ κ΅¬νλμκΉ? λνμ μΈ κΈ°μ λ‘ OT
(Operation Transformation) μ CRDT
(Conflict-free Replicated Data Types) κ° μλ€. κ° κΈ°μ μ νΉμ§κ³Ό μ₯λ¨μ μ μλμμ λ μμΈν λ€λ€λ³΄κ² λ€.
OT
OT : Operational Transformations (1989 ~ 2006)
OT λ 2006λ μ λκΉμ§ μ¬μ©λ κΈ°μ λ‘ Google Docs μ MS Office μ μ¬μ©λλ€.
OT λ μ€νΌλ μ΄μ (μμ )μ΄ μ΄μ λμμ μν₯μΌλ‘ λ€μ λμμ transform(λ³ν) μν€λ κ², μ¦ λκ°μ§ μμ μ΄ κ±°μ λμμ μΌμ΄λλ€κ³ κ°μ νλ©΄ 첫λ²μ§Έ μμ μ μν΄ λλ²μ§Έ μμ μ΄ μν₯μ λ°μ λ³κ²½(transform)λλ κ²μ μλ―Ένλ€. μλ μ΄λ―Έμ§μ²λΌ μλ‘ λ€λ₯Έ λλͺ μ Userκ° HAT λ¬Έμμ΄μ μμ νλ μν©μ κ°μ ν΄λ³΄μ. μλ²κ° OT λ°©μμΌλ‘ μμ μ μ²λ¦¬νλ©΄ μ΄λ€ κ²°κ³Όκ° λμ¬κΉ?
User1 λ λ¬Έμμ΄ κ°μ₯ μμ Cλ₯Ό μΆκ°νκ³ , User2 λ κ°μ₯ μ²μμ λ¬Έμ Hλ₯Ό μμ νλ€. κ°λ³ μ μ λ‘λΆν° λ°μν operations μ μλ²λ₯Ό ν΅ν΄ μ²λ¦¬λλλ°, μ΄ λ User1μ μμ μ΄ User2λ³΄λ€ λ¨Όμ μνλλ€κ³ κ°μ νμ. λ¬Έμ C μ λ ₯μΌλ‘ κ·Έ μ΄νμ λͺ¨λ λ¬Έμλ€μ λͺ¨λ 1μ© μΈλ±μ€κ° λ€λ‘ λ°λ¦¬κ² λκ³ , κ²°κ³Όμ μΌλ‘ User2μ operations μ λλ²μ§Έ λ¬Έμ μμ λ‘ μΈλ±μ€κ° 보μ λμ΄ μ λ¬λλ€.
μ¦ User2μ operationμ μ€μ μλν κ²κ³Όλ μ‘°κΈ λ³κ²½λ(transform) μ€νΌλ μ΄μ μΌλ‘ μ λ¬λμ΄ λ¬Έμ μ€νΈλ¦Όμ μ μ©λλ€.
User1 μ operation μ΄ μ μ©λλ©΄ κΈ°μ‘΄ HAT μ λ¬Έμ λ°°μ΄ μ€νΈλ¦Όμ μΈλ±μ€κ°μ΄ λ³κ²½λλ€. κ·Έλ κΈ° λλ¬Έμ Hλ₯Ό μμ νλ €κ³ ν User2 μ operation μ delete at 0 μμ delete at 1 λ‘ λ³κ²½(transform) λλ κ²μ΄λ€.
OT μ λ¨μ
μμμ μΈκΈνλλ‘ Operation μ μμ (transformation)μ μ€μ μ§μ€μ μλ²μμ μνλλ€. μ΄λ 곧 λ¨μΌ μλ²μμ operation μ΄ μνκΈ° λλ¬Έμ μ¬μ©μκ° λͺ°λ¦΄ λλ μμ€ν κ³ΌλΆνκ° λ°μν μλ μλ€. λΌκ³ λ§μ λ¬Έμμ λμμμ§λ§… μ¬μ€ κ΅¬κΈ λ μ€κ° κ³ΌλΆνλ κ±Έ μ§μ κ²½νν μ μ΄ μμ΄μ λ¨μ μ΄ νΌλΆλ‘ μλΏμ§ μμλ€. νμ§λ§ μ’ λ μκ°ν΄λ³΄λ©΄ μ€μ§μ μΌλ‘ λ¬Έμλ₯Ό μ μ₯νλ κ²λ μλλ° λ§€ μ λ ₯λ§λ€ μλ²λ‘ λ°μ΄ν°λ₯Ό μ μ‘ν΄μΌ νλ€. νΉμ λ¬Έμλ₯Ό νΈμ§νκ³ μλ ν΄λΌμ΄μΈνΈ λΌλ¦¬λ§ ν΅μ νμ¬ λ³κ²½μ¬νμ μ μ©νκ³ μ΅μ’ λ¬Έμλ₯Ό μ μ₯ν λλ§ μλ²λ‘ μ μ‘λλ©΄ μΆ©λΆν ν λ° λ§μ΄λ€.
CRDT
CRDT: Conflict-free Replicated Data Types (2006 ~ present)
2006λ μ΄ν λΆν°λ OT λ₯Ό λ체νμ¬ CRDT λ°©μμ΄ λ κ³½κ΄λ°κ³ μλ€. CRDT μ μ₯μ μ λμμ±μ΄ μꡬλλ, μ¦ μ€μκ°μΌλ‘ νμ ν΄μΌ νλ ν΄λΌμ΄μΈνΈ λΌλ¦¬λ§ λ°μ΄ν°λ₯Ό κ΅ννλ©΄ λλ€λ μ μ΄λ€. μ΄λ OTμ λ¨μ μ μλ²½ν 보μνλ νΉμ§μΌλ‘ μλ²μ λν μμ‘΄κ³Ό λΆνλ₯Ό μ€μ΄λ ν¨κ³Όμ κ° μ μ λ€μ΄ μμ ν λ λ λΉ λ₯Έ λ°μμλλ₯Ό λΌ μ μλ€.
CRDT λ conflict-free replicated data type
μ μ½μλ‘ μΆ©λμλ 볡μ λ λ°μ΄ν° νμ
μ μλ―Ένλ€. 볡μ λ λ°μ΄ν° νμ
μ΄ λ¬΄μ¨ μλ―ΈμΌκΉ? μλ‘ λ€λ₯Έ μ»΄ν¨ν°(peer) μ μ μ₯ν μ μλ λ°μ΄ν° ꡬ쑰μ ν νμ
μ΄λΌ μκ°ν μ μλ€. μ¬κΈ°μ μλ‘ λ€λ₯Έ μ»΄ν¨ν°λ (νΌκ·Έλ§λ₯Ό μλ₯Ό λ€λ©΄) λμΌν νΌκ·Έλ§ νμ΄μ§λ₯Ό λ³΄κ³ μλ λ€μμ μ¬μ©μλ₯Ό μλ―Ένλ€.
κ° νΌμ΄λ μ체 μνλ₯Ό λ€λ₯Έ νΌμ΄λ₯Ό νμΈνκΈ° μν λ€νΈμν¬ μμ² μμ΄ μ¦μ μ λ°μ΄νΈ ν μ μλ€. λ€λ₯Έ νΌμ΄μ μμ λ΄μμ λ°λΌ μμ μ μμ (operation)μ μμ νλ OT λ°©μκ³Ό μ΄λ€ μ°¨μ΄κ° μλμ§ νμ°ν μ μ μλ€. λλ¬Έμ κ° νΌμ΄λ μλ‘ λ€λ₯Έ μκ°μ μλ‘ λ€λ₯Έ μνλ₯Ό κ°μ§ μ μμ§λ§ κ²°κ΅ μ΅μ’ μ μΌλ‘ νλμ ν©μλ μνλ‘ μλ ΄(convergence)νκ² λλ€.
μ΄λ€ μλ¦¬λ‘ κ° peer λ νλμ μνλ‘ μλ ΄ν μ μμκΉ? μλ μμ μ΄λ―Έμ§λ₯Ό 보μ.
User A : l μ o μ o μ¬μ΄μ μ½μ νλ€.
User B : ? λ₯Ό o μ ! μ¬μ΄μ μ½μ νλ€.
μ΄μ μ OT λ κΈ°μ‘΄ λ¬Έμμ΄μ μΈλ±μ€ κ°μ λͺ¨λ μμ νλ©΄μ μλ‘μ΄ κ°μ μ½μ νλ€. νμ§λ§ CRDT λ λ¬Έμμ΄μ κ° λ¬Έμμ identifier λΌλ μ λν¬ν κ°μ λΆμ¬νλ€. μ¦ OT μ²λΌ λ¬Έμμ΄μ΄ μμ λ λ λ§λ€ μΈλ±μ€κ° μμ λλ κ²μ΄ μλλΌ, λ¬Έμμ΄μ λ³κ²½μ΄ μμ΄λ μ΄κΈ°μ μ λν¬ κ°μ κ·Έλλ‘ μ μ§ν μ μλ€.
μ΄λ€ λ³κ²½μ¬νμ΄ μκΈ°λ©΄ μμμ μκ΄μμ΄ μνλ₯Ό μμ ν μ μλ€. μμ μ μμλ₯Ό μ μ§νλ μλ²λ μκΈ° λλ¬Έμ μ€μ μλ²λ νμνμ§ μλ€. λ¬Έμλ₯Ό νΈμ§νλ μ μ λΌλ¦¬λ§(peer to peer) λ°μ΄ν°λ₯Ό κ΅ννλ©΄ λλ―λ‘ μλκ° λΉ λ₯΄κ³ μλ² λΆνλ₯Ό μ€μΌ μ μλ μ₯μ μ΄ μλ€.
CRDT μ μμ λ μλμ²λΌ λμνλ€. λμΌν λ¬Έμλ₯Ό μμ νλ κ²½μ°λΌλ©΄ λΆλͺ λμΌν identifier λ₯Ό κ°μ§λ λ¬Έμλ₯Ό μμ νκ² λλ€. μμΉ κΈ°λ°μ΄ μλ id κΈ°λ°μΌλ‘ μμ κ° μ΄λ€μ§κΈ°μ μ΄λ―Έ μμ λ id λ λ μ΄μ μ‘΄μ¬νμ§ μμ μ€λ³΅ μμ λ¬Έμ λ λ°μνμ§ μλλ€.
CRDT μ νκ³
κ·ΈλΌ CRDTλ κ·Έμ μλ²½νκΈ°λ§ ν κΉ?
1. μ°μ κ° νΌμ΄μ λ¬Έμμ€νΈλ¦Όκ³Ό λλΆμ΄ identifierλ₯Ό μΆκ°λ‘ (tree ꡬ쑰λ‘)μ μ₯νκΈ° λλ¬Έμ λ§μ λ©λͺ¨λ¦¬λ₯Ό μλͺ¨νλ€.
2. CRDT λ μ€μ μ§μ€ μλ²μμ΄ κ° νΌμ΄λΌλ¦¬ ν΅μ νλ€κ³ μμ λ§νλ€. κ·ΈλΌ κ° νΌμ΄λΌλ¦¬ ν΅μ μ΄ κ°λ₯νμ§ μλ μν©μ΄λΌλ©΄?.?λ€νΈμν¬ μ°κ²°μ΄ λΆκ°λ₯νλ©΄ κ° νΌμ΄λ μμ μ λ³κ²½μ¬νμ λ€νΈμν¬ λ³΅κ΅¬ νμ λ€λ₯Έ νΌμ΄λ€κ³Ό λκΈ°ννμ¬ μ νν μ μλ€.λ¬Όλ‘ λ³΅κ΅¬ μκ°μ΄ μ€λ 걸릴μλ‘ λ°μ΄ν° μΌκ΄μ±μ μ μ§νλ λ° κ±Έλ¦¬λ μκ°λ λμ΄λ μ μλ€.
3. CRDT λ μκ°(μμ)κΈ°λ°μ΄ μλ κ³ μ IDλ₯Ό κΈ°λ°μΌλ‘ λμνκΈ° λλ¬Έμ merge κ³Όμ μμ μ€μκ°μ±μ΄ λͺ¨νΈν΄μ§ μ μλ€. μλ μμμ²λΌ λκΈ°ν κ²°κ³Ό λ¬Έμμ΄μ΄ μμ¬ μλμΉ μμ κ²°κ³Όλ¬Όμ΄ λμ¬ μ μλ€. μ΄λ° λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λ€μν μκ³ λ¦¬μ¦ κΈ°λ²(Logoot, LSEQ, RGA, Treedoc, WOOT, Astrong etc)μ΄ λμ€κ³ μμ§λ§, μ΄λ€ μΌμ΄μ€λ μ¬μ€μ κ·Όλ³Έμ μΈ ν΄κ²°μ΄ νλ€κΈ°λ νλ€.
κ²°λ‘
CRDTμ OTλ λͺ¨λ λΆμ° μμ€ν μμ λ°μ΄ν° μΌκ΄μ±μ μ μ§νκ³ λμ μμ μΆ©λμ ν΄κ²°νκΈ° μν λ°©λ²λ‘ μΌλ‘ μ¬μ©λλ€. κ°κ°μ λ°©λ²μ κ³ μ ν νΉμ§κ³Ό μ₯λ¨μ μ κ°μ§κ³ μμΌλ κ²°κ΅ μμΌλ‘λ OT μ κ΄λ ¨λ μμ μ νμμμ κ²μΌλ‘ μμλλ€. OTμ λͺ¨λ κΈ°λ₯μ΄ CRDTμ λμ ν μ μμ§λ§, κ·Έ λ°λλ λΆκ°λ₯νκΈ° λλ¬Έμ΄λ€. νκ³μμλ CRDTμ κ΄λ ¨λ νλ¬Έμ μΈ λΆλΆμ κ±°μ μμ±λμκ³ μ΄μ νλ₯ν ꡬνμ²΄κ° νμν μμ μ΄λΌκ³ λ³Ό μ μλ€.
reference
'π Book > λ°μ΄ν° μ€μ¬ μ ν리μΌμ΄μ μ€κ³' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ°μ΄ν° μ€μ¬ μ ν리μΌμ΄μ μ€κ³ #6μ₯ (1) | 2024.03.25 |
---|---|
λ°μ΄ν° μ€μ¬ μ ν리μΌμ΄μ μ€κ³ #1μ₯ (0) | 2024.02.08 |