[MSA] - 4. Circuit Breaker๋ฅผ ์ด์ฉํ ์ฅ์ ์ฒ๋ฆฌ
MSA์ ๋ํด์ ์ฐ๋ฆฌ๋ ๊ฐ API ์๋ฒ๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ฉ๋๋ณ๋ก ์ธ์คํด์ค๋ฅผ ๋๋๊ณ , ์๋จ์์ Gateway๋ฅผ ์ฌ์ฉํด ํด๋ผ์ด์ธํธ๊ฐ ์ํ๋ ์๋น์ค๋ฅผ ์ฃผ๊ณ , ๋ก๋ ๋ฐธ๋ฐ์ฑ ๋ฑ์ ์์ ์ด ๋ค์ด๊ฐ ๊ฒฝ์ฐ, Service Discovery๋ฅผ ํตํ์ฌ ์ํ๋ ์๋น์ค๋ฅผ ๋์ ์ผ๋ก ์ฐพ์์ฃผ๋ ๋ฐฉ๋ฒ๊น์ง ์์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ, ์ด๋ ๊ฒ ์๋น์ค๋ฅผ ๋ถ๋ฆฌํจ์ผ๋ก์จ ํ ์ธ์คํด์ค๊ฐ ๋ชจ๋ ์๋น์ค๋ฅผ ๊ฐ๋นํ๋ ๋ถ๋ถ์ด ์ํ๋๋ ๋ฑ์ ์ฅ์ ์ด ์๊ฒผ์ง๋ง, ๋ง์ฝ ์๋น์ค์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ค๋ฉด ๊ทธ ์ฅ์ ๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ ์์๊น์?
์๋น์ค๊ฐ ๋ถ๋ฆฌ๋์ด ์๋ ์ํ์์ ํด๋ผ์ด์ธํธ์ ์๋ชป๋ ์ ๋ ฅ ๊ฐ ๋ฑ์ผ๋ก ์๊ธฐ๋ ์ค๋ฅ๋ ๋ ผ๋ฆฌ์ ์ธ ์ค๋ฅ์ ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฐ ์ค๋ฅ๋ Exception ๋ฑ์ ์ฒ๋ฆฌ๋ฅผ ํตํด์ ํด๋ผ์ด์ธํธ์๊ฒ ์ค๋ฅ๋ฅผ ์๋ ค์ฃผ๊ณ , ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก ์งํํ ์ ์์ต๋๋ค.
ํ์ง๋ง MSA์์ ์๋น์ค ์ฅ์ ์ฒ๋ฆฌ์ ์ด๋ ค์์ ๋ ผ๋ฆฌ์ ์ธ ์ค๋ฅ๊ฐ ์๋ ๋ฌผ๋ฆฌ์ ์ธ ์ค๋ฅ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด์, MSA๋ ์์คํ ์ ์ฌ๋ฌ ๊ฐ ์๋น์ค ์ปดํฌ๋ํธ๋ก ๋๋์ด์ ์๋น์ค ์ปดํฌ๋ํธ ๊ฐ์ ํธ์ถํ๋ ๊ฐ๋ ์ ๊ฐ์ง๊ณ ์๋๋ฐ, ๊ทธ๋ ๊ฒ ๋๋ฉด ์ปดํฌ๋ํธ๋ผ๋ฆฌ ํต์ ์ ํ๊ฒ ๋ ๊ฒ์ด๊ณ , ํต์ ์ค ํ๋์ ์ปดํฌ๋ํธ์์ ์ธ์คํด์ค๊ฐ ๋๋ ค์ง๊ฑฐ๋, ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ๊ทธ๊ฒ์ด ๋ค๋ฅธ ์ปดํฌ๋ํธ์์๋ ๋๊ฐ์ด ์ ์ฉ๋๋ ์ด๋ฅธ ๋ฐ '์ ํ'๋ผ๋ ํน์ฑ์ด ์๋ ๊ฒ์ด์ฃ .
์ฌ์ด ์ค๋ช ์ ์ํด์ ์ ์ด๋ฏธ์ง๋ฅผ ๋ณด๋ฉด, User API์ ์ ์ฅ๋ ์นดํ ์ฃผ๋ฌธ ๋ฉ๋ด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด Cafe API์์ ์ ๋ณด๋ฅผ ์์ฒญํ์ต๋๋ค. ๊ทธ๋ฌ๋ Cafe Service์์๋ ์๋ต์ด ์๋ ๊ฒฝ์ฐ, ์ด๋ฌํ ํ์์ด User Service์๋ ๋์ผํ๊ฒ ๋ํ๋๋ฉฐ ์ค๋ฅ๋ฅผ ์ ํ์ํค๋ ํ์์ ๋ฐ์ํฉ๋๋ค.
Circuit Breaker
์์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ Circuit Breaker๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. Circuit Breaker๋ฅผ ๊ฐ๋จํ ์ค๋ช ๋๋ฆฌ์๋ฉด, ๊ฐ ์ปดํฌ๋ํธ ๊ตฌ๊ฐ ์ค๊ฐ์ ์ถ๊ฐ์ ์ผ๋ก ์ปดํฌ๋ํธ๋ฅผ ํ๋ ๋๊ณ , ์ด ์ปดํฌ๋ํธ์์ ๋ณด๋ด๊ณ ์ ํ๋ ์๋น์ค์ ์ํ๋ฅผ ๋ฏธ๋ฆฌ ํ์ธํ ๋ค์, ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋๋ก ํด์ฃผ๋ Observer ์ญํ ์ ํ๊ฒ ๋ฉ๋๋ค.
์๋น์ค๊ฐ ์ ์์ ์ธ ์ํ๋ก ์ด์ ์ค์ด๋ผ๋ฉด, Circuit Breaker๋ ๋์ ์๋น์ค๋ก ํต์ ์ ์ํค๊ฒ ๋๊ณ , ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ ์ค๋ฅ๋ฅผ ๋ฐํ์ํต๋๋ค. ์ด๋ ๊ฒ ์ค๊ฐ ์ญํ ์ ํ์ฌ, ์๋ฒ์ ์ํ๋ฅผ ์ ๊ฒํด์ค์ผ๋ก์จ ์ค๋ฅ์ ์ ํ๋ฅผ ๋ง์ ์ ์์ต๋๋ค.
๋ง์น๋ฉฐ...
์ด๋ฒ ํํธ์์๋ ๊ฐ๋จํ๊ฒ Circuit Breaker๊ฐ ์ ํ์ํ์ง, ์ด๋ป๊ฒ ๋์ํ๋์ง์ ๋ํด์ ๋ค๋ค๋ดค์ต๋๋ค. ์ด๋ฌํ ์๋น์ค์ ๋ํ์ ์ธ ๊ฒ์๋ Netflix์์ ๊ฐ๋ฐํ Hystrix๊ฐ ์๊ณ , Spring Cloud์ Spring Circuit Breaker๋ ์กด์ฌํฉ๋๋ค.
๋ค์ ํฌ์คํธ์์๋ Spring Stack์ Circuit Breaker๋ฅผ ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.