Synchronous vs Asynchronous Communication
ν΅μ λ°©μμ ν¬κ² λκΈ°μ(Synchronous)κ³Ό λΉλκΈ°μ(Asynchronous)μΌλ‘ λλλ©°, μ΄ λμ μ νμ μμ€ν μ 체μ μ±λ₯, κ²°ν©λ, κ·Έλ¦¬κ³ μ₯μ λμ λ°©μμ κ²°μ μ μΈ μν₯μ λ―ΈμΉλ€.
λκΈ°μ ν΅μ (Synchronous Communication)
λκΈ°μ ν΅μ μ μμ²μ λ³΄λΈ μλΉμ€κ° μλ΅μ λ°μ λκΉμ§ κΈ°λ€λ¦¬λ(Blocking) λ°©μμΌλ‘, κ°λ¨νμ§λ§ μλμ κ°μ νκ³κ° μ‘΄μ¬νλ€.
κ°ν κ²°ν©(Tight Coupling): μμ² μλΉμ€(A)λ νΌνΈμΆ μλΉμ€(B)κ° μ μμ μΌλ‘ λμνκ³ μλ€λ μ¬μ€μ κ°ν μμ‘΄μ±μ κ°μ§
μ₯μ μ ν(Cascading Failures): λ§μ½ μλΉμ€ Bκ° λλ €μ§κ±°λ μ₯μ κ° λ°μνλ©΄, μλΉμ€ Bλ₯Ό κΈ°λ€λ¦¬λ μλΉμ€ A μμ ν¨κ» λλ €μ§κ±°λ μ₯μ κ° λ°μ
μμ λκΈ°: μλΉμ€ Aλ μλ΅μ κΈ°λ€λ¦¬λ λμ μ€λ λμ κ°μ μμμ κ³μ μ μ
λκΈ° νΈμΆμ ꡬννλ κ²μ λ§€μ° κ°λ¨νμ§λ§, μ€λ¬΄μμλ μλ λ κ°μ§μ λν κ³ λ €κ° λ°λμ νμνλ€.
νμμμ(Timeout) μ€μ
Connection Timeout: μλΉμ€ Bμ μ°κ²°μ μλν λκΉμ§ κΈ°λ€λ¦¬λ μ΅λ μκ°
Read Timeout: μ°κ²°μ μ±κ³΅νμΌλ, μλΉμ€ Bκ° λ°μ΄ν°λ₯Ό λ°νν λκΉμ§ κΈ°λ€λ¦¬λ μ΅λ μκ°
λ§μ½ μ΄ μ€μ μ΄ μκ±°λ λ무 κΈΈλ©΄, μλΉμ€ Bμ μ§μ°μ΄ κ·Έλλ‘ μλΉμ€ Aμ μ€λ λ κ³ κ°λ‘ μ΄μ΄μ Έ μ 체 μμ€ν μ₯μ λ‘ νμ° κ°λ₯
μ¬μλ(Retry) μ μ±
μλΉμ€ Bκ° μ΄λ―Έ κ³ΌλΆν μνλΌ μλ΅μ΄ λλ¦° κ²μ΄λΌλ©΄, μ¬μλλ μ€νλ € λΆνλ₯Ό κ°μ€μμΌ μ₯μ μ ν κ°λ₯
μ΄λ¬ν λκΈ°μ ν΅μ μ νκ³μ μ₯μ μ νλ₯Ό λ§κΈ° μν΄ 'μν· λΈλ μ΄μ»€' ν¨ν΄κ³Ό κ°μ 볡μμ± ν¨ν΄ λμ νμ
λΉλκΈ°μ ν΅μ (Asynchronous Communication)
λΉλκΈ°μ ν΅μ μ μμ²μ λ³΄λΈ μλΉμ€κ° μλ΅μ κΈ°λ€λ¦¬μ§ μκ³ μ¦μ μμ μ λ€μ μμ μ μννλ λ°©μμΌλ‘, μ€κ° λ§€κ°μ²΄λ₯Ό λλ κ²μ΄ μΌλ°μ μ΄λ€.
λμ¨ν κ²°ν©(Loose Coupling): μλΉμ€ Aλ λ©μμ§ λΈλ‘컀μ λ©μμ§λ₯Ό λ°ν(Publish)λ§ ν λΏ, μλΉμ€ Bκ° μ μ λμνλμ§ μ ν μ νμ μμ
μ₯μ 격리(Isolation): μλΉμ€ Bμ μ₯μ κ° λ°μν΄λ μλΉμ€ Aλ μν₯μ λ°μ§ μκ³ λ©μμ§ λ°ν κ°λ₯
μ μ°ν νμ₯μ±: νΉμ μμ (μ: μλ¦Ό λ°μ‘)μ μ²λ¦¬νλ 컨μλ¨Έ μλΉμ€λ§ λ 립μ μΌλ‘ νμ₯ κ°λ₯
λΆν μμΆ©(Buffering): μκ°μ μΈ νΈλν½ νμ¦ μ, μμ²μ λΈλ‘μ»€κ° λ°μ μ μ₯ν΄λκ³ μ»¨μλ¨Έκ° μ²λ¦¬ κ°λ₯ν μλλ‘ μμ°¨ μ²λ¦¬λ‘ μμ€ν μ 체μ μμ μ± ν₯μ
λμ¨ν κ²°ν©κ³Ό μ₯μ 격리λΌλ ν° μ₯μ μ΄ μμ§λ§, μλμ κ°μ νκ³λ μ‘΄μ¬νλ€.
볡μ‘μ± μ¦κ°: μ€κ°μ λ©μμ§ λΈλ‘컀λΌλ λ³λμ μμ€ν μ λμ λ° μ΄μ νμ
κ²°κ³Ό νμΈμ μ΄λ €μ: μμ²μ λ³΄λΈ μͺ½μμ ν΄λΉ μμ μ΄ μΈμ μ±κ³΅μ μΌλ‘ μ²λ¦¬λμλμ§ μκΈ° μ΄λ €μ
μ΅μ’ μΌκ΄μ±(Eventual Consistency): μλΉμ€ Aκ° λ°μ΄ν°λ₯Ό λ³κ²½νκ³ μ΄λ²€νΈλ₯Ό λ°νν΄λ, μλΉμ€ Bκ° μ΄λ₯Ό μ²λ¦¬νμ¬ λ°μ΄ν° μΌκ΄μ±μ λ§μΆκΈ°κΉμ§ μκ° μ§μ°(Latency) λ°μ
λΉλκΈ° ν΅μ μ μ λ’°μ±
λΉλκΈ° μμ€ν μ μ€κ³ν λ κ°μ₯ μ€μν κ²μ λ©μμ§ μ μ€ λ°©μ§μ μ€λ³΅ μ²λ¦¬ λ°©μ§μ΄λ©°, μ΄μ λν λμ λ°©μμ λ°λμ κ³ λ €ν΄μΌ νλ€.
μ λ¬ λ³΄μ₯(Delivery Guarantees)
At-most-once(μ΅λ ν λ²): λ©μμ§λ μ΅λ ν λ² μ λ¬
λΈλ‘컀 μ₯μ μ μ μ€ κ°λ₯
μ±λ₯μ΄ μ€μνκ³ μΌλΆ λ°μ΄ν° μ μ€μ΄ νμ©λ λ μ¬μ©
At-least-once(μ΅μ ν λ²): λ©μμ§λ μ λ μ μ€λμ§ μμ§λ§, μ€λ³΅ κ°λ₯
λλΆλΆμ λ©μμ§ μμ€ν μ΄ κΈ°λ³ΈμΌλ‘ μ±ννλ λ°©μ
μλΉμκ° μ€λ³΅ λ©μμ§λ₯Ό μ²λ¦¬ν μ μλλ‘ λ©±λ±μ± ν보 νμ
Exactly-once(μ νν ν λ²): μ νν ν λ²λ§ μ²λ¦¬
ꡬνμ΄ λ§€μ° μ΄λ ΅κ³ ν° λΉμ©κ³Ό μ±λ₯ μ ν μ λ°
λ©±λ±μ±(Idempotency)
λμΌν λ©μμ§κ° μ¬λ¬ λ² μ²λ¦¬λλλΌλ μμ€ν μνμ μν₯μ μ£Όμ§ μλλ‘ μ€κ³
μ€λ³΅ μ²λ¦¬λ₯Ό λ°©μ§νκΈ° μν΄ 'μμ² ID'λ 'νΈλμμ ID'λ₯Ό κΈ°μ€μΌλ‘ μ΄λ―Έ μ²λ¦¬λ μμ μΈμ§ νμΈνλ λ‘μ§μ 컨μλ¨Έμ ꡬν νμ
Last updated
Was this helpful?