Circuit Breaker Pattern - low-hill/Knowledge GitHub Wiki

λΆ„μ‚° ν™˜κ²½μ—μ„œλŠ” μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 원격 λ¦¬μ†ŒμŠ€λ‚˜ μ„œλΉ„μŠ€λ₯Ό ν˜ΈμΆœν•˜λŠ” κ²½μš°κ°€ 많고 μ΄λŸ¬ν•œ ν˜ΈμΆœμ—μ„œ 였λ₯˜κ°€ μΌμ‹œμ μ΄κ±°λ‚˜ μž₯μ‹œκ°„ λ°œμƒν•  수 μžˆλ‹€. μž¬μ‹œλ„ νŒ¨ν„΄μ€ 일반적으둜 μΌμ‹œμ μΈ 였λ₯˜μ— μ‚¬μš©λ˜λ©°, μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μž‘μ—…μ΄ 성곡할 λ•ŒκΉŒμ§€ μž¬μ‹œλ„ν•  수 μžˆλ„λ‘ ν•œλ‹€. κ·ΈλŸ¬λ‚˜ 지속적인 μž¬μ‹œλ„λ‘œ 문제 해결이 λ˜μ§€ μ•Šμ€ 상황도 μžˆμœΌλ―€λ‘œ 보닀 μ „λž΅μ μΈ 접근이 ν•„μš”ν•˜λ‹€. 예λ₯Ό λ“€μ–΄ μ „μžμƒκ±°λž˜μ˜ 결제 μ„œλΉ„μŠ€κ°€ μ™„μ „νžˆ μ€‘λ‹¨λœ 경우 결제 처리λ₯Ό 계속 μž¬μ‹œλ„ ν•˜λŠ” 것보닀 μž₯μ• λ₯Ό μ‹ μ†ν•˜κ²Œ μΈμ§€ν•˜κ³  μ μ ˆν•œ 쑰치λ₯Ό μ·¨ν•˜λŠ”κ²ƒμ΄ λ°”λžŒμ§ν•˜κ³  이런 문제λ₯Ό Circuit Breaker둜 ν•΄κ²° ν•  수 μžˆλ‹€. 이 νŒ¨ν„΄μ€ 였λ₯˜λ₯Ό ν•΄κ²°ν•˜λŠ” 데 μ‹œκ°„μ΄ 였래 걸릴 수 μžˆλŠ” μ‹œλ‚˜λ¦¬μ˜€μ—μ„œ μœ μš©ν•˜λ©°, 자주 였λ₯˜κ°€ λ°œμƒν•˜λŠ” μž‘μ—…μ˜ λ¦¬μ†ŒμŠ€ λ‚­λΉ„λ₯Ό λ°©μ§€ν•œλ‹€.

Circuit Breaker Pattern

Circuit BreakerλŠ” 원격 접속 μ‹€νŒ¨ νšŸμˆ˜κ°€ νŠΉμ • μž„κ³„κ°’μ— λ„λ‹¬ν•˜λ©΄ μ •μ˜λœ μ‹œκ°„ λ™μ•ˆ 더이상 λ™μž‘ν•˜μ§€ μ•Šλ„λ‘ ν•œλ‹€. ν•΄λ‹Ή μ‹œκ°„ λ™μ•ˆ μ˜€ν”„λΌμΈ μ„œλ²„μ— λŒ€ν•œ λͺ¨λ“  μš”μ²­μ€ μ‹€νŒ¨ν•˜κ³ , ν•΄λ‹Ή μ‹œκ°„μ΄ μ§€λ‚˜λ©΄ μ œν•œλœ 수의 μš”μ²­μ΄ ν†΅κ³Όν•˜λ„λ‘ ν—ˆμš©ν•˜κ³ , ν•΄λ‹Ή μš”μ²­μ΄ μ„±κ³΅ν•˜λ©΄ μ›λž˜ μƒνƒœλ‘œ λ³΅κ΅¬ν•œλ‹€.
Circuit Breaker에 3κ°€μ§€ μƒνƒœκ°€ μ‘΄μž¬ν•œλ‹€.

정상 μƒνƒœ : Close       
였λ₯˜ μƒνƒœ : Open           
λ°˜μ—΄λ¦Ό μƒνƒœ : Half Open

image

  • μ‹€νŒ¨ 횟수 카운트(Close μƒνƒœ): CloseμƒνƒœμΌ λ•ŒλŠ” 정상 μž‘λ™μœΌλ‘œ μš”μ²­μ„ 톡과 μ‹œν‚¨λ‹€. μ΄λ•Œ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μš”μ²­μ— λŒ€ν•œ μ‹€νŒ¨κ°€ 카운트 λœλ‹€.
  • μ‹€νŒ¨ 횟수 > μž„κ³„κ°’(Open μƒνƒœ): μ‹€νŒ¨ νšŸμˆ˜κ°€ μž„κ³„κ°’μ„ μ΄ˆκ³Όν•˜λ©΄ νšŒλ‘œκ°€ Open μƒνƒœκ°€ λ˜μ–΄ μš”μ²­μ΄ μ„œλΉ„μŠ€μ— λ„λ‹¬ν•˜μ§€ λͺ»ν•˜λ„둝 μ°¨λ‹¨λ˜λ©°, μ‹€νŒ¨ 응닡을 λ°˜ν™˜ν•œλ‹€. 이후 μ„œλ²„κ°€ μ •μƒμ μœΌλ‘œ 볡ꡬ되면 Half open μƒνƒœλ‘œ λ³€κ²½λœλ‹€.
  • μ œν•œλœ μš”μ²­ ν…ŒμŠ€νŠΈ 및 성곡 확인 (Half open μƒνƒœ): 이 μƒνƒœμ—μ„œλŠ” μ œν•œλœ 수의 μš”μ²­μ„ ν†΅κ³Όμ‹œν‚€κ³  응닡에 μ„±κ³΅ν•˜λ©΄ Close μƒνƒœλ‘œ λŒμ•„κ°„λ‹€. μ΄λ•Œ μš”μ²­μ΄ μ‹€νŒ¨ν•˜λ©΄ λ‹€μ‹œ Open μƒνƒœλ‘œ λŒμ•„κ°„λ‹€.

Reference