λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²μμ λΆμ° νΈλμμ μ κ΄λ¦¬νκΈ° μν μ¬κ° ν¨ν΄μ μ¬μΈ΅μ μΌλ‘ λΆμνκ³ , κ·Έ μ΄μ , κ³Όμ , ꡬν μ λ΅ λ° μ€μ μ¬λ‘λ₯Ό λ€λ£Ήλλ€.
μ¬κ° ν¨ν΄: λ§μ΄ν¬λ‘μλΉμ€λ₯Ό μν λΆμ° νΈλμμ ꡬν
λ§μ΄ν¬λ‘μλΉμ€μ μΈκ³μμλ μ¬λ¬ μλΉμ€μ κ±Έμ³ λ°μ΄ν° μΌκ΄μ±μ μ μ§νλ κ²μ΄ μλΉν κ³Όμ κ° λ μ μμ΅λλ€. λͺ¨λ리μ μ ν리μΌμ΄μ μμ νν μ¬μ©λλ μ ν΅μ μΈ ACID(μμμ±, μΌκ΄μ±, κ³ λ¦½μ±, μ§μμ±) νΈλμμ μ λΆμ° νκ²½μλ μ ν©νμ§ μμ κ²½μ°κ° λ§μ΅λλ€. λ°λ‘ μ΄ μ§μ μμ μ¬κ° ν¨ν΄μ΄ λ±μ₯νμ¬ λΆμ° νΈλμμ μ κ΄λ¦¬νκ³ λ§μ΄ν¬λ‘μλΉμ€ μ λ°μ κ±Έμ³ λ°μ΄ν° 무결μ±μ 보μ₯νλ κ°λ ₯ν μ루μ μ μ 곡ν©λλ€.
μ¬κ° ν¨ν΄μ΄λ 무μμΈκ°?
μ¬κ° ν¨ν΄μ μ¬λ¬ λ§μ΄ν¬λ‘μλΉμ€μ κ±Έμ³ μΌλ ¨μ λ‘컬 νΈλμμ μ κ΄λ¦¬νλ λ° μ¬μ©λλ λμμΈ ν¨ν΄μ λλ€. μ΄λ μ΅μ’ μ μΌκ΄μ±(eventual consistency)μ λ¬μ±νλ λ°©λ²μ μ 곡νλλ°, μ΄λ λ°μ΄ν°κ° μΌμμ μΌλ‘λ μΌκ΄λμ§ μμ μ μμ§λ§ κ²°κ΅μλ μΌκ΄λ μνλ‘ μλ ΄λλ€λ κ²μ μλ―Έν©λλ€. μ¬λ¬ μλΉμ€μ κ±ΈμΉ λ¨μΌ μμμ νΈλμμ μ μμ‘΄νλ λμ , μ¬κ° ν¨ν΄μ νΈλμμ μ κ°κΈ° λ¨μΌ μλΉμ€μ μν΄ μνλλ λ μκ³ λ 립μ μΈ μΌλ ¨μ νΈλμμ μΌλ‘ λΆν΄ν©λλ€.
μ¬κ° λ΄μ κ° λ‘컬 νΈλμμ μ λ¨μΌ λ§μ΄ν¬λ‘μλΉμ€μ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ λ°μ΄νΈν©λλ€. λ§μ½ νΈλμμ μ€ νλκ° μ€ν¨νλ©΄, μ¬κ°λ μ ν νΈλμμ μ μν΄ μ΄λ£¨μ΄μ§ λ³κ²½ μ¬νμ λλ리기 μν΄ μΌλ ¨μ 보μ νΈλμμ (compensating transactions)μ μ€ννμ¬ μ 체 μμ μ ν¨κ³Όμ μΌλ‘ λ‘€λ°±ν©λλ€.
μ μ¬κ° ν¨ν΄μ μ¬μ©νλκ°?
λͺ κ°μ§ μμΈλ€μ΄ μ¬κ° ν¨ν΄μ λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²μμ νΈλμμ μ κ΄λ¦¬νλ λ° μ μ©ν λκ΅¬λ‘ λ§λλλ€:
- λΆλ¦¬(Decoupling): μ¬κ°λ λ§μ΄ν¬λ‘μλΉμ€ κ°μ λμ¨ν κ²°ν©μ μ΄μ§νμ¬, λ€λ₯Έ μλΉμ€μ μν₯μ μ£Όμ§ μκ³ λ 립μ μΌλ‘ λ°μ ν μ μλλ‘ ν©λλ€. μ΄λ λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²μ ν΅μ¬ μ΄μ μ λλ€.
- νμ₯μ±(Scalability): μ€λ μ§μλλ λΆμ° νΈλμμ μ νΌν¨μΌλ‘μ¨ μ¬κ°λ νμ₯μ±κ³Ό μ±λ₯μ ν₯μμν΅λλ€. κ° λ§μ΄ν¬λ‘μλΉμ€λ μ체 νΈλμμ μ λ 립μ μΌλ‘ μ²λ¦¬ν μ μμ΄ κ²½ν©μ μ€μ΄κ³ μ²λ¦¬λμ λμ λλ€.
- νλ ₯μ±(Resilience): μ¬κ°λ μ₯μ μ νλ ₯μ μΌλ‘ λμ²νλλ‘ μ€κ³λμμ΅λλ€. νΈλμμ μ΄ μ€ν¨νλ©΄ μ¬κ°λ₯Ό λ‘€λ°±νμ¬ λ°μ΄ν° λΆμΌμΉλ₯Ό λ°©μ§νκ³ μμ€ν μ΄ μΌκ΄λ μνλ₯Ό μ μ§νλλ‘ λ³΄μ₯ν μ μμ΅λλ€.
- μ μ°μ±(Flexibility): μ¬κ° ν¨ν΄μ μ¬λ¬ μλΉμ€μ κ±ΈμΉ λ³΅μ‘ν λΉμ¦λμ€ νλ‘μΈμ€λ₯Ό κ΄λ¦¬νλ λ° μ μ°μ±μ μ 곡ν©λλ€. μ΄λ₯Ό ν΅ν΄ νΈλμμ μ μμμ μ€ν¨ μ μ·¨ν΄μΌ ν 보μ μ‘°μΉλ₯Ό μ μν μ μμ΅λλ€.
ACID λ BASE
ACIDμ BASE(Basically Available, Soft state, Eventually consistent)μ μ°¨μ΄μ μ μ΄ν΄νλ κ²μ μ¬κ° ν¨ν΄ μ¬μ© μ¬λΆλ₯Ό κ²°μ ν λ λ§€μ° μ€μν©λλ€.
- ACID (μμμ±, μΌκ΄μ±, κ³ λ¦½μ±, μ§μμ±): νΈλμμ μ΄ μμ μ μΌλ‘ μ²λ¦¬λ¨μ 보μ₯ν©λλ€. μμμ±μ νΈλμμ λ΄μ λͺ¨λ μμ μ΄ μ±κ³΅νκ±°λ μ무κ²λ μ±κ³΅νμ§ μμμ 보μ₯ν©λλ€. μΌκ΄μ±μ νΈλμμ μ΄ λ°μ΄ν°λ² μ΄μ€λ₯Ό νλμ μ ν¨ν μνμμ λ€λ₯Έ μ ν¨ν μνλ‘ λ³νν¨μ 보μ₯ν©λλ€. κ³ λ¦½μ±μ λμ νΈλμμ μ΄ μλ‘ κ°μνμ§ μμμ 보μ₯ν©λλ€. μ§μμ±μ νΈλμμ μ΄ μ»€λ°λλ©΄ μμ€ν μ₯μ κ° λ°μνλλΌλ μ μ§λ¨μ 보μ₯ν©λλ€.
- BASE (κΈ°λ³Έμ κ°μ©μ±, μννΈ μν, μ΅μ’ μ μΌκ΄μ±): μ΄λ λΆμ° μμ€ν μ μν΄ μ€κ³λ λ€λ₯Έ μ κ·Ό λ°©μμ λλ€. κΈ°λ³Έμ κ°μ©μ±(Basically Available)μ μμ€ν μ΄ λλΆλΆμ μκ° λμ μ¬μ© κ°λ₯ν¨μ μλ―Έν©λλ€. μννΈ μν(Soft state)λ μμ€ν μ μνκ° μ λ ₯ μμ΄λ μκ°μ΄ μ§λ¨μ λ°λΌ λ³ν μ μμμ μλ―Έν©λλ€. μ΅μ’ μ μΌκ΄μ±(Eventually consistent)μ μμ€ν μ΄ μ λ ₯μ λ©μΆλ©΄ κ²°κ΅ μΌκ΄λ μνκ° λ κ²μμ μλ―Έν©λλ€. μ¬κ° ν¨ν΄μ BASE μμΉκ³Ό μΌμΉν©λλ€.
λ κ°μ§ μ£Όμ μ¬κ° ꡬν μ λ΅
μ¬κ° ν¨ν΄μ ꡬννλ λ κ°μ§ μ£Όμ λ°©λ²μ΄ μμ΅λλ€: μ½λ μ€κ·ΈλνΌ(Choreography)μ μ€μΌμ€νΈλ μ΄μ (Orchestration)μ λλ€.
1. μ½λ μ€κ·ΈλνΌ κΈ°λ° μ¬κ°
μ½λ μ€κ·ΈλνΌ κΈ°λ° μ¬κ°μμλ κ° λ§μ΄ν¬λ‘μλΉμ€κ° λ€λ₯Έ λ§μ΄ν¬λ‘μλΉμ€μμ λ°ννλ μ΄λ²€νΈλ₯Ό μμ νκ³ κ·Έμ λ°λΌ λ°μν¨μΌλ‘μ¨ μ¬κ°μ μ°Έμ¬ν©λλ€. μ€μ μ€μΌμ€νΈλ μ΄ν°κ° μμΌλ©°, κ° μλΉμ€λ μμ μ μ± μκ³Ό μΈμ νλμ μνν΄μΌ νλμ§ μκ³ μμ΅λλ€.
μλ λ°©μ:
- μ¬κ°λ λ§μ΄ν¬λ‘μλΉμ€κ° νΈλμμ μ μμμ λνλ΄λ μ΄λ²€νΈλ₯Ό λ°νν λ μμλ©λλ€.
- λ€λ₯Έ λ§μ΄ν¬λ‘μλΉμ€λ μ΄ μ΄λ²€νΈλ₯Ό ꡬλ νκ³ , μ΄λ²€νΈλ₯Ό μμ νλ©΄ μμ μ λ‘컬 νΈλμμ μ μνν©λλ€.
- νΈλμμ μ μλ£ν ν, κ° λ§μ΄ν¬λ‘μλΉμ€λ μμ μ μ±κ³΅ λλ μ€ν¨λ₯Ό λνλ΄λ λ λ€λ₯Έ μ΄λ²€νΈλ₯Ό λ°νν©λλ€.
- λ€λ₯Έ λ§μ΄ν¬λ‘μλΉμ€λ μ΄λ¬ν μ΄λ²€νΈλ₯Ό μμ νκ³ , μ¬κ°μ λ€μ λ¨κ³λ‘ μ§ννκ±°λ μ€λ₯ λ°μ μ 보μ νΈλμμ μ μμνλ λ± μ μ ν μ‘°μΉλ₯Ό μ·¨ν©λλ€.
μμ: μ μμκ±°λ μ£Όλ¬Έ (μ½λ μ€κ·ΈλνΌ)
- μ£Όλ¬Έ μλΉμ€: μλ‘μ΄ μ£Όλ¬Έ μμ²μ λ°κ³ `OrderCreated` μ΄λ²€νΈλ₯Ό λ°νν©λλ€.
- μ¬κ³ μλΉμ€: `OrderCreated`λ₯Ό ꡬλ ν©λλ€. μ΄λ²€νΈλ₯Ό μμ νλ©΄ μ¬κ³ λ₯Ό νμΈν©λλ€. μ¬κ³ κ° μΆ©λΆνλ©΄ μνμ μμ½νκ³ `InventoryReserved`λ₯Ό λ°νν©λλ€. λΆμ‘±νλ©΄ `InventoryReservationFailed`λ₯Ό λ°νν©λλ€.
- κ²°μ μλΉμ€: `InventoryReserved`λ₯Ό ꡬλ ν©λλ€. μ΄λ²€νΈλ₯Ό μμ νλ©΄ κ²°μ λ₯Ό μ²λ¦¬ν©λλ€. μ±κ³΅νλ©΄ `PaymentProcessed`λ₯Ό λ°ννκ³ , μ€ν¨νλ©΄ `PaymentFailed`λ₯Ό λ°νν©λλ€.
- λ°°μ‘ μλΉμ€: `PaymentProcessed`λ₯Ό ꡬλ ν©λλ€. μ΄λ²€νΈλ₯Ό μμ νλ©΄ λ°°μ‘μ μ€λΉνκ³ `ShipmentPrepared`λ₯Ό λ°νν©λλ€.
- μ£Όλ¬Έ μλΉμ€: `ShipmentPrepared`λ₯Ό ꡬλ ν©λλ€. μ΄λ²€νΈλ₯Ό μμ νλ©΄ μ£Όλ¬Έμ μλ£λ κ²μΌλ‘ νμν©λλ€.
- 보μ: `PaymentFailed` λλ `InventoryReservationFailed`κ° λ°νλλ©΄, λ€λ₯Έ μλΉμ€λ€μ μ΄λ₯Ό μμ νκ³ λ³΄μ νΈλμμ (μ: μμ½λ μ¬κ³ ν΄μ )μ μνν©λλ€.
μ½λ μ€κ·ΈλνΌμ μ₯μ :
- λ¨μμ±: κ°λ¨ν μν¬νλ‘μ°μ λν΄ κ΅¬ννκΈ°κ° λ μ½μ΅λλ€.
- λΆμ°ν: λμ¨ν κ²°ν©κ³Ό λ§μ΄ν¬λ‘μλΉμ€μ λ 립μ μΈ λ°μ μ μ΄μ§ν©λλ€.
μ½λ μ€κ·ΈλνΌμ λ¨μ :
- 볡μ‘μ±: μ¬κ° μ°Έμ¬μ μκ° μ¦κ°ν¨μ λ°λΌ κ΄λ¦¬νκΈ° 볡μ‘ν΄μ§ μ μμ΅λλ€.
- κ°μμ±: μ¬κ°μ μ 체 μ§ν μν©κ³Ό μνλ₯Ό μΆμ νκΈ° μ΄λ ΅μ΅λλ€.
- κ²°ν©: λμ¨ν κ²°ν©μ μ΄μ§νμ§λ§, μλΉμ€λ μ¬μ ν λ€λ₯Έ μλΉμ€μμ λ°ννλ μ΄λ²€νΈλ₯Ό μΈμ§ν΄μΌ ν©λλ€.
2. μ€μΌμ€νΈλ μ΄μ κΈ°λ° μ¬κ°
μ€μΌμ€νΈλ μ΄μ κΈ°λ° μ¬κ°μμλ μ€μ μ€μΌμ€νΈλ μ΄ν°(μ’ μ’ μ μ© μλΉμ€λ μν κΈ°κ³λ‘ ꡬνλ¨)κ° μ¬κ°λ₯Ό κ΄λ¦¬νκ³ μ°Έμ¬νλ λ§μ΄ν¬λ‘μλΉμ€μ λ‘컬 νΈλμμ μ€νμ μ‘°μ ν©λλ€. μ€μΌμ€νΈλ μ΄ν°λ κ° μλΉμ€μ 무μμ μΈμ ν΄μΌ νλμ§ μ§μν©λλ€.
μλ λ°©μ:
- ν΄λΌμ΄μΈνΈκ° μ€μΌμ€νΈλ μ΄ν°μκ² νΈλμμ μμμ μμ²νλ©΄ μ¬κ°κ° μμλ©λλ€.
- μ€μΌμ€νΈλ μ΄ν°λ μ°Έμ¬ λ§μ΄ν¬λ‘μλΉμ€μ λ‘컬 νΈλμμ μ μννλΌλ λͺ λ Ήμ 보λ λλ€.
- κ° λ§μ΄ν¬λ‘μλΉμ€λ νΈλμμ μ μννκ³ μ±κ³΅ λλ μ€ν¨λ₯Ό μ€μΌμ€νΈλ μ΄ν°μκ² μ립λλ€.
- κ²°κ³Όμ λ°λΌ μ€μΌμ€νΈλ μ΄ν°λ λ€μ λ¨κ³λ‘ μ§νν μ§ λλ 보μ νΈλμμ μ μμν μ§ κ²°μ ν©λλ€.
μμ: μ μμκ±°λ μ£Όλ¬Έ (μ€μΌμ€νΈλ μ΄μ )
- μ£Όλ¬Έ μ€μΌμ€νΈλ μ΄ν°: μλ‘μ΄ μ£Όλ¬Έ μμ²μ λ°μ΅λλ€.
- μ£Όλ¬Έ μ€μΌμ€νΈλ μ΄ν°: μ¬κ³ μλΉμ€μ μνμ μμ½νλΌλ λͺ λ Ήμ 보λ λλ€.
- μ¬κ³ μλΉμ€: μνμ μμ½νκ³ μ£Όλ¬Έ μ€μΌμ€νΈλ μ΄ν°μκ² μ립λλ€.
- μ£Όλ¬Έ μ€μΌμ€νΈλ μ΄ν°: κ²°μ μλΉμ€μ κ²°μ λ₯Ό μ²λ¦¬νλΌλ λͺ λ Ήμ 보λ λλ€.
- κ²°μ μλΉμ€: κ²°μ λ₯Ό μ²λ¦¬νκ³ μ£Όλ¬Έ μ€μΌμ€νΈλ μ΄ν°μκ² μ립λλ€.
- μ£Όλ¬Έ μ€μΌμ€νΈλ μ΄ν°: λ°°μ‘ μλΉμ€μ λ°°μ‘μ μ€λΉνλΌλ λͺ λ Ήμ 보λ λλ€.
- λ°°μ‘ μλΉμ€: λ°°μ‘μ μ€λΉνκ³ μ£Όλ¬Έ μ€μΌμ€νΈλ μ΄ν°μκ² μ립λλ€.
- μ£Όλ¬Έ μ€μΌμ€νΈλ μ΄ν°: μ£Όλ¬Έμ μλ£λ κ²μΌλ‘ νμν©λλ€.
- 보μ: μ΄λ€ λ¨κ³λ μ€ν¨νλ©΄ μ£Όλ¬Έ μ€μΌμ€νΈλ μ΄ν°λ κ΄λ ¨ μλΉμ€μ 보μ λͺ λ Ή(μ: μμ½λ μ¬κ³ ν΄μ )μ 보λ λλ€.
μ€μΌμ€νΈλ μ΄μ μ μ₯μ :
- μ€μ μ§μ€μ μ μ΄: μ€μ μ§μ μμ μ¬κ°λ₯Ό κ΄λ¦¬νκ³ λͺ¨λν°λ§νκΈ°κ° λ μ½μ΅λλ€.
- ν₯μλ κ°μμ±: μ€μΌμ€νΈλ μ΄ν°λ μ¬κ°μ μ 체 μ§ν μν©κ³Ό μνμ λν λͺ νν λ·°λ₯Ό μ 곡ν©λλ€.
- κ²°ν© κ°μ: λ§μ΄ν¬λ‘μλΉμ€λ μ€μΌμ€νΈλ μ΄ν°μλ§ ν΅μ νλ©΄ λλ―λ‘ μλΉμ€ κ°μ μ§μ μ μΈ μ’ μμ±μ΄ μ€μ΄λλλ€.
μ€μΌμ€νΈλ μ΄μ μ λ¨μ :
- 볡μ‘μ±: νΉν κ°λ¨ν μν¬νλ‘μ°μ κ²½μ° μ΄κΈ°μ ꡬννκΈ°κ° λ 볡μ‘ν μ μμ΅λλ€.
- λ¨μΌ μ€ν¨ μ§μ : μ€μΌμ€νΈλ μ΄ν°λ λ¨μΌ μ€ν¨ μ§μ μ΄ λ μ μμ§λ§, μ΄λ μ€λ³΅μ±κ³Ό μ₯μ νμ© μ‘°μΉλ‘ μνν μ μμ΅λλ€.
보μ νΈλμμ ꡬν
μ¬κ° ν¨ν΄μ μ€μν μΈ‘λ©΄μ 보μ νΈλμμ μ ꡬνμ λλ€. μ΄λ¬ν νΈλμμ μ μ€ν¨ μ μ΄μ μ μλ£λ νΈλμμ μ ν¨κ³Όλ₯Ό λλ리기 μν΄ μ€νλ©λλ€. λͺ©νλ μ 체 μ¬κ°λ₯Ό μλ£ν μ μλλΌλ μμ€ν μ μΌκ΄λ μνλ‘ λλ리λ κ²μ λλ€.
보μ νΈλμμ μ μ£Όμ κ³ λ €μ¬ν:
- λ©±λ±μ±(Idempotency): 보μ νΈλμμ μ λ©±λ±μ±μ΄ μμ΄μΌ ν©λλ€. μ¦, μ¬λ¬ λ² μ€νν΄λ κ²°κ³Όκ° λ°λμ§ μμμΌ ν©λλ€. μ΄λ μ€ν¨κ° μ΄λ μμ μμλ λ°μν μ μκ³ λ³΄μ νΈλμμ μ΄ μ¬μλλ μ μκΈ° λλ¬Έμ μ€μν©λλ€.
- μ€ν¨ μ²λ¦¬: 보μ νΈλμμ λ μ€ν¨ν μ μμ΅λλ€. 보μ νΈλμμ μ μ€ν¨λ₯Ό μ²λ¦¬νκΈ° μν μ λ΅, μλ₯Ό λ€μ΄ μ¬μλ, μ€λ₯ λ‘κΉ , κ΄λ¦¬μμκ² μλ¦Ό λ±μ μ λ΅μ΄ νμν©λλ€.
- λ°μ΄ν° μΌκ΄μ±: 보μ νΈλμμ μ λ°μ΄ν°κ° μΌκ΄λκ² μ μ§λλλ‘ λ³΄μ₯ν΄μΌ ν©λλ€. μ΄λ λ°μ΄ν°λ₯Ό μ΄μ μνλ‘ λ³΅μνκ±°λ, μλ‘ μμ±λ λ°μ΄ν°λ₯Ό μμ νκ±°λ, νΈλμμ μ·¨μλ₯Ό λ°μνλλ‘ λ°μ΄ν°λ₯Ό μ λ°μ΄νΈνλ κ²μ ν¬ν¨ν μ μμ΅λλ€.
보μ νΈλμμ μ μμ:
- μ¬κ³ μλΉμ€: μ¬κ³ μλΉμ€κ° μνμ μμ½νμ§λ§ κ²°μ κ° μ€ν¨ν κ²½μ°, 보μ νΈλμμ μ μμ½λ μνμ ν΄μ νλ κ²μ λλ€.
- κ²°μ μλΉμ€: κ²°μ μλΉμ€κ° κ²°μ λ₯Ό μ²λ¦¬νμ§λ§ λ°°μ‘μ΄ μ€ν¨ν κ²½μ°, 보μ νΈλμμ μ νλΆμ λ°ννλ κ²μΌ μ μμ΅λλ€.
κ³Όμ λ° κ³ λ €μ¬ν
μ¬κ° ν¨ν΄μ μλΉν μ΄μ μ μ 곡νμ§λ§, λͺ κ°μ§ κ³Όμ μ κ³ λ €μ¬νλ μ μν©λλ€:
- 볡μ‘μ±: μ¬κ° ν¨ν΄μ ꡬννλ κ²μ νΉν 볡μ‘ν λΉμ¦λμ€ νλ‘μΈμ€μ κ²½μ° λ³΅μ‘ν μ μμ΅λλ€. μ μ€ν κ³νκ³Ό μ€κ³κ° νμμ μ λλ€.
- μ΅μ’ μ μΌκ΄μ±: μ¬κ° ν¨ν΄μ μ΅μ’ μ μΌκ΄μ±μ μ 곡νλ©°, μ΄λ λ°μ΄ν°κ° μΌμμ μΌλ‘ μΌκ΄λμ§ μμ μ μμμ μλ―Έν©λλ€. μ΄λ κ°λ ₯ν μΌκ΄μ± 보μ₯μ΄ νμν μ ν리μΌμ΄μ μμλ μ°λ € μ¬νμ΄ λ μ μμ΅λλ€.
- ν μ€ν : μ¬κ° ν μ€νΈλ λΆμ°λ νΉμ±κ³Ό λ€μν μ§μ μμμ μ€ν¨ κ°λ₯μ±μΌλ‘ μΈν΄ μ΄λ €μΈ μ μμ΅λλ€.
- λͺ¨λν°λ§: μ¬κ°μ μ§ν μν©κ³Ό μνλ₯Ό λͺ¨λν°λ§νλ κ²μ λ¬Έμ λ₯Ό μλ³νκ³ ν΄κ²°νλ λ° μ€μν©λλ€. μ μ ν λͺ¨λν°λ§ λꡬμ νλ‘μΈμ€κ° νμν©λλ€.
- λ©±λ±μ±: νΈλμμ κ³Ό 보μ νΈλμμ μ΄ λ©±λ±μ±μ κ°λλ‘ λ³΄μ₯νλ κ²μ λ°μ΄ν° λΆμΌμΉλ₯Ό λ°©μ§νλ λ° μ€μν©λλ€.
- κ³ λ¦½μ±: μ¬κ°λ μ¬λ¬ λ‘컬 νΈλμμ μ ν¬ν¨νλ―λ‘ κ³ λ¦½μ±μ΄ λ¬Έμ κ° λ μ μμ΅λλ€. μλ§¨ν± λ½μ΄λ λκ΄μ μ κΈκ³Ό κ°μ μ λ΅μ΄ νμν μ μμ΅λλ€.
μ¬μ© μ¬λ‘ λ° μμ
μ¬κ° ν¨ν΄μ νΉν λΆμ° μμ€ν λ° λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²μμ λ€μν μ¬μ© μ¬λ‘μ μ ν©ν©λλ€. μΌλ°μ μΈ μμλ λ€μκ³Ό κ°μ΅λλ€:
- μ μμκ±°λ μ£Όλ¬Έ κ΄λ¦¬: μ μμμμ μ€λͺ νλ―μ΄, μ¬κ° ν¨ν΄μ μ£Όλ¬Έ μμ±λΆν° κ²°μ μ²λ¦¬, λ°°μ‘μ μ΄λ₯΄κΈ°κΉμ§ μ 체 μ£Όλ¬Έ μλͺ μ£ΌκΈ°λ₯Ό κ΄λ¦¬νλ λ° μ¬μ©λ μ μμ΅λλ€.
- κΈμ΅ κ±°λ: μ¬κ° ν¨ν΄μ μκΈ μ΄μ²΄, λμΆ μ μ², 보ν μ²κ΅¬ λ± μ¬λ¬ μμ€ν μ ν¬ν¨νλ 볡μ‘ν κΈμ΅ κ±°λλ₯Ό κ΄λ¦¬νλ λ° μ¬μ©λ μ μμ΅λλ€.
- 곡κΈλ§ κ΄λ¦¬: μ¬κ° ν¨ν΄μ μ μ‘°μ 체, μ ν΅μ 체, μλ§€μ 체 λ± κ³΅κΈλ§μ μ¬λ¬ 주체 κ°μ νλμ μ‘°μ νλ λ° μ¬μ©λ μ μμ΅λλ€.
- μλ£ μμ€ν : μ¬κ° ν¨ν΄μ νμ κΈ°λ‘μ κ΄λ¦¬νκ³ λ€λ₯Έ λΆμ λ° μλ£ μ 곡μ κ°μ μΉλ£λ₯Ό μ‘°μ νλ λ° μ¬μ©λ μ μμ΅λλ€.
μμ: κΈλ‘λ² μν κ±°λ
μλ‘ λ€λ₯Έ κ΅κ°μ μμΉνκ³ λ€μν κ·μ λ° κ·μ μ€μ νμΈμ λ°μμΌ νλ λ κ°μ λ€λ₯Έ μν κ°μ κΈλ‘λ² μν κ±°λ μλ리μ€λ₯Ό μμν΄ λ³΄μμμ€. μ¬κ° ν¨ν΄μ νΈλμμ μ΄ μ μλ λ¨κ³λ₯Ό λ°λ₯΄λλ‘ λ³΄μ₯ν μ μμ΅λλ€:
- κ±°λ μμ: κ³ κ°μ΄ λ―Έκ΅μ μμΉν A μνμ κ³μ’μμ λ μΌμ μμΉν B μνμ μμ·¨μΈ κ³μ’λ‘ μκΈ μ΄μ²΄λ₯Ό μμν©λλ€.
- A μν - κ³μ’ μ ν¨μ± κ²μ¬: A μνμ κ³ κ°μ κ³μ’λ₯Ό κ²μ¦νκ³ , μΆ©λΆν μκΈμ΄ μλμ§ νμΈνλ©°, 보λ₯λ μ νμ΄ μλμ§ νμΈν©λλ€.
- κ·μ μ€μ νμΈ (A μν): A μνμ κ±°λκ° μκΈ μΈν λ°©μ§(AML) κ·μ μ΄λ κ΅μ μ μ¬λ₯Ό μλ°νμ§ μλμ§ νμΈνκΈ° μν΄ κ·μ μ€μ κ²μ¬λ₯Ό μ€νν©λλ€.
- μκΈ μ΄μ²΄ (A μν): A μνμ κ³ κ°μ κ³μ’μμ κΈμ‘μ μΈμΆνκ³ μκΈμ μ΄μ κ΅νμλ μ€κ° μνμΌλ‘ 보λ λλ€.
- μ΄μ κ΅νμ μ²λ¦¬: μ΄μ κ΅νμλ κ±°λλ₯Ό μ²λ¦¬νκ³ , ν΅ν λ³ν(USDμμ EURλ‘)μ μννλ©°, μκΈμ B μνμΌλ‘ λΌμ°ν ν©λλ€.
- B μν - κ³μ’ μ ν¨μ± κ²μ¬: B μνμ μμ·¨μΈμ κ³μ’λ₯Ό κ²μ¦νκ³ , κ³μ’κ° νμ± μνμ΄λ©° μκΈμ μλ Ήν μ μλμ§ νμΈν©λλ€.
- κ·μ μ€μ νμΈ (B μν): B μνμ λ μΌ λ° EU κ·μ μ μ€μνλ©° μ체 κ·μ μ€μ κ²μ¬λ₯Ό μ€νν©λλ€.
- κ³μ’ μ κΈ (B μν): B μνμ μμ·¨μΈμ κ³μ’μ κΈμ‘μ μ κΈν©λλ€.
- νμΈ: B μνμ A μνμ νμΈ λ©μμ§λ₯Ό 보λ΄κ³ , A μνμ κ³ κ°μκ² κ±°λκ° μλ£λμμμ μ립λλ€.
보μ νΈλμμ :
- A μνμ κ·μ μ€μ νμΈμ΄ μ€ν¨νλ©΄ κ±°λλ μ·¨μλκ³ κ³ κ°μ κ³μ’λ μΈμΆλμ§ μμ΅λλ€.
- B μνμ κ·μ μ€μ νμΈμ΄ μ€ν¨νλ©΄ μκΈμ A μνμΌλ‘ λ°νλκ³ κ³ κ°μ κ³μ’μ λ€μ μ κΈλ©λλ€.
- μ΄μ κ΅νμμμ ν΅ν λ³νμ΄λ λΌμ°ν μ λ¬Έμ κ° μλ κ²½μ°, κ±°λλ μ·¨μλκ³ μκΈμ A μνμΌλ‘ λ°νλ©λλ€.
λꡬ λ° κΈ°μ
μ¬κ° ν¨ν΄ ꡬνμ μ§μν μ μλ μ¬λ¬ λꡬμ κΈ°μ μ΄ μμ΅λλ€:
- λ©μμ§ ν: Apache Kafka, RabbitMQ, Amazon SQSλ μ½λ μ€κ·ΈλνΌ κΈ°λ° μ¬κ°μμ μ΄λ²€νΈλ₯Ό λ°ννκ³ κ΅¬λ νλ λ° μ¬μ©λ μ μμ΅λλ€.
- μν¬νλ‘μ° μμ§: Camunda, Zeebe, Apache Airflowλ μ€μΌμ€νΈλ μ΄ν°λ₯Ό ꡬννκ³ λ³΅μ‘ν μν¬νλ‘μ°λ₯Ό κ΄λ¦¬νλ λ° μ¬μ©λ μ μμ΅λλ€.
- μ΄λ²€νΈ μμ±: μ΄λ²€νΈ μμ±μ μ¬κ° λ΄ μ΄λ²€νΈμ μ΄λ ₯μ μΆμ νκ³ μ€ν¨ μ λ‘€λ°±μ μ©μ΄νκ² νλ λ° μ¬μ©λ μ μμ΅λλ€.
- λΆμ° νΈλμμ κ΄λ¦¬μ: Atomikosμ κ°μ μΌλΆ λΆμ° νΈλμμ κ΄λ¦¬μλ μ¬λ¬ μλΉμ€μ κ±Έμ³ νΈλμμ μ μ‘°μ νλ λ° μ¬μ©λ μ μμ΅λλ€. κ·Έλ¬λ λΆμ° νκ²½μμμ λ΄μ¬μ νκ³λ‘ μΈν΄ λͺ¨λ λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²μ μ ν©νμ§ μμ μ μμ΅λλ€.
- μ¬κ° νλ μμν¬: μ¬κ° ν¨ν΄μ ꡬννκΈ° μν μΆμν λ° λꡬλ₯Ό μ 곡νλ μ¬κ° νλ μμν¬λ μμ΅λλ€.
μ¬κ° ν¨ν΄ ꡬνμ μν λͺ¨λ² μ¬λ‘
μ¬κ° ν¨ν΄μ ν¨κ³Όμ μΌλ‘ ꡬννλ €λ©΄ λ€μ λͺ¨λ² μ¬λ‘λ₯Ό κ³ λ €νμμμ€:
- μ μ€ν μ€κ³: λΉμ¦λμ€ μꡬμ¬νμ μ² μ ν λΆμνκ³ κ·Έμ λ°λΌ μ¬κ°λ₯Ό μ€κ³νμμμ€. μ°Έμ¬νλ λ§μ΄ν¬λ‘μλΉμ€, νΈλμμ μμ, 보μ μ‘°μΉλ₯Ό μλ³νμμμ€.
- λ©±λ±μ±: λͺ¨λ νΈλμμ κ³Ό 보μ νΈλμμ μ΄ λ©±λ±μ±μ κ°λλ‘ λ³΄μ₯νμμμ€.
- μ€λ₯ μ²λ¦¬: μ¬κ°μ μ΄λ μ§μ μμλ μ€ν¨μ λμ²ν μ μλ κ°λ ₯ν μ€λ₯ μ²λ¦¬ λ©μ»€λμ¦μ ꡬννμμμ€.
- λͺ¨λν°λ§ λ° λ‘κΉ : μ¬κ°μ μ§ν μν©κ³Ό μνλ₯Ό μΆμ νκΈ° μν΄ ν¬κ΄μ μΈ λͺ¨λν°λ§ λ° λ‘κΉ μ ꡬννμμμ€.
- ν μ€ν : μ¬κ°κ° μ¬λ°λ₯΄κ² μλνκ³ μ€ν¨λ₯Ό μ μμ μΌλ‘ μ²λ¦¬νλμ§ νμΈνκΈ° μν΄ μ² μ νκ² ν μ€νΈνμμμ€.
- μλ§¨ν± λ½: λ€λ₯Έ μ¬κ°μ μν΄ λμΌν λ°μ΄ν°κ° λμμ μ λ°μ΄νΈλλ κ²μ λ°©μ§νκΈ° μν΄ μλ§¨ν± λ½μ ꡬννμμμ€.
- λκ΄μ μ κΈ: λμ νΈλμμ κ°μ μΆ©λμ κ°μ§νκ³ λ°©μ§νκΈ° μν΄ λκ΄μ μ κΈμ μ¬μ©νμμμ€.
- μ¬λ°λ₯Έ ꡬν μ λ΅ μ ν: μ½λ μ€κ·ΈλνΌμ μ€μΌμ€νΈλ μ΄μ κ°μ μ₯λ¨μ μ μ μ€νκ² κ³ λ €νκ³ μꡬμ¬νμ κ°μ₯ μ ν©ν μ λ΅μ μ ννμμμ€.
- λͺ νν 보μ μ μ± μ μ: 보μμ΄ νΈλ¦¬κ±°λλ 쑰건과 μ·¨ν΄μΌ ν νΉμ μ‘°μΉλ₯Ό ν¬ν¨νμ¬ λ³΄μ μ²λ¦¬μ λν λͺ νν μ μ± μ μ립νμμμ€.
κ²°λ‘
μ¬κ° ν¨ν΄μ λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²μμ λΆμ° νΈλμμ μ κ΄λ¦¬νλ κ°λ ₯ν λꡬμ λλ€. νΈλμμ μ μΌλ ¨μ μκ³ λ 립μ μΈ νΈλμμ μΌλ‘ λΆν΄νκ³ μ€ν¨λ₯Ό 보μνλ λ©μ»€λμ¦μ μ 곡ν¨μΌλ‘μ¨, μ¬κ° ν¨ν΄μ λ°μ΄ν° μΌκ΄μ±μ μ μ§νκ³ νλ ₯μ μ΄λ©° νμ₯ κ°λ₯νκ³ λΆλ¦¬λ μμ€ν μ ꡬμΆν μ μκ² ν©λλ€. μ¬κ° ν¨ν΄μ ꡬννκΈ° 볡μ‘ν μ μμ§λ§, μ μ°μ±, νμ₯μ± λ° νλ ₯μ± μΈ‘λ©΄μμ μ 곡νλ μ΄μ μ λͺ¨λ λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²μ κ·μ€ν μμ°μ΄ λ©λλ€.
μ¬κ° ν¨ν΄μ λ―Έλ¬ν μ°¨μ΄, μ½λ μ€κ·ΈλνΌμ μ€μΌμ€νΈλ μ΄μ κ°μ μ₯λ¨μ , κ·Έλ¦¬κ³ λ³΄μ νΈλμμ μ μ€μμ±μ μ΄ν΄νλ©΄ μ€λλ μ 볡μ‘ν λΉμ¦λμ€ νκ²½μ μꡬλ₯Ό μΆ©μ‘±νλ κ°λ ₯ν λΆμ° μμ€ν μ μ€κ³νκ³ κ΅¬νν μ μλ λ₯λ ₯μ κ°μΆκ² λ κ²μ λλ€. μ¬κ° ν¨ν΄μ μμ©νλ κ²μ κ°μ₯ 볡μ‘ν λΆμ° νΈλμμ λ μμ μκ² μ²λ¦¬ν μ μλ μ§μ μΌλ‘ νλ ₯μ μ΄κ³ νμ₯ κ°λ₯ν λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²λ₯Ό ꡬμΆνλ λ¨κ³μ λλ€. μ΄ ν¨ν΄μ μ μ©ν λλ νΉμ μꡬμ¬νκ³Ό 컨ν μ€νΈλ₯Ό κ³ λ €νκ³ μ€μ κ²½νκ³Ό νΌλλ°±μ λ°νμΌλ‘ ꡬνμ μ§μμ μΌλ‘ κ°μ νλ κ²μ μμ§ λ§μμμ€.