[MSA] - 3. ํ์ํ ์๋น์ค๋ฅผ ์ฐพ์์ฃผ๋ Service Discovery
์๋ ํ์ธ์. ๋ค๋ค ๊ตฌ์ ์ฐํด ์ ๋ณด๋ด๊ณ ๊ณ์ ๊ฐ์? ๊ตฌ์ ์ธํด๊ธด ํ์ง๋ง, ์ ์๊ฒ๋ ๊ธธ๊ฒ ๋๊ปด์ง๋ ์ฐํด์ธ์ง๋ผ, ์ค๋๋ ์ด๋ ๊ฒ ๋์ ์ฌ ๋ด ๋๋ค.
์ค๋์ Service Discovery์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ๋ค๋ค๋ณด๋๋ก ํ ๊ฒ์. ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ๋ ์ง๋ API Gateway์์๋ ์ ์ ๋ค๋ค๋ ๋ด์ฉ์ด์ง๋ง ์๋น์ค๊ฐ ๋ถ๋ฆฌ๋์ด ์๋ MSA์์ ๊ฐ ์๋น์ค๊ฐ ๋ค์์ ๋ถ๋ฌ์ผํ ์๋น์ค๊ฐ ์ด๋์ ์๋์ง๋ฅผ ์ฐพ์์ฃผ๋ ๊ฒ์ ๊ธฐ๋ฅ์ ๋๋ค.
What is Service Discovery ?
์ฌ์ด ์ค๋ช ์ ์ํด Wi-Fi๋ฅผ ์๋ก ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ค๋งํธํฐ์ด๋ ํ๋ธ๋ฆฟ PC, ๋ ธํธ๋ถ์์ ์ธํฐ๋ท์ ์ฌ์ฉํ๊ธฐ ์ํด Wi-Fi์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค. ์๋๋ผ๋ฉด, ์ง์ SSID๋ฅผ ์ ๋ ฅํด์ผ๋ง ํ์ฃ .
ํ์ง๋ง AP ๊ฒ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์ด๋ ๊ฒ ๋๋ฐ์ด์ค์์ ๋ณด์ฌ์ฃผ๋ AP์ ์ ์ํ์ฌ ๋ด๊ฐ ๊ตฌ์ถํ AP ํน์ ๋ค๋ฅธ ์นดํ๋ ํธ์์ ๋ฑ์ ์๋ AP๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ, MSA๋ฅผ ๊ตฌ์ฑํ๋ค๋ณด๋ฉด ์์ ๊ฐ์ ์ํฉ์ด ๋ฐ์ํฉ๋๋ค. ๊ฐ ์๋น์ค๋ณ๋ก ์๋ฒ๋ฅผ ๋ณ๋๋ก ๊ตฌ์ฑํ์ง๋ง ๋์ฉ๋ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๊ฒ ๋๋ฉด ์์ ๊ฐ์ด ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ํ๊ฒ ๋ ๊ฒ์ ๋๋ค.
๋ก๋ ๋ฐธ๋ฐ์ฑ์ ํ๊ฒ ๋๋ฉด, ์๋ฒ๊ฐ ๋์ด๋๋ ๊ฒ์ด ๋ฌธ์ ๊ฐ ์๋ ํด๋น ์ฃผ์๊ฐ ๋ฌด์์๋ก ์์ฑ๋๋ค๋ ๊ฒ์ ์์ต๋๋ค. ๋ฌผ๋ก ๊ทธ๋ฃน์ ๋ฌถ์ด์ ๋ฒ์๋ฅผ ์ ํ ์๋ ์๊ฒ ์ง๋ง, ์ด๋ฅผ ๋์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด ๊ณผ์ ์ผ ๊ฒ์ ๋๋ค.
์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด, ๊ฒ์ดํธ์จ์ด์์ ์ํ๋ ์๋น์ค๋ฅผ ์ฐพ์ ์ ์๊ณ , ํด๋น ์๋น์ค์ ๋ง์ถฐ ๋ณด๋ด์ฃผ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋ฌธ์ ์ ์ ๋ ์ ์์ต๋๋ค.
Service Discovery ๊ตฌ์ฑ
์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ๋ ๊ฐ ์๋น์ค ์ธ์คํด์ค์ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์๋ ์๋ฒ์ ๊ทธ๋ฅผ ๋ฐ๋ ํด๋ผ์ด์ธํธ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง Client-Server ์ํคํ ์ฒ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๊ทธ ์๋ฒ๋ฅผ Service Registry๋ผ๊ณ ํ๊ณ , ๊ทธ ํด๋ผ์ด์ธํธ๋ฅผ Registry Client๋ผ๊ณ ์ด์ผ๊ธฐ ํด๋ด ์๋ค.
๊ฐ ์๋น์ค ์ธ์คํด์ค์ Registry Client๋ฅผ ๋ถ์ฌ์ฃผ๊ณ , ํด๋น ํด๋ผ์ด์ธํธ๋ค์ด ์์ ๋ค์ ์ฃผ์๋ฅผ ์๋ฒ์ ์ ์ํ์ฌ ๊ณต์ ํ ์ ์๋๋ก ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ๋ ์ด๋ค ์๋น์ค๋ฅผ ์ฐพ์์ฃผ๋ ์ญํ ์ ํ๊ฒ ๋๋ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๋ํ์ ์ธ ์๋น์ค ๋ ์ง์คํธ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Netflix Eureka
- Apache ZooKeeper
- etcd
- consul
Register Pattern
Service Registry๋ ์ ๊ตฌ์กฐ์ ๊ฐ์ด Registry Client๊ฐ ์ง์ Service Registry์ ๋ฑ๋กํ์ฌ ์ฐจํ์ ๊ฒ์ดํธ์จ์ด๋ ๋ค๋ฅธ ์ธ์คํด์ค๊ฐ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์๋๋ก ํด์ฃผ๋ ๋ฑ๋ก ํด์ฃผ๋ ํจํด์ด ์๋๋ฐ, ์ด๋ฅผ ์ฐ๋ฆฌ๋ Self-Registration Pattern์ด๋ผ ํฉ๋๋ค.
- ์ ํ ๋ฑ๋ก ํจํด (Self-Registration Pattern)
- ์จ๋ ํํฐ ๋ฑ๋ก ํจํด (3rd-Party Registration Pattern)
Service Discovery์ ์ฌ์ฉ๋๋ ์๋น์ค ๋ฑ๋ก ํจํด์ ์ 2๊ฐ์ง๊ฐ ์ ๊ณต๋๋ฉฐ ์ ํ ๋ฑ๋ก ํจํด์ ๋ฑ๋ก๊ณผ ๊ด๋ฆฌ๋ฅผ ํ๋ ์ฃผ์ฒด๊ฐ ์๋น์ค ์ธ์คํด์ค ์์ ์ ๋๋ค. ๋ฐ๋ผ์ Service Registry์ ์์ ์ ์ ๋ณด๋ฅผ ๋ฑ๋กํ๊ณ , ์ฃผ๊ธฐ์ ์ผ๋ก ์์ ์ด ์ด์ ์๋ค๋ ์ ํธ๋ฅผ ๊ณ์ ์ ์กํ๊ฒ ๋๋๋ฐ, ๋ง์ฝ ์ด ์ ํธ๊ฐ ๋๊ธธ ๊ฒฝ์ฐ, Registry์์ ์ด ์ ๋ณด๋ ์ฌ๋ผ์ง๊ฒ ๋ฉ๋๋ค. ์ฃผ๋ก Eureka์์ ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋๋ค.
๋ฐ๋๋ก 3rd ํํฐ ๋ฑ๋ก ํจํด์ ์ธ๋ถ์์ ์๋น์ค๋ฅผ ๋ฑ๋กํ์ฌ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ผ๋ก Service Registry๊ฐ ๊ฐ ์๋น์ค ์ธ์คํด์ค์ ๋ณํ๋ฅผ Polling ํ๊ฑฐ๋, Pub/Sub๋ฅผ ์ํํจ์ผ๋ก์จ ๊ณ์ ์ ๋ฐ์ดํธ๋ฅผ ํ๊ฒ ๋ฉ๋๋ค.
ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ๋จ์ ์ Service Registry๊ฐ ์ฃฝ์ด๋ฒ๋ฆฌ๋ฉด, ๊ทธ ๊ธฐ๋ฅ ์์ฒด๋ฅผ ์์คํด๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ Risk๊ฐ ๊ต์ฅํ ํฌ๋ค๋ ๊ฒ์ ๋๋ค. Broker ํจํด์ ๋จ์ ์ ๊ทธ๋๋ก ๋นผ๋ฎ์ ๊ฒ์ด์ฃ . ์ด๋ฌํ ๋ฐฉ์์ NetflixOSS Prana์์ ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋๋ค. ํนํ Prana๋ non-JVM ์ธ์ด๋ก ์์ฑ๋ ์๋น์ค ์ธ์คํด์ค๋ค์ ์ํด ๋ง๋ค์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ฐ์ด ์คํ๋์ฃ .
๋ง์น๋ฉฐ...
์ฐํด์ด๊ธฐ ๋๋ฌธ์ ์ค๋์ ๊ท๊ฒฝ๊ธธ์ ์ ์ ์ฌ์ด๊ฐ๋ ์๊ฐ ๋์ ๋ณด์ค ์ ์๋๋ก ์งง๊ฒ ์์ฑํด๋ดค์ต๋๋ค. ๋ฌผ๋ก ์ฃผ์ ์์ฒด๋ ๊ทธ๋ ๊ฒ ์ด๋ ค์ด ์ฃผ์ ๋ ์๋๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฒผ์ด ๋ง์์ผ๋ก ๋ณด์ค ์ ์์ ๊ฒ์ด๋ผ ์๊ฐํฉ๋๋ค.
ํ์ง๋ง ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ๋ MSA์ ์์ด, ์์ด์๋ ์๋ ์กด์ฌ์ ๋๋ค. ์๋น์ค ์ธ์คํด์ค๊ฐ ๋ฌด์ํ ๋ง์์ง๊ณ , ์ด๋ค์ด ํฉ์ด์ง๋ ํํ์ด๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์๋น์ค๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ๋น ๋ฅด๊ฒ ์ ๊ณตํ๊ธฐ ์ํด์๋ ์ด๋ ๋ฐ๋์ ๋์ ํด์ผ ํ ๊ฒ์ ๋๋ค.
๋ค์ ํฌ์คํธ์์๋ Spring Cloud๋ฅผ ์ด์ฉํด ์ด๋ฅผ ์ง์ ๊ตฌํํด๋ณด๋ ์๊ฐ์ ๊ฐ์ ธ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
Ref: ๋ง์ดํฌ๋ก์๋น์ค(4) ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ - (https://futurecreator.github.io/2018/10/18/service-discovery-in-microservices/)
'Architecture > MSA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MSA] 6. MSA์ ํธ๋์ญ์ ์ด์ผ๊ธฐ 2 - Two-Phase commit๊ณผ Saga (0) | 2020.11.02 |
---|---|
[MSA] 5. MSA์ ํธ๋์ญ์ ์ด์ผ๊ธฐ 1 - ํธ๋์ญ์ ์ ์ดํด์ MSA์์ ๋ฐ๋ผ๋ณด๋ ํธ๋์ญ์ (2) | 2020.09.27 |
[MSA] - 4. Circuit Breaker๋ฅผ ์ด์ฉํ ์ฅ์ ์ฒ๋ฆฌ (0) | 2020.03.11 |
[MSA] - 2. API Gateway๊ฐ ํ์ํ ์ด์ (0) | 2020.01.08 |
MSA (Micro Service Architecture) ๋ ๋ฌด์์ผ๊น? (0) | 2019.12.05 |