--- id: P-REINFORCE-WIKI-60B39197 category: "10_Wiki/πŸ’‘ Topics/02_Architecture_Principles" confidence_score: 0.95 tags: ['eventual-consistency', 'microservices-architecture', 'event-driven-architecture', 'saga-pattern', 'cqrs', 'architecture-principles'] last_reinforced: 2026-05-02 --- # [[Eventual Consistency]] ## πŸ“Œ Brief Summary Eventual Consistency(μ΅œμ’… 일관성)λŠ” λΆ„μ‚° μ‹œμŠ€ν…œ λ‚΄ μ—¬λŸ¬ μ„œλΉ„μŠ€λ‚˜ 데이터 μ €μž₯μ†Œμ— 걸쳐 데이터가 μ¦‰κ°μ μœΌλ‘œ μΌμΉ˜ν•˜μ§€ μ•Šλ”λΌλ„, 일정 μ‹œκ°„(μ§€μ—° μ‹œκ°„)이 μ§€λ‚˜λ©΄ κ²°κ΅­ λͺ¨λ“  데이터가 λ™μΌν•œ μƒνƒœμ— λ„λ‹¬ν•˜κ²Œ λ˜λŠ” λͺ¨λΈμž…λ‹ˆλ‹€ [1, 2]. 주둜 이벀트 기반 μ•„ν‚€ν…μ²˜(EDA)λ‚˜ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜(MSA)μ—μ„œ 각 μ„œλΉ„μŠ€μ˜ 독립성과 비동기 톡신을 μ§€μ›ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€ [1, 3]. μ΄λŠ” κ°€μš©μ„±(Availability)κ³Ό νŒŒν‹°μ…˜ ν—ˆμš©μ„±(Partition Tolerance)을 ν™•λ³΄ν•˜κΈ° μœ„ν•΄ κ°•λ ₯ν•œ 일관성을 μ˜λ„μ μœΌλ‘œ μ–‘λ³΄ν•˜λŠ” μ•„ν‚€ν…μ²˜μ  νŠΈλ ˆμ΄λ“œμ˜€ν”„(Trade-off) μ „λž΅μž…λ‹ˆλ‹€ [1, 4]. ## πŸ“– Core Content - **비동기 μ²˜λ¦¬μ™€ μƒνƒœ μ§€μ—°**: μƒμ‚°μž(Producer)와 μ†ŒλΉ„μž(Consumer)κ°€ 비동기 이벀트 채널을 톡해 λΆ„λ¦¬λ˜μ–΄ 있기 λ•Œλ¬Έμ—, μƒμ‚°μžκ°€ μƒνƒœ 변경을 λ°©μΆœν•œ μ‹œμ κ³Ό μ†ŒλΉ„μžκ°€ κ·Έ 변경을 λ°˜μ˜ν•˜λŠ” μ‹œμ  사이에 μΈ‘μ • κ°€λŠ₯ν•œ μ§€μ—°(Delay)이 λ°œμƒν•©λ‹ˆλ‹€ [1]. 예λ₯Ό λ“€μ–΄, μ „μžμƒκ±°λž˜ μ‹œμŠ€ν…œμ—μ„œλŠ” 이 μ§€μ—°μœΌλ‘œ 인해 μ£Όλ¬Έ μƒνƒœκ°€ μΌμ‹œμ μœΌλ‘œ 'λŒ€κΈ° 쀑(pending)'으둜 ν‘œμ‹œλ  수 μžˆμŠ΅λ‹ˆλ‹€ [5]. - **μ˜λ„μ μΈ 섀계적 νƒ€ν˜‘ (κ°€μš©μ„± μš°μ„ )**: μ‹œμŠ€ν…œμ˜ μ„œλ‘œ λ‹€λ₯Έ 뢀뢄듀이 νŠΉμ • μˆœκ°„μ— 데이터 μƒνƒœμ— λŒ€ν•΄ μƒμ΄ν•œ 관점(view)을 κ°€μ§ˆ 수 μžˆμ§€λ§Œ, μ΄λŠ” 였λ₯˜κ°€ μ•„λ‹ˆλΌ μ˜λ„μ μΈ μ„€κ³„μ˜ κ²°κ³Όμž…λ‹ˆλ‹€ [1]. μ•„ν‚€ν…νŠΈλ“€μ€ μ‹œμŠ€ν…œ μ „μ²΄μ˜ κ°€μš©μ„±κ³Ό μ„±λŠ₯을 높이기 μœ„ν•΄ νŠΉμ • μ›Œν¬ν”Œλ‘œμš°μ— μ΅œμ’… 일관성을 μ±„νƒν•˜λ©°, 데이터 μ†ŒλΉ„μžμ™€ ν•˜μœ„ μ‹œμŠ€ν…œμ΄ μ΄λŸ¬ν•œ μ§€μ—°λ˜κ±°λ‚˜ λΆ€λΆ„μ μœΌλ‘œ μ—…λ°μ΄νŠΈλœ 데이터λ₯Ό ν—ˆμš©(tolerate)ν•  수 μžˆλ„λ‘ 섀계해야 ν•©λ‹ˆλ‹€ [1]. - **λΆ„μ‚° ν™˜κ²½ κ΅¬ν˜„ νŒ¨ν„΄μ˜ 기반**: λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ ν™˜κ²½μ—μ„œ λŠμŠ¨ν•œ 결합을 μœ μ§€ν•˜λ €λ©΄ 각 μ„œλΉ„μŠ€κ°€ κ³ μœ ν•œ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κ°€μ Έμ•Ό ν•˜λ―€λ‘œ, 기쑴의 단일 λ°μ΄ν„°λ² μ΄μŠ€ 기반 ACID νŠΈλžœμž­μ…˜μ„ μ μš©ν•˜κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€ [2, 3]. λŒ€μ‹  이벀트 μ†Œμ‹±(Event Sourcing), CQRS, Saga νŒ¨ν„΄κ³Ό 같은 λΆ„μ‚° νŠΈλžœμž­μ…˜ 관리 기법을 ν™œμš©ν•˜μ—¬ μ‹œμŠ€ν…œ μ „λ°˜μ˜ μ΅œμ’… 일관성을 κ΅¬ν˜„ν•©λ‹ˆλ‹€ [2, 3, 6]. ## βš–οΈ Trade-offs & Caveats - **κ΅¬ν˜„ 및 ν…ŒμŠ€νŠΈμ˜ 높은 λ³΅μž‘μ„±**: κΈ°μ‘΄ 동기식(CRUD/ACID) μ‚¬κ³ λ°©μ‹μ—μ„œ λ²—μ–΄λ‚˜ μ—¬λŸ¬ 데이터 μ €μž₯μ†Œ κ°„μ˜ νŠΈλžœμž­μ…˜κ³Ό 비동기 이벀트λ₯Ό μ‘°μ •ν•΄μ•Ό ν•˜λ―€λ‘œ μ‹œμŠ€ν…œ κ΅¬ν˜„, 디버깅, ν…ŒμŠ€νŠΈμ˜ λ‚œμ΄λ„κ°€ 크게 μƒμŠΉν•©λ‹ˆλ‹€ [2, 7, 8]. - **데이터 뢈일치 μœˆλ„μš° λ°œμƒ**: 데이터가 λ™κΈ°ν™”λ˜κΈ° μ „κΉŒμ§€ λ°€λ¦¬μ΄ˆ λ‹¨μœ„μ˜ μ§€μ—°μ΄λ‚˜ μΌμ‹œμ μΈ 데이터 λΆˆμΌμΉ˜κ°€ ν•„μ—°μ μœΌλ‘œ λ°œμƒν•©λ‹ˆλ‹€ [1, 9]. λ”°λΌμ„œ μž”μ•‘μ΄ 즉각적이고 μ •ν™•ν•˜κ²Œ λ°˜μ˜λ˜μ–΄μ•Ό ν•˜λŠ” μ€ν–‰μ˜ 금육 νŠΈλžœμž­μ…˜μ²˜λŸΌ κ°•λ ₯ν•œ 일관성(Strong Consistency)이 μš”κ΅¬λ˜λŠ” μ‹œμŠ€ν…œμ—λŠ” 이 λͺ¨λΈμ˜ μ‚¬μš©μ„ ν”Όν•΄μ•Ό ν•©λ‹ˆλ‹€ [10, 11]. - **μƒνƒœ 관리 및 였λ₯˜ 처리의 ν•œκ³„**: 비동기 톡신 쀑 ꡬ성 μš”μ†Œ κ°„ 이벀트 전달이 μ‹€νŒ¨ν•˜κ±°λ‚˜ μˆœμ„œκ°€ λ’€λ°”λ€” 수 있으며, 이λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ 였λ₯˜ ν•Έλ“€λŸ¬λ‚˜ μž¬μ‹œλ„(Retry) λ©”μ»€λ‹ˆμ¦˜, λ°λ“œ λ ˆν„° 큐(DLQ) λ“±μ˜ 좔가적인 섀계가 ν•„μš”ν•˜μ—¬ 인프라 및 운영 μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•©λ‹ˆλ‹€ [1]. ## πŸ”— Knowledge Connections ### Related Concepts #### [μ•„ν‚€ν…μ²˜ νŒ¨ν„΄ / μŠ€νƒ€μΌ] - [[Microservices Architecture]] - μ—°κ²° 이유: MSAλŠ” 각 μ„œλΉ„μŠ€κ°€ λ…λ¦½λœ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ†Œμœ ν•˜λŠ” 원칙을 λ”°λ₯΄κΈ° λ•Œλ¬Έμ—, μ„œλΉ„μŠ€ κ°„ 데이터 동기화λ₯Ό μœ„ν•΄ μ΅œμ’… 일관성 λ„μž…μ΄ ν•„μˆ˜μ μž…λ‹ˆλ‹€ [2, 3]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ΅œμ’… 일관성이 μ™œ ν˜„λŒ€μ˜ λΆ„μ‚°λœ μ„œλΉ„μŠ€ ν™˜κ²½μ—μ„œ λΆˆκ°€ν”Όν•œ 선택이 λ˜μ—ˆλŠ”μ§€ ꡬ쑰적 원인을 μ œκ³΅ν•©λ‹ˆλ‹€. - [[Event-Driven Architecture]] - μ—°κ²° 이유: μ»΄ν¬λ„ŒνŠΈ 간에 λΉ„λ™κΈ°μ μœΌλ‘œ 이벀트λ₯Ό μƒμ‚°ν•˜κ³  μ†ŒλΉ„ν•˜λŠ” ꡬ쑰적 νŠΉμ„±μƒ λ°μ΄ν„°μ˜ μƒνƒœ 변경이 순차적으둜 νΌμ Έλ‚˜κ°€λ©° μ΅œμ’… 일관성을 ν˜•μ„±ν•©λ‹ˆλ‹€ [1]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ΅œμ’… 일관성이 비동기 λ©”μ‹œμ§• 및 톡신 채널을 톡해 μ–΄λ–»κ²Œ 물리적으둜 κ΅¬ν˜„λ˜κ³  μ§€μ—°(Latency)을 μœ λ°œν•˜λŠ”μ§€ νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€. #### [κ΅¬ν˜„ 및 섀계 νŒ¨ν„΄] - [[Saga Pattern]] - μ—°κ²° 이유: λΆ„μ‚°λœ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ ν™˜κ²½μ—μ„œ μ΅œμ’… 일관성을 λ‹¬μ„±ν•˜κΈ° μœ„ν•΄ ACID νŠΈλžœμž­μ…˜ λŒ€μ‹  μ—°μ†λœ 둜컬 νŠΈλžœμž­μ…˜κ³Ό 보상(Compensation) μž‘μ—…μœΌλ‘œ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μ²˜λ¦¬ν•˜λŠ” νŒ¨ν„΄μž…λ‹ˆλ‹€ [2, 12]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ΅œμ’… 일관성 ν™˜κ²½μ—μ„œ νŠΈλžœμž­μ…˜ μ‹€νŒ¨ μ‹œ μ‹œμŠ€ν…œμ΄ μ–΄λ–»κ²Œ 였λ₯˜λ₯Ό λ³΅κ΅¬ν•˜κ³  데이터 일관성을 νšŒλ³΅ν•˜λŠ”μ§€ ꡬ체적인 λ©”μ»€λ‹ˆμ¦˜μ„ 배울 수 μžˆμŠ΅λ‹ˆλ‹€. - [[CQRS]] - μ—°κ²° 이유: λ°μ΄ν„°μ˜ 읽기(Query) λͺ¨λΈκ³Ό μ“°κΈ°(Command) λͺ¨λΈμ„ λΆ„λ¦¬ν•˜μ—¬ 각각 μ΅œμ ν™”ν•  λ•Œ, μ“°κΈ° λ‚΄μš©μ΄ 읽기 λͺ¨λΈλ‘œ λ™κΈ°ν™”λ˜λŠ” κ³Όμ •μ—μ„œ ν•„μ—°μ μœΌλ‘œ μ΅œμ’… 일관성이 λ°œμƒν•©λ‹ˆλ‹€ [6, 13]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: 읽기와 μ“°κΈ°μ˜ μ„±λŠ₯을 λΉ„λŒ€μΉ­μ μœΌλ‘œ ν™•μž₯ν•˜λŠ” κ³Όμ •μ—μ„œ 데이터 μ§€μ—°(Lag)이 μ–΄λ–»κ²Œ μ•„ν‚€ν…μ²˜ λ‚΄μ—μ„œ μ²˜λ¦¬λ˜λŠ”μ§€ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€. - [[ACID Transactions]] - μ—°κ²° 이유: 전톡적인 κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 보μž₯ν•˜λŠ” κ°•λ ₯ν•œ 일관성 μ†μ„±μœΌλ‘œ, μ΅œμ’… 일관성 λͺ¨λΈκ³Ό λŒ€λΉ„λ˜λŠ” 핡심 κ°œλ…μž…λ‹ˆλ‹€ [2, 3]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ‹œμŠ€ν…œ 섀계 μ‹œ κ°•λ ₯ν•œ 일관성과 μ΅œμ’… 일관성 쀑 μ–΄λŠ 것을 선택해야 ν•˜λŠ”μ§€μ— λŒ€ν•œ νŠΈλ ˆμ΄λ“œμ˜€ν”„ 기쀀을 μ œκ³΅ν•©λ‹ˆλ‹€. ### Deeper Research Questions - λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ ν™˜κ²½μ—μ„œ μ΅œμ’… 일관성을 μˆ˜μš©ν•  λ•Œ, Saga νŒ¨ν„΄μ€ μ‹€νŒ¨ν•œ νŠΈλžœμž­μ…˜μ„ λ‘€λ°±(Rollback)ν•˜κΈ° μœ„ν•΄ 보상(Compensating) νŠΈλžœμž­μ…˜μ„ μ–΄λ–»κ²Œ μ‘°μœ¨ν•˜λŠ”κ°€? - μ‹€μ‹œκ°„μœΌλ‘œ κ°•λ ₯ν•œ 일관성이 ν•„μˆ˜μ μΈ 금육 μ‹œμŠ€ν…œμ—μ„œ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€μ™€ μ΅œμ’… 일관성 κ°œλ…μ„ ν˜Όν•©(Hybrid)ν•˜μ—¬ μ•ˆμ „μ„±μ„ ν™•λ³΄ν•˜λŠ” μ•„ν‚€ν…μ²˜μ  μ „λž΅μ€ 무엇인가? - CQRS νŒ¨ν„΄ 적용 μ‹œ, μ“°κΈ° λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 읽기 λ°μ΄ν„°λ² μ΄μŠ€λ‘œ μƒνƒœκ°€ λ™κΈ°ν™”λ˜λŠ” μ§€μ—° μ‹œκ°„ λ™μ•ˆ μ‚¬μš©μž κ²½ν—˜(UX) μ €ν•˜λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ ν”„λ‘ νŠΈμ—”λ“œμ™€ λ°±μ—”λ“œλŠ” μ–΄λ–»κ²Œ ν˜‘λ ₯ν•΄μ•Ό ν•˜λŠ”κ°€? - 비동기 ν™˜κ²½μ˜ μ΅œμ’… 일관성 λͺ¨λΈ ν•˜μ—μ„œ λ©”μ‹œμ§€ μˆœμ„œκ°€ λ’€μ„žμ΄κ±°λ‚˜ 쀑볡 μˆ˜μ‹ λ  경우, λ©±λ“±μ„±(Idempotence)을 보μž₯ν•˜κΈ° μœ„ν•΄ μ†ŒλΉ„μžλ₯Ό μ–΄λ–»κ²Œ 섀계해야 ν•˜λŠ”κ°€? - λΆ„μ‚° μ‹œμŠ€ν…œ μ „λ°˜μ— 걸친 비동기 데이터 뢈일치 및 톡신 μž₯μ• λ₯Ό μΆ”μ ν•˜κΈ° μœ„ν•΄ 상관 ID(Correlation ID) 및 λΆ„μ‚° νŠΈλ ˆμ΄μ‹±μ„ μ–΄λ–»κ²Œ 효과적으둜 κ΅¬ν˜„ν•  수 μžˆλŠ”κ°€? ### Practical Application Contexts - **Implementation:** 각각 λ‹€λ₯Έ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” μ—¬λŸ¬ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€κ°€ 비동기 λ©”μ‹œμ§•(예: Kafka, RabbitMQ)을 톡해 이벀트λ₯Ό μ£Όκ³ λ°›μœΌλ©° 각자의 데이터λ₯Ό μ μ§„μ μœΌλ‘œ μ—…λ°μ΄νŠΈν•˜λ„λ‘ μ½”λ“œλ₯Ό κ΅¬ν˜„ν•  λ•Œ μ μš©λ©λ‹ˆλ‹€ [8, 14]. - **System Design:** μ•„ν‚€ν…νŠΈλŠ” 결제 승인과 같이 즉각적이고 κ°•λ ₯ν•œ 일관성이 ν•„μš”ν•œ μ›Œν¬ν”Œλ‘œμš°μ™€, 이메일 μ•Œλ¦Ό 전솑과 같이 νŒŒν‹°μ…˜ ν—ˆμš©μ„±κ³Ό κ°€μš©μ„±μ„ μœ„ν•΄ μ΅œμ’… 일관성을 ν—ˆμš©ν•  수 μžˆλŠ” μ›Œν¬ν”Œλ‘œμš°λ₯Ό λΆ„λ¦¬ν•˜μ—¬ μ‹œμŠ€ν…œμ„ 섀계해야 ν•©λ‹ˆλ‹€ [1]. - **Operation / Maintenance:** 비동기 이벀트 ν™˜κ²½μ—μ„œλŠ” 였λ₯˜κ°€ λ°œμƒν•΄λ„ μ‹œμŠ€ν…œμ΄ 즉각 μ •μ§€ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ, λ°λ“œ λ ˆν„° 큐(DLQ) λͺ¨λ‹ˆν„°λ§ 및 λ‘œκΉ… μ‹œμŠ€ν…œ(상관 ID μ‚¬μš©)을 ν†΅ν•œ λΆ„μ‚° νŠΈλ ˆμ΄μ‹±μœΌλ‘œ 이벀트 μ§€μ—° 및 뢈일치 지점을 μƒμ‹œ 좔적해야 ν•©λ‹ˆλ‹€ [1, 15]. - **Learning Path:** 전톡적인 RDBMS 및 ACID νŠΈλžœμž­μ…˜μ˜ 이해 -> λͺ¨λ†€λ¦¬μ‹μ—μ„œ λΆ„μ‚° μ‹œμŠ€ν…œ(MSA)으둜의 μ „ν™˜ 이유 ν•™μŠ΅ -> 이벀트 기반 μ•„ν‚€ν…μ²˜(EDA) 섀계 -> μ΅œμ’… 일관성, CQRS, Event Sourcing λ“± 심화 νŒ¨ν„΄ μŠ΅λ“ 순으둜 ν•™μŠ΅ν•©λ‹ˆλ‹€. - **My Project Relevance:** κΈ€λ‘œλ²Œ μ „μžμƒκ±°λž˜ ν”Œλž«νΌ, μ†Œμ…œ λ―Έλ””μ–΄ ν”Όλ“œ κ°±μ‹ , IoT 데이터 μˆ˜μ§‘ λ“± μ‹€μ‹œκ°„ 100% 동기화보닀 λŠκΉ€ μ—†λŠ” μ„œλΉ„μŠ€ κ°€μš©μ„±κ³Ό λŒ€κ·œλͺ¨ νŠΈλž˜ν”½ μ²˜λ¦¬κ°€ 더 μ€‘μš”ν•œ λŒ€κ·œλͺ¨ λΆ„μ‚° ν”„λ‘œμ νŠΈ 기획 μ‹œ 핡심 근간이 λ©λ‹ˆλ‹€. ### Adjacent Topics - [[Distributed Tracing]] - ν™•μž₯ λ°©ν–₯: μ΅œμ’… 일관성을 κ°–λŠ” μ—¬λŸ¬ 비동기 μ„œλΉ„μŠ€μ— 걸친 ν•˜λ‚˜μ˜ 논리적 νŠΈλžœμž­μ…˜ 흐름을 상관 ID(Correlation ID) λ“±μœΌλ‘œ μΆ”μ ν•˜κ³  λ””λ²„κΉ…ν•˜λŠ” 운영 기술 κ΄€μ μœΌλ‘œ ν™•μž₯ [15]. - [[Event Sourcing]] - ν™•μž₯ λ°©ν–₯: λ°μ΄ν„°μ˜ μ΅œμ’… μƒνƒœλ₯Ό μ €μž₯ν•˜λŠ” λŒ€μ‹  λͺ¨λ“  μƒνƒœ λ³€κ²½ 이벀트λ₯Ό 순차적으둜 λ‘œκΉ…ν•˜μ—¬ μ˜μ†μ„±μ„ λΆ€μ—¬ν•¨μœΌλ‘œμ¨, κ³Όκ±° μƒνƒœλ‘œμ˜ 볡원 및 μ΅œμ’… 일관성 κ΅¬ν˜„μ„ λ•λŠ” 데이터 관리 νŒ¨ν„΄ κ΄€μ μœΌλ‘œ ν™•μž₯ [16, 17]. --- *Last updated: 2026-05-02*