did_story
[Spring Boot] ์ธ๋ถ ์๋น์ค ์ฅ์ ์ ๋๋นํ๋ ๋๊ธฐ ํธ์ถ์ ์์กด ์ ๋ต - 2 ๋ณธ๋ฌธ
[Spring Boot] ์ธ๋ถ ์๋น์ค ์ฅ์ ์ ๋๋นํ๋ ๋๊ธฐ ํธ์ถ์ ์์กด ์ ๋ต - 2
์ด์ ์์ 2025. 7. 9. 00:06์ด๋ฒ์๋ ์ธ๋ถ ์๋น์ค ์ฅ์ ๋ก ์ธํด ์๊ธฐ๋ ๋ฌธ์ ๋ฅผ ๋ฒํฌํค๋ ํจํด, ๊ทธ๋ฆฌ๊ณ ์ํท ๋ธ๋ ์ด์ปค ํจํด๋ฅผ ํตํด ํด๊ฒฐํ๋ ๋ฒ์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
1. ๋ฒํฌํค๋ ํจํด (Bulkhead Pattern) : ํผํด๋ฅผ ๊ตญ์์ ์ผ๋ก ์ ํ
์ ๋ฐ ๋ด๋ถ์ ์ค์นํ๋ ๊ฒฉ๋ฒฝ(Bulkhead)์์ ์ ๋๋ ์ด๋ฆ์ ๋๋ค. ์ ๋ฐ์ ์ฌ๋ฌ ๊ตฌ์ญ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ตฌ๋ถํด๋๋ฉด ํ ๊ตฌ์ญ์ ๋ฌผ์ด ์นจ์๋๋๋ผ๋ ๋๋จธ์ง ๊ตฌ์ญ๊น์ง ์นจ์๊ฐ ํผ์ง์ง ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ ๋ฐ ์ ์ฒด๊ฐ ๊ฐ๋ผ์๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ , ํผํด๋ฅผ ๊ตญ์์ ์ผ๋ก ์ ํํฉ๋๋ค.
1) ์ํํธ์จ์ด์ ์ ์ฉ
์ํํธ์จ์ด ์์คํ ์์๋ ์ด์ ๋น์ทํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- ํ๋์ ์๋น์ค๋ ๋ชจ๋์ด ๊ณผ๋ถํ๋ ์ค๋ฅ๋ก ์ธํด ์ ์ฒด ์์คํ ์ ๋ง๋น์ํค๋ ๊ฒ์ ๋ฐฉ์งํด์ผ ํฉ๋๋ค.
- ์ฆ ์ฅ์ ๊ฒฉ๋ฆฌ๋ฅผ ํตํด์ ์๋น์ค์ ์์ ์ฑ์ ๋์ด๋ ๋ฐฉ๋ฒ์ด๋ค

2) ํต์ฌ ์์ด๋์ด
์์คํ ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋๋์ด์, ๊ฐ ๊ตฌ์ญ์ด ์๋ก ๋ ๋ฆฝ์ ์ผ๋ก ์คํจํ๊ฑฐ๋ ๊ณผ๋ถํ์ ๋์ํ๋๋ก ํฉ๋๋ค.
์ฃผ์ ๋ฐฉ๋ฒ:
- ์์ฒญ ์ฒ๋ฆฌ ํ(Tread Pool, Connection)์ ๊ธฐ๋ฅ ๋ณ๋ก ๋ถ๋ฆฌ๋ฅผ ํ๊ฑฐ๋.
- ๊ฐ ์๋น์ค / ๋ชจ๋๋ณ๋ก Resource๋ฅผ ๊ฒฉ๋ฆฌํ๋ค. (์: API Gateway์์ ๊ณ ๊ฐ ๊ทธ๋ฃน๋ณ ๋ฆฌ์์ค ๊ฒฉ๋ฆฌ)
- ์ธ๋งํฌ์ด(Semaphore)๋ฅผ ์ด์ฉํ ๋์ ์์ฒญ ์ ์ด๋ก ๋ฌผ๋ฆฌ์ ์ผ๋ก ํ์ ๋ถ๋ฆฌํ์ง ์๊ณ , ํน์ ๊ธฐ๋ฅ์ ๋ํ ๋์ ์คํ ์๋ฅผ ์ธ๋งํฌ์ด๋ฅผ ํตํด ์ ํํ์ฌ ๋ฆฌ์์ค ๊ณ ๊ฐ์ ๋ฐฉ์งํฉ๋๋ค.
- ๋ง์ดํฌ๋ก์๋น์ค ํ๊ฒฝ์์๋ ์๋น์ค ๊ฐ์ ํธ์ถ์ ์ ํ ๋ฐ ํ์์์์ ์ค์ ํ๋ค.
2. ์ํท ๋ธ๋ ์ด์ปค ํจํด (Circuit Breaker Pattern) : ์ฐ์ ์ฅ์ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ ์์ ์ฑ ํจํด
1) ์ํท ๋ธ๋ ์ด์ปค ํจํด์ด๋?
์ฅ์ ๋ฐ์ ์ ์ธ๋ถ ํธ์ถ์ ์ฐจ๋จํ์ฌ, ์ฅ์ ํ์ฐ์ ๋ง๊ณ ์์คํ ์ ๋ณดํธํ๋ ํจํด์ ์๋ฏธํ๋ค.
2) ์ํท ๋ธ๋ ์ด์ปค ๋์ ์ํ
- Closed: ์ ์ ์ํ, ์์ฒญ์ ์ ์์ ์ผ๋ก ์ธ๋ถ ์๋น์ค๋ก ์ ๋ฌ๋๋ค.
- Open: ์ฅ์ ์ํ, ์์ฒญ์ ์ธ๋ถ ์๋น์ค์ ๋ณด๋ด์ง ์๊ณ ์ฆ์ ์คํจ ์ฒ๋ฆฌํ๋ค.
- Half-Open: ์ผ๋ถ ์์ฒญ๋ง ๋ณด๋ด์ ์ธ๋ถ ์๋น์ค๊ฐ ์ ์ฐ์ธ์ง ํ์ธํ๋ค.

3) ์ฅ์ ๋ฐ์ ์ ๋์ ์๋ฆฌ
์ฅ์ ๋ฐ์ ์
- ๋ชจ๋ ์์ฒญ์ด ์ธ๋ถ ์๋น์ค๋ก ์ ์์ ์ผ๋ก ์ ์ก๋๋ค.
์ฅ์ ๋ฐ์
- ์ธ๋ถ ์๋น์ค๊ฐ ์ฅ์ ์ํ๊ฐ ๋๋ฉด ์ผ์ ํ์ ์ด์์ ์คํจ๊ฐ ๋ฐ์ํ๊ณ
- ์ํท ๋ธ๋ ์ด์ปค๊ฐ Open ์ํ๋ก ์ ํ, ์ธ๋ถ ์๋น์ค ํธ์ถ์ ์ฐจ๋จํ๋ค.
- ํด๋ผ์ด์ธํธ๋ ๋ฐ๋ก ์คํจ๋ฅผ ๋ฐํ๋ฐ๊ณ , ๋๊ธฐ ์๊ฐ ์์ด ๋ค๋ฅธ ์์ ์ํ ๊ฐ๋ฅ.
์ฅ์ ๋ณต๊ตฌ ํ
- ์ผ์ ์๊ฐ ์ดํ Half-Open ์ํ๋ก ์ ํํ์ฌ ์ผ๋ถ ์์ฒญ๋ง ์ธ๋ถ ์๋น์ค๋ก ๋ณด๋.
- ์ ์ ์๋ต์ด ํ์ธ๋๋ฉด ๋ค์ Closed ์ํ๋ก ๋ณต๊ทํ์ฌ ์ ์ฒด ์์ฒญ ์ฌ๊ฐ.
→ ๊ฒฐ๊ณผ์ ์ผ๋ก, ์ธ๋ถ ์๋น์ค ์ฅ์ ๊ฐ ๋ด๋ถ ์๋น์ค ์์คํ ์ผ๋ก ํ์ฐ๋๋ ๊ฒ์ ์ฐจ๋จํฉ๋๋ค.
Resilience4j, Hystrix(Netflix, ์ ์ง๋ณด์ ๋ชจ๋), Spring Cloud Circuit Breaker ๋ฑ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ํท ๋ธ๋ ์ด์ปค ํจํด๋ ๊ตฌํํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
์ด๋ ๊ฒ ์ธ๋ถ ์๋น์ค๊ฐ ์ฅ์ ๊ฐ ๋ฐ์ํ ์ ์ฐ๋ฆฌ์ ์๋น์ค๋ ์ปค๋ค๋ ์ํฅ์ ๋ฐ์ ์ ์์ต๋๋ค.
- ํ์์์: ์ธ๋ถ ์๋น์ค ์๋ต ์ง์ฐ์ผ๋ก ์ธํด ์์คํ ๋ฆฌ์์ค๊ฐ ๋ญ๋น๋๋ ๊ฒ์ ๋น ๋ฅด๊ฒ ์ฐจ๋จํฉ๋๋ค.
- ๋ฒํฌํค๋ ํจํด: ํน์ ๊ธฐ๋ฅ์ ์ฅ์ ๊ฐ ์์คํ ์ ์ฒด๋ก ํ์ฐ๋์ง ์๋๋ก ๋ฆฌ์์ค๋ฅผ ๊ฒฉ๋ฆฌํฉ๋๋ค.
- ์ํท ๋ธ๋ ์ด์ปค ํจํด: ๋ฐ๋ณต๋๋ ์คํจ๋ก๋ถํฐ ์์คํ ์ ๋ณดํธํ๊ณ , ์ฅ์ ๊ตฌ๊ฐ์ ์๋์ผ๋ก ์ฐจ๋จํ๊ณ ๋ณต๊ตฌํฉ๋๋ค.
์ด๋ฌํ ์ฅ์ ๋์ ํจํด์ ๋ฐฐ์ฐ๋ฉด์ ๊ฐ์์ ํ๋ก์ ํธ์ ๊ตฌํ์ ํ๋ค๋ฉด, ์ข์ ๋ฐฑ์๋ ๊ฐ๋ฐ์๊ฐ ๋๋ ํ๊ฑธ์์ด ๋์ง ์์๊น ์๊ฐํฉ๋๋ค.
์ด์ ๊ธ์ด ๊ถ๊ธํ๋ค๋ฉด?
[Spring Boot] ์ธ๋ถ ์๋น์ค ์ฅ์ ์ ๋๋นํ๋ ๋๊ธฐ ํธ์ถ์ ์์กด ์ ๋ต - 1
๋ฐฑ์๋ ์์ ์ ํ๋ค๋ณด๋ฉด ์ธ๋ถ API๋ฅผ ๋ถ๋ฌ์ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ๋ค์ด ์ ์ ๋ง์์ง ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐ์๊ธฐ ์ด ์ธ๋ถ ์๋น์ค๋ค์ด ๊ฐ์๊ธฐ ๋๋ ค์ง๋ ์ฅ์ ๊ฐ ๊ฑธ๋ฆฌ๋ฉด ์ฐ๋ฆฌ๋ ์ด๋ป๊ฒ ๋ ๊น?! ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ๋๊ธฐ
didcheck.tistory.com