--- id: P-REINFORCE-WIKI-A628592C category: "10_Wiki/πŸ’‘ Topics/02_Architecture_Principles" confidence_score: 0.95 tags: ['circuit-breaker-pattern', 'circuit-breaker-pattern', 'microservices-architecture-pattern', 'circuit-breaker-pattern', 'modular-monolith', 'architecture-principles'] last_reinforced: 2026-05-02 --- # [[Circuit Breaker Pattern]] ## πŸ“Œ Brief μ‹œ Summary [[Circuit Breaker Pattern]]은 μ „κΈ° 회둜 μ°¨λ‹¨κΈ°μ—μ„œ μ˜κ°μ„ λ°›μ•„ κ³ μ•ˆλœ ν˜„λŒ€μ μΈ μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ΄λ‹€ [1, 2]. λΆ„μ‚° μ‹œμŠ€ν…œμ—μ„œ 결함이 λ°œμƒν•œ μ„œλΉ„μŠ€μ— λŒ€ν•œ μš”μ²­μ„ μΌμ‹œμ μœΌλ‘œ μ°¨λ‹¨ν•˜μ—¬ ν•˜λ‚˜μ˜ μ‹€νŒ¨κ°€ λ‹€λ₯Έ μ‹€νŒ¨λ₯Ό μ•ΌκΈ°ν•˜λŠ” 연쇄 μž₯μ• (Cascading failures)λ₯Ό λ°©μ§€ν•˜λŠ” 역할을 μˆ˜ν–‰ν•œλ‹€ [1, 2]. μ„œλΉ„μŠ€μ˜ μƒνƒœλ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜μ—¬ λΉ λ₯Έ μž₯μ•  감지λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•˜λ©°, 전체 μ‹œμŠ€ν…œμ˜ 내결함성(Fault tolerance)κ³Ό 볡원λ ₯을 λ†’μ΄λŠ” 데 ν•΅μ‹¬μ μœΌλ‘œ κΈ°μ—¬ν•œλ‹€ [3, 4]. ## πŸ“– Core Content - **연쇄 μž₯μ•  λ°©μ§€ 및 μž‘λ™ 원리:** μ „κΈ° 회둜 차단기와 λ§ˆμ°¬κ°€μ§€λ‘œ κ°œλ³„ μ„œλΉ„μŠ€μ˜ μž₯μ• κ°€ 더 큰 λΆ„μ‚° μ‹œμŠ€ν…œ μ „μ²΄λ‘œ μ „νŒŒλ˜λŠ” 것을 μ°¨λ‹¨ν•œλ‹€ [2]. μ‹€νŒ¨ν•˜λŠ” μ„œλΉ„μŠ€μ— λŒ€ν•œ μš”μ²­μ„ μΌμ‹œμ μœΌλ‘œ 차단(블둝)ν•˜κ³ , μ§€μ •λœ νƒ€μž„μ•„μ›ƒ 기간이 μ§€λ‚˜λ©΄ μžλ™μœΌλ‘œ μž¬μ‹œλ„ν•˜μ—¬ μ‹œμŠ€ν…œμ„ λ³΄ν˜Έν•œλ‹€ [1, 5]. - **μž₯μ•  감지와 μƒνƒœ λͺ¨λ‹ˆν„°λ§:** μ‹œμŠ€ν…œμ€ ν•˜νŠΈλΉ„νŠΈ(Heartbeats), "ν•©μ„± νŠΈλžœμž­μ…˜(Synthetic transactions)", λ˜λŠ” μ‹€μ‹œκ°„ μ‚¬μš©λŸ‰ λͺ¨λ‹ˆν„°λ§κ³Ό 같은 λ©”μ»€λ‹ˆμ¦˜μ„ 톡해 μ„œλΉ„μŠ€ μƒνƒœλ₯Ό μ§€μ†μ μœΌλ‘œ νŒŒμ•…ν•œλ‹€ [4]. 이λ₯Ό 톡해 νƒ€μž„μ•„μ›ƒ μ•ˆν‹°νŒ¨ν„΄(Timeout AntiPattern)으둜 μΈν•œ 문제λ₯Ό ν•΄κ²°ν•˜κ³  보닀 μ‹ μ†ν•˜κ²Œ μž₯μ• λ₯Ό 감지할 수 μžˆλ‹€ [4]. - **폴백(Fallback) 및 운영 지원:** μ„œλΉ„μŠ€ μž₯μ• κ°€ λ°œμƒν•œ μ‹œκ°„ λ™μ•ˆμ—λŠ” μΊμ‹œλœ 데이터와 같은 λŒ€μ²΄(Fallback) 응닡을 μ œκ³΅ν•˜μ—¬ μ‹œμŠ€ν…œ κ°€μš©μ„±μ„ λ°©μ–΄ν•œλ‹€ [5]. λ˜ν•œ, 운영(Ops) νŒ€μ„ μœ„ν•΄ λŒ€μ‹œλ³΄λ“œ μ•Œλ¦Ό λ“± λͺ…ν™•ν•œ μž₯μ•  μƒνƒœλ₯Ό μ œκ³΅ν•˜λŠ” 데 μœ μš©ν•˜λ‹€ [5]. - **μ£Όμš” 적용 λŒ€μƒ 및 사둀:** μ „μžμƒκ±°λž˜μ˜ 결제 μ„œλΉ„μŠ€ ν˜ΈμΆœμ΄λ‚˜ μ—¬ν–‰ μ•±μ˜ 날씨 μ„œλΉ„μŠ€ λ“± μ™ΈλΆ€ API 쒅속성이 μžˆλŠ” λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μƒνƒœκ³„λ‚˜, μ‹€νŒ¨ λΉ„μš©μ΄ 큰 λ―Έμ…˜ 크리티컬 μ‹œμŠ€ν…œ(예: ν—¬μŠ€μΌ€μ–΄ API)에 주둜 μ‚¬μš©λœλ‹€ [3]. μ‹€μ œ μ„Έκ³„μ—μ„œλŠ” λ„·ν”Œλ¦­μŠ€(Netflix)κ°€ κ°œλ°œν•œ Hystrix λΌμ΄λΈŒλŸ¬λ¦¬κ°€ 이 νŒ¨ν„΄μ„ μ μš©ν•˜μ—¬ 슀트리밍 μ„œλΉ„μŠ€ 볡원λ ₯을 μ œκ³΅ν•˜λ©°, μ•„λ§ˆμ‘΄(Amazon) λ˜ν•œ λŒ€κ·œλͺ¨ μ˜μ‘΄μ„± 관리λ₯Ό μœ„ν•΄ ν™œμš©ν•˜κ³  μžˆλ‹€ [6]. ## βš–οΈ Trade-offs & Caveats - **ꡬ성 및 ν…ŒμŠ€νŠΈμ˜ λ³΅μž‘μ„±:** μ‹€νŒ¨ 횟수(Failure count)λ‚˜ νƒ€μž„μ•„μ›ƒ(Timeout)κ³Ό 같은 μž„κ³„κ°’μ„ μ‹œμŠ€ν…œμ— 맞게 λ―Έμ„Έ μ‘°μ •ν•΄μ•Ό ν•˜λ―€λ‘œ, ꡬ성이 λ³΅μž‘ν•˜κ³  λ§Žμ€ 사전 ν…ŒμŠ€νŠΈκ°€ μš”κ΅¬λœλ‹€ [5]. - **응닡 μ‹œκ°„ 증가:** 차단을 μ œμ–΄ν•˜κΈ° μœ„ν•œ 좔가적인 둜직이 톡신 과정에 λ„μž…λ˜λ―€λ‘œ, μ„œλΉ„μŠ€μ˜ 응닡 μ‹œκ°„μ΄ μ•½κ°„ 증가할 수 μžˆλ‹€ [5]. - **μƒνƒœ κ΄€λ¦¬μ˜ 어렀움:** λΆ„μ‚°λœ μ„œλ²„λ¦¬μŠ€(Serverless) ν™˜κ²½κ³Ό 같은 νŠΉμ •ν•œ λΆ„μ‚° ν™˜κ²½μ—μ„œλŠ” 회둜 μ°¨λ‹¨κΈ°μ˜ μƒνƒœλ₯Ό κ΄€λ¦¬ν•˜κ³  μœ μ§€ν•˜λŠ” 것이 맀우 κΉŒλ‹€λ‘­λ‹€ [5]. - **적용의 μ œμ•½ 사항:** μ‹œμŠ€ν…œμ— μ™ΈλΆ€ 쒅속성이 μ—†λŠ” κ²½μš°λ‚˜, μ‹œμŠ€ν…œμ˜ μ•ˆμ •μ„±(System stability)을 μœ μ§€ν•˜λŠ” 것보닀 λ“€μ–΄μ˜¨ μš”μ²­μ„ 무쑰건 μ™„λ£Œ(Request completion)ν•˜λŠ” 것이 더 μš°μ„ μ‹œλ˜λŠ” ν™˜κ²½μ—μ„œλŠ” 이 νŒ¨ν„΄μ˜ μ‚¬μš©μ„ ν”Όν•΄μ•Ό ν•œλ‹€ [3]. ## πŸ”— Knowledge Connections ### Related Concepts #### [관계 μœ ν˜• A (μ•„ν‚€ν…μ²˜/섀계 λͺ¨λΈ)] - [[Microservices Architecture Pattern]] - μ—°κ²° 이유: [[Circuit Breaker Pattern]]은 λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μƒνƒœκ³„ λ‚΄μ—μ„œ νŠΉμ • μ„œλΉ„μŠ€μ˜ μ‹€νŒ¨κ°€ λ‹€λ₯Έ λ…λ¦½λœ μ„œλΉ„μŠ€λ‘œ μ „νŒŒλ˜λŠ” 것을 λ§‰λŠ” 핡심적인 보호 μž₯μΉ˜μ΄λ‹€ [2, 3]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: κ³ λ„λ‘œ λΆ„μ‚°λœ μ„œλΉ„μŠ€ κ°„ 톡신 ν™˜κ²½μ—μ„œ 결함 격리(Fault isolation)와 볡원λ ₯(Resilience)이 μ–΄λ–»κ²Œ μ•„ν‚€ν…μ²˜μ μœΌλ‘œ λ‹¬μ„±λ˜λŠ”μ§€ 이해할 수 μžˆλ‹€ [5]. - [[Modular Monolith]] - μ—°κ²° 이유: λͺ¨λ“ˆμ‹ λͺ¨λ†€λ¦¬μŠ€ ν™˜κ²½μ—μ„œλ„ 단일 λͺ¨λ“ˆμ˜ λ²„κ·Έλ‚˜ 결함이 전체 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ€‘λ‹¨μ‹œν‚€λŠ” 것을 λ°©μ§€ν•˜κΈ° μœ„ν•œ μ•ˆμ „μž₯μΉ˜λ‘œμ„œ 회둜 차단기 λ©”μ»€λ‹ˆμ¦˜μ΄ ν™œμš©λœλ‹€ [7]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: λΆ„μ‚° μ‹œμŠ€ν…œλΏλ§Œ μ•„λ‹ˆλΌ 단일 ν”„λ‘œμ„ΈμŠ€ λ‚΄μ˜ λͺ¨λ“ˆν™”λœ μ•„ν‚€ν…μ²˜μ—μ„œλ„ 연쇄 μž₯μ• λ₯Ό λ§‰λŠ” 원리가 μ–΄λ–»κ²Œ λ™μΌν•˜κ²Œ μ μš©λ˜λŠ”μ§€ νŒŒμ•…ν•  수 μžˆλ‹€ [7]. #### [관계 μœ ν˜• B (결함 관리 및 μ•ˆν‹°νŒ¨ν„΄)] - [[Fault Tolerance]] - μ—°κ²° 이유: [[Circuit Breaker Pattern]]의 κ°€μž₯ 근본적인 λͺ©μ μ΄ μ‹œμŠ€ν…œμ˜ 내결함성(Fault Tolerance)을 ν–₯μƒμ‹œμΌœ 일뢀 ꡬ성 μš”μ†Œκ°€ μ‹€νŒ¨ν•˜λ”λΌλ„ μ‹œμŠ€ν…œμ΄ 계속 μž‘λ™ν•˜λ„λ‘ ν•˜λŠ” 것이기 λ•Œλ¬Έμ΄λ‹€ [2, 3]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜κ°€ μž₯μ•  상황을 μ–΄λ–»κ²Œ κ²©λ¦¬ν•˜κ³  μ‹œμŠ€ν…œ λ‹€μš΄νƒ€μž„μ„ λ°©μ–΄ν•˜λŠ”μ§€μ— λŒ€ν•œ μ „λž΅μ  λͺ©ν‘œλ₯Ό 이해할 수 μžˆλ‹€ [3]. - [[Timeout AntiPattern]] - μ—°κ²° 이유: λΆ„μ‚° μ‹œμŠ€ν…œμ—μ„œ λ‹¨μˆœν•˜κ²Œ νƒ€μž„μ•„μ›ƒ 값을 μ„€μ •ν•  λ•Œ λ°œμƒν•˜λŠ” 문제λ₯Ό μ„€λͺ…ν•˜λŠ” μ•ˆν‹°νŒ¨ν„΄μœΌλ‘œ, [[Circuit Breaker Pattern]]은 μƒνƒœ λͺ¨λ‹ˆν„°λ§μ„ 톡해 μ΄λŸ¬ν•œ 문제λ₯Ό λŠ₯λ™μ μœΌλ‘œ ν•΄κ²°ν•˜λŠ” λŒ€μ•ˆμ΄λ‹€ [4]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ™œ λΆ„μ‚° μ‹œμŠ€ν…œμ—μ„œ λ‹¨μˆœν•œ 응닡 λŒ€κΈ° μ‹œκ°„ 초과 μ„€μ •λ§ŒμœΌλ‘œλŠ” λΆ€μ‘±ν•˜κ³ , λ™μ μœΌλ‘œ νŠΈλž˜ν”½μ„ μ°¨λ‹¨ν•˜λŠ” λ©”μ»€λ‹ˆμ¦˜μ΄ ν•„μˆ˜μ μΈμ§€ νŒŒμ•…ν•  수 μžˆλ‹€ [4]. ### Deeper Research Questions - λΆ„μ‚°λœ μ„œλ²„λ¦¬μŠ€(Serverless) ν™˜κ²½μ—μ„œ Circuit Breaker의 μƒνƒœ(State)λ₯Ό κ΄€λ¦¬ν•˜λŠ” 것이 ꡬ체적으둜 μ–΄λ–€ ꡬ쑰적 μ œμ•½ λ•Œλ¬Έμ— μ–΄λ €μš΄κ°€? [5] - Circuit Breaker의 μ‹€νŒ¨ μž„κ³„κ°’(Failure count)κ³Ό νƒ€μž„μ•„μ›ƒ(Timeout)을 μ΅œμ ν™”ν•˜κΈ° μœ„ν•΄, μ‹€μ œ 운영 ν™˜κ²½μ—μ„œλŠ” μ–΄λ–€ λ°©μ‹μ˜ ν…ŒμŠ€νŠΈμ™€ νŠœλ‹μ΄ μ΄λ£¨μ–΄μ§€λŠ”κ°€? [5] - Circuit Breakerκ°€ Timeout μ•ˆν‹°νŒ¨ν„΄μ„ κ·Ήλ³΅ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” ν•˜νŠΈλΉ„νŠΈλ‚˜ ν•©μ„± νŠΈλžœμž­μ…˜(Synthetic transactions)은 μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜ λ‚΄λΆ€μ—μ„œ μ–΄λ–»κ²Œ κ΅¬ν˜„λ˜κ³  μž‘λ™ν•˜λŠ”κ°€? [4] - μ‹œμŠ€ν…œμ˜ μ•ˆμ •μ„±(Stability)보닀 μš”μ²­μ˜ μ™„λ£Œ(Request completion)λ₯Ό μš°μ„ μ‹œν•΄μ•Ό ν•΄μ„œ Circuit Breaker의 λ„μž…μ„ ν”Όν•΄μ•Ό ν•˜λŠ” ꡬ체적인 λΉ„μ¦ˆλ‹ˆμŠ€ λ„λ©”μΈμ΄λ‚˜ λ§₯락은 무엇인가? [3] - Circuit Breaker νŒ¨ν„΄ λ„μž… μ‹œ ν•„μ—°μ μœΌλ‘œ λ°œμƒν•˜λŠ” 응닡 μ‹œκ°„ 증가(Latency)λ₯Ό μ•„ν‚€ν…μ²˜ λ ˆλ²¨μ—μ„œ μ΅œμ†Œν™”ν•  수 μžˆλŠ” 보완 기법은 무엇인가? [5] ### Practical Application Contexts - **Implementation:** λ„·ν”Œλ¦­μŠ€μ˜ Hystrix와 같은 κ²€μ¦λœ 라이브러리λ₯Ό ν™œμš©ν•˜μ—¬, λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ κ°„ 톡신 μ‹€νŒ¨ μ‹œ μΊμ‹œλœ 데이터λ₯Ό λ°˜ν™˜ν•˜λŠ” 폴백(Fallback) 둜직과 νƒ€μž„μ•„μ›ƒ 룰을 μ½”λ“œμ— κ΅¬ν˜„ν•œλ‹€ [5, 6]. - **System Design:** μ „μžμƒκ±°λž˜ μ‹œμŠ€ν…œ 결제 κ΅¬κ°„μ΄λ‚˜ 날씨 API 호좜과 같이 μž₯μ•  λ°œμƒ ν™•λ₯ μ΄ μžˆκ±°λ‚˜ μ™ΈλΆ€ μ˜μ‘΄μ„±μ΄ 높은 지점을 μ‹λ³„ν•˜κ³ , ν•΄λ‹Ή ꡬ간에 회둜 차단기λ₯Ό λ°°μΉ˜ν•˜μ—¬ 결함 ν—ˆμš©(Fault-tolerant) μ•„ν‚€ν…μ²˜λ₯Ό μ„€κ³„ν•œλ‹€ [2, 3]. - **Operation / Maintenance:** 운영 ν™˜κ²½μ—μ„œ 회둜 차단기가 μž‘λ™(Open)ν•  λ•Œ λŒ€μ‹œλ³΄λ“œμ— 즉각적인 μ•Œλ¦Όμ„ λ„μš°λ„λ‘ μ„€μ •ν•˜μ—¬, μž₯μ•  상황을 λΉ λ₯΄κ²Œ μΈμ§€ν•˜κ³  μ‘°μΉ˜ν•  수 μžˆλŠ” λͺ¨λ‹ˆν„°λ§ 체계λ₯Ό κ΅¬μΆ•ν•œλ‹€ [5]. - **Learning Path:** λΆ„μ‚° μ‹œμŠ€ν…œκ³Ό λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€μ˜ νŠΉμ„±μ„ μ΄ν•΄ν•œ λ’€, λ„€νŠΈμ›Œν¬ 톡신 μ‹€νŒ¨κ°€ μΌμœΌν‚€λŠ” 연쇄 μž₯μ• μ˜ μœ„ν—˜μ„±μ„ ν•™μŠ΅ν•˜κ³ , 이λ₯Ό ν•΄κ²°ν•˜λŠ” νŒ¨ν„΄μœΌλ‘œμ„œ Circuit Breaker의 원리와 ꡬ성 방법을 ν•™μŠ΅ν•œλ‹€ [1, 2, 5]. - **My Project Relevance:** μ™ΈλΆ€ μ„œλΉ„μŠ€(예: 결제 κ²Œμ΄νŠΈμ›¨μ΄, μ†Œμ…œ 둜그인 API λ“±)와 λΉˆλ²ˆν•˜κ²Œ 톡신해야 ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•  λ•Œ, μ™ΈλΆ€ API의 μ§€μ—°μ΄λ‚˜ μž₯μ• κ°€ λ‚΄ ν”„λ‘œμ νŠΈ μ „μ²΄μ˜ λ‹€μš΄νƒ€μž„μœΌλ‘œ 이어지지 μ•Šλ„λ‘ μ‹œμŠ€ν…œμ˜ 견고함을 ν™•λ³΄ν•˜λŠ” 데 μ§μ ‘μ μœΌλ‘œ μ μš©ν•΄μ•Ό ν•œλ‹€ [3]. ### Adjacent Topics - [[Service Mesh]] - ν™•μž₯ λ°©ν–₯: λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ ν™˜κ²½μ—μ„œ 각 μ„œλΉ„μŠ€μ— 직접 차단 λ‘œμ§μ„ κ΅¬ν˜„ν•˜λŠ” λŒ€μ‹ , μ‚¬μ΄λ“œμΉ΄(Sidecar) μ•„ν‚€ν…μ²˜λ₯Ό μ΄μš©ν•΄ 인프라 λ ˆλ²¨μ—μ„œ 톡신 νŠΈλž˜ν”½κ³Ό Circuit Breakerλ₯Ό μ œμ–΄ν•˜λŠ” Service Mesh 기술둜 연ꡬλ₯Ό ν™•μž₯ν•  수 μžˆλ‹€ [8, 9]. --- *Last updated: 2026-05-02*