ν˜•κΈ°μΏ  μž¬ν…Œν¬

μž¬ν…Œν¬μ˜ λͺ¨λ“ κ²ƒ

경제

μ‚¬μ΄λ“œμΉ΄&μ„œν‚·λΈŒλ ˆμ΄μ»€ (Sidecar &Circuit Breaker)λž€?

ν˜•κΈ°μΏ  2024. 9. 16. 08:07
728x90

μ‚¬μ΄λ“œμΉ΄&μ„œν‚·λΈŒλ ˆμ΄μ»€ (Sidecar &Circuit Breaker)λž€?

μ‚¬μ΄λ“œμΉ΄(Sidecar)와 μ„œν‚·λΈŒλ ˆμ΄μ»€(Circuit Breaker)λŠ” μ‹œμŠ€ν…œ μ•ˆμ •μ„±κ³Ό μž₯μ•  λŒ€μ‘μ„ μœ„ν•œ μ€‘μš”ν•œ λ©”μ»€λ‹ˆμ¦˜μ΄μ—μš”. 이 λ‘˜μ€ 각기 λ‹€λ₯Έ μ˜μ—­μ—μ„œ ν™œμš©λ˜λ©°, λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜μ™€ λΆ„μ‚° μ‹œμŠ€ν…œμ—μ„œ 특히 μœ μš©ν•˜κ²Œ μ‚¬μš©λΌμš”. 이 κΈ€μ—μ„œλŠ” μ‚¬μ΄λ“œμΉ΄μ™€ μ„œν‚·λΈŒλ ˆμ΄μ»€μ˜ κ°œλ…, νŠΉμ§•, 차이점, 그리고 각각이 μ‹œμŠ€ν…œ μ•ˆμ •μ„±μ— μ–΄λ–»κ²Œ κΈ°μ—¬ν•˜λŠ”μ§€ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

[λͺ©μ°¨]

1. μ‚¬μ΄λ“œμΉ΄ νŒ¨ν„΄(Sidecar Pattern)

μ‚¬μ΄λ“œμΉ΄λŠ” λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜μ—μ„œ 각 μ„œλΉ„μŠ€μ— λΆ€μ†λ˜μ–΄ λ™μž‘ν•˜λŠ” 독립적인 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ˜λ―Έν•΄μš”. μ‚¬μ΄λ“œμΉ΄ νŒ¨ν„΄μ€ 보쑰적인 κΈ°λŠ₯을 μ„œλΉ„μŠ€μ— λ§λΆ™μ—¬μ£ΌλŠ” λ°©μ‹μœΌλ‘œ, 주둜 λ„€νŠΈμ›Œν¬, λ³΄μ•ˆ, λ‘œκΉ…, λͺ¨λ‹ˆν„°λ§ λ“±μ˜ 곡톡 κΈ°λŠ₯을 μ²˜λ¦¬ν•΄μš”. μ‚¬μ΄λ“œμΉ΄λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό λ³„λ„λ‘œ λ™μž‘ν•˜μ§€λ§Œ, λ™μΌν•œ 배포 λ‹¨μœ„μ— 속해 μžˆμ–΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό κΈ΄λ°€ν•˜κ²Œ ν˜‘λ ₯ν•΄μš”.

μ‚¬μ΄λ“œμΉ΄μ˜ μ£Όμš” κΈ°λŠ₯:

λ„€νŠΈμ›Œν‚Ή: μ„œλΉ„μŠ€ 메쉬(Service Mesh)μ—μ„œ νŠΈλž˜ν”½μ„ κ΄€λ¦¬ν•˜κ³ , μ„œλΉ„μŠ€ κ°„ 톡신을 μ΅œμ ν™”ν•΄μš”. 예λ₯Ό λ“€μ–΄, Istio와 같은 μ„œλΉ„μŠ€ λ©”μ‰¬μ—μ„œ μ‚¬μ΄λ“œμΉ΄ ν”„λ‘μ‹œλŠ” μ„œλΉ„μŠ€ κ°„ μš”μ²­μ„ μ œμ–΄ν•΄μš”.
λ‘œκΉ… 및 λͺ¨λ‹ˆν„°λ§: 각 λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€μ˜ λ‘œκ·Έμ™€ μ„±λŠ₯ 데이터λ₯Ό μˆ˜μ§‘ν•˜κ³  μ€‘μ•™ν™”λœ μ‹œμŠ€ν…œμœΌλ‘œ μ „μ†‘ν•΄μš”.
λ³΄μ•ˆ: TLS μ•”ν˜Έν™”μ™€ 같은 λ³΄μ•ˆ κΈ°λŠ₯을 μ μš©ν•˜μ—¬ μ„œλΉ„μŠ€ κ°„ 톡신을 λ³΄ν˜Έν•΄μš”.

μ‚¬μ΄λ“œμΉ΄μ˜ μž₯점:

μœ μ—°μ„±: μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œ λ³€κ²½ 없이 λ‹€μ–‘ν•œ κΈ°λŠ₯을 μΆ”κ°€ν•  수 μžˆμ–΄μš”.
독립성: μ‚¬μ΄λ“œμΉ΄λŠ” 각 μ„œλΉ„μŠ€μ— λ…λ¦½μ μœΌλ‘œ λ°°μΉ˜λ˜μ–΄ μžˆμœΌλ―€λ‘œ, ν•˜λ‚˜μ˜ μ‚¬μ΄λ“œμΉ΄μ— λ¬Έμ œκ°€ λ°œμƒν•΄λ„ λ‹€λ₯Έ μ„œλΉ„μŠ€μ— 영ν–₯을 μ΅œμ†Œν™”ν•  수 μžˆμ–΄μš”.
ν™•μž₯μ„±: 좔가적인 κΈ°λŠ₯을 μ„œλΉ„μŠ€μ— μ‰½κ²Œ λΆ€μ°©ν•  수 μžˆμ–΄, λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€μ˜ μœ μ§€λ³΄μˆ˜μ„±κ³Ό 관리가 μš©μ΄ν•΄μš”.
μ‚¬μ΄λ“œμΉ΄ νŒ¨ν„΄μ€ 특히 μ„œλΉ„μŠ€ λ©”μ‰¬μ—μ„œ μ€‘μš”ν•œ 역할을 ν•΄μš”. 각 μ„œλΉ„μŠ€μ— μ‚¬μ΄λ“œμΉ΄ ν”„λ‘μ‹œκ°€ λ°°ν¬λ˜μ–΄, μ„œλΉ„μŠ€ κ°„ 톡신을 효율적으둜 κ΄€λ¦¬ν•˜κ³  λ³΄μ•ˆμ„ κ°•ν™”ν•΄μš”. 예λ₯Ό λ“€μ–΄, μ„œλΉ„μŠ€ κ°„ ν˜ΈμΆœμ„ μ•”ν˜Έν™”ν•˜κ³ , νŠΈλž˜ν”½μ„ λͺ¨λ‹ˆν„°λ§ν•˜λ©°, ν•„μš”μ‹œμ— νŠΈλž˜ν”½μ„ μž¬μ‘°μ •ν•˜λŠ” μž‘μ—…μ΄ κ°€λŠ₯ν•΄μ Έμš”.

2. μ„œν‚·λΈŒλ ˆμ΄μ»€(Circuit Breaker)

μ„œν‚·λΈŒλ ˆμ΄μ»€λŠ” μ‹œμŠ€ν…œ μž₯애에 λŒ€ν•œ 볡원λ ₯을 높이기 μœ„ν•œ νŒ¨ν„΄μ΄μ—μš”. 주둜 λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ κ°„ ν˜ΈμΆœμ—μ„œ μž₯μ• κ°€ λ°œμƒν•  경우 전체 μ‹œμŠ€ν…œμ΄ λ¬΄λ„ˆμ§€μ§€ μ•Šλ„λ‘ λ°©μ§€ν•˜λŠ” 역할을 ν•΄μš”. μ „κΈ°νšŒλ‘œμ˜ μ„œν‚·λΈŒλ ˆμ΄μ»€μ™€ μœ μ‚¬ν•˜κ²Œ, μž₯μ• κ°€ λ°œμƒν•œ μ„œλΉ„μŠ€μ— λŒ€ν•œ μš”μ²­μ„ μ°¨λ‹¨ν•˜κ³ , 문제 ν•΄κ²° ν›„ λ‹€μ‹œ μž¬μ‹œλ„ν•  수 있게 ν•΄ μ€˜μš”.

μ„œν‚·λΈŒλ ˆμ΄μ»€μ˜ μ£Όμš” λ™μž‘ 원리:

1. 정상 μƒνƒœ (Closed): μ„œλΉ„μŠ€ κ°„ 호좜이 μ •μƒμ μœΌλ‘œ μ΄λ£¨μ–΄μ§ˆ λ•Œ, μ„œν‚·λΈŒλ ˆμ΄μ»€λŠ” λ‹«νžŒ μƒνƒœμ—μ„œ λͺ¨λ“  μš”μ²­μ„ ν—ˆμš©ν•΄μš”.
2. μž₯μ•  감지 (Open): νŠΉμ • 횟수 μ΄μƒμ˜ μš”μ²­μ΄ μ‹€νŒ¨ν•˜λ©΄, μ„œν‚·λΈŒλ ˆμ΄μ»€λŠ” 열리며 ν•΄λ‹Ή μ„œλΉ„μŠ€λ‘œμ˜ μš”μ²­μ„ μ°¨λ‹¨ν•΄μš”. 이둜 인해 μž₯μ• κ°€ ν™•μ‚°λ˜λŠ” 것을 방지할 수 μžˆμ–΄μš”.
3. λΆ€λΆ„ ν—ˆμš© (Half-Open): 일정 μ‹œκ°„μ΄ μ§€λ‚œ ν›„ μ„œν‚·λΈŒλ ˆμ΄μ»€λŠ” λΆ€λΆ„μ μœΌλ‘œ μ—΄λ € 일뢀 μš”μ²­μ„ ν—ˆμš©ν•΄μš”. 이 κ³Όμ •μ—μ„œ μ„œλΉ„μŠ€κ°€ μ •μƒμ μœΌλ‘œ λ³΅κ΅¬λ˜μ—ˆλŠ”μ§€ ν™•μΈν•΄μš”. μ„œλΉ„μŠ€κ°€ λ³΅κ΅¬λ˜μ—ˆλ‹€λ©΄ μ„œν‚·λΈŒλ ˆμ΄μ»€λŠ” λ‹€μ‹œ λ‹«νžŒ μƒνƒœλ‘œ λŒμ•„κ°€κ³ , μ‹€νŒ¨ν•˜λ©΄ λ‹€μ‹œ μ—΄λ €μš”.

μ„œν‚·λΈŒλ ˆμ΄μ»€μ˜ μž₯점:

μ‹œμŠ€ν…œ 보호: μž₯μ• κ°€ λ°œμƒν•œ μ„œλΉ„μŠ€λ‘œμ˜ λΆˆν•„μš”ν•œ μš”μ²­μ„ 차단해 μ‹œμŠ€ν…œμ˜ λ‚˜λ¨Έμ§€ 뢀뢄이 μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜λ„λ‘ λ³΄ν˜Έν•΄μš”.
μžλ™ 볡ꡬ: λ¬Έμ œκ°€ ν•΄κ²°λœ ν›„ μžλ™μœΌλ‘œ λ‹€μ‹œ μš”μ²­μ„ ν—ˆμš©ν•˜λ―€λ‘œ, μž₯μ•  λŒ€μ‘μ— μžˆμ–΄ λ³΅μž‘ν•œ μ‘°μΉ˜κ°€ ν•„μš”ν•˜μ§€ μ•Šμ•„μš”.
μžμ› μ ˆμ•½: μž₯μ•  μƒνƒœμ—μ„œ λΆˆν•„μš”ν•œ μš”μ²­μ„ μ°¨λ‹¨ν•˜μ—¬ μ‹œμŠ€ν…œ λ¦¬μ†ŒμŠ€λ₯Ό μ ˆμ•½ν•˜κ³ , 전체 μ„±λŠ₯을 μœ μ§€ν•΄μš”.
μ„œν‚·λΈŒλ ˆμ΄μ»€λŠ” λ„€νŠΈμ›Œν¬ 지연, μ„œλΉ„μŠ€ μž₯μ• , ν˜Ήμ€ μ™ΈλΆ€ API λ¬Έμ œμ™€ 같은 λ‹€μ–‘ν•œ μž₯μ•  μƒν™©μ—μ„œ μ‹œμŠ€ν…œμ„ λ³΄ν˜Έν•˜λŠ” 데 νš¨κ³Όμ μ΄μ—μš”. 예λ₯Ό λ“€μ–΄, μ™ΈλΆ€ APIκ°€ 느리게 μ‘λ‹΅ν•˜κ±°λ‚˜ λ‹€μš΄λ˜μ—ˆμ„ λ•Œ μ„œν‚·λΈŒλ ˆμ΄μ»€κ°€ μž‘λ™ν•˜μ—¬ ν•΄λ‹Ή API둜의 ν˜ΈμΆœμ„ μ°¨λ‹¨ν•˜κ³ , 전체 μ‹œμŠ€ν…œμ˜ μ„±λŠ₯ μ €ν•˜λ₯Ό λ§‰μ•„μ€˜μš”.

3. μ‚¬μ΄λ“œμΉ΄μ™€ μ„œν‚·λΈŒλ ˆμ΄μ»€μ˜ 차이점

μ‚¬μ΄λ“œμΉ΄μ™€ μ„œν‚·λΈŒλ ˆμ΄μ»€λŠ” λͺ¨λ‘ μ‹œμŠ€ν…œ μ•ˆμ •μ„±μ„ 높이기 μœ„ν•œ λ„κ΅¬μ΄μ§€λ§Œ, κ·Έ λͺ©μ κ³Ό 적용 방식은 λ‹¬λΌμš”.
μ‚¬μ΄λ“œμΉ΄: 주둜 μ„œλΉ„μŠ€ κ°„ λ„€νŠΈμ›Œν‚Ή, λ‘œκΉ…, λ³΄μ•ˆ λ“±μ˜ λΆ€κ°€ κΈ°λŠ₯을 μ²˜λ¦¬ν•˜λ©°, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ κΈ°λŠ₯을 ν™•μž₯ν•˜λŠ” 역할을 ν•΄μš”. μ„œλΉ„μŠ€ 메쉬와 같은 κ΅¬μ‘°μ—μ„œ νŠΈλž˜ν”½ 관리와 λͺ¨λ‹ˆν„°λ§μ— 쀑점을 λ‘¬μš”.
μ„œν‚·λΈŒλ ˆμ΄μ»€: μž₯μ•  μƒν™©μ—μ„œ μ„œλΉ„μŠ€ κ°„ ν˜ΈμΆœμ„ μ°¨λ‹¨ν•˜κ³ , μž₯μ•  확산을 λ°©μ§€ν•˜λŠ” 데 쀑점을 λ‘¬μš”. μ‹œμŠ€ν…œμ΄ μ•ˆμ •μ μΈ μƒνƒœλ₯Ό μœ μ§€ν•˜λ©΄μ„œ λ¬Έμ œκ°€ 해결될 λ•ŒκΉŒμ§€ μ„œλΉ„μŠ€λ₯Ό λ³΄ν˜Έν•΄μš”.

4. 마무리

μ‚¬μ΄λ“œμΉ΄μ™€ μ„œν‚·λΈŒλ ˆμ΄μ»€λŠ” λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜μ—μ„œ μ€‘μš”ν•œ μ•ˆμ •μ„± 보μž₯ μž₯치둜, 각각 λ„€νŠΈμ›Œν‚Ή 및 μž₯μ•  λŒ€μ‘μ˜ μΈ‘λ©΄μ—μ„œ 큰 역할을 ν•΄μš”. μ‚¬μ΄λ“œμΉ΄ νŒ¨ν„΄μ„ 톡해 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μœ μ§€λ³΄μˆ˜μ„±κ³Ό ν™•μž₯성을 높이고, μ„œν‚·λΈŒλ ˆμ΄μ»€λ₯Ό 톡해 μž₯μ•  μƒν™©μ—μ„œ μ‹œμŠ€ν…œμ˜ 볡원λ ₯을 κ°•ν™”ν•  수 μžˆμ–΄μš”. μ΄λŸ¬ν•œ νŒ¨ν„΄λ“€μ€ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€κ°€ 가진 λ³΅μž‘μ„±μ„ 효과적으둜 κ΄€λ¦¬ν•˜κ³ , μ‹œμŠ€ν…œμ˜ 신뒰성을 μœ μ§€ν•˜λŠ” 데 ν•„μˆ˜μ μΈ λ„κ΅¬λ“€μ΄μ—μš”.

728x90