Service discovery
Last updated
Last updated
on-premise ์๋ฒ ๊ธฐ๋ฐ์ Monolithic Architecture์ ๋ฌธ์ ์ ์ ๋ณด์ํ๊ธฐ ์ํด ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ์ด์ฉํ์ฌ ์๋ฒ๋ฅผ ๊ตฌ์ฑํ๋ Micro Service Architecture(MSA)๊ฐ ๋ ์ค๋ฅด๊ณ ์์ต๋๋ค.
MSA์ ๊ฐ์ ๋ถ์ฐ ํ๊ฒฝ์์์ ๋์์ ์๋น์ค ๊ฐ์ ์๊ฒฉ ํธ์ถ(API ํธ์ถ)๋ก ๊ตฌ์ฑ๋๋ฉฐ, ์๊ฒฉ ํธ์ถ์ ๊ฐ ์๋น์ค์ ip ์ฃผ์์ port๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฒญ๋๋๋ฐ, ํด๋ผ์ฐ๋ ํ๊ฒฝ์ด ๊ธฐ๋ฐ์ด ๋๋ฉด์ ์๋น์ค๊ฐ AutoScaling ๋ฑ์ ์ํด ๋์ ์ผ๋ก ์์ฑ๋๊ฑฐ๋, ์ปจํ ์ด๋ ๊ธฐ๋ฐ์ ๋ฐฐํฌ๋ก ์ธํด์ ์๋น์ค์ ip๊ฐ ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋๋ ์ผ์ด ์ฆ์์ก์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ฌํ ๋ณ๊ฒฝ์ ํด๋ผ์ฐ๋์์ ์ผ์ด๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋์ ์ผ๋ก ๋ณํ๋ ip๋ฅผ ํ๋ํ๋ ํ์ธํ์ฌ ์๋์ผ๋ก ๋์ํ ์๋ ์๋ ๋จ์ ์ด์๋ค.
๋๋ฌธ์ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์๋ ์๋น์ค ํด๋ผ์ด์ธํธ๊ฐ ์๋น์ค๋ฅผ ํธ์ถํ ๋, ์๋น์ค์ ์์น(ip ์ฃผ์์ port)๋ฅผ ์์๋ผ ์ ์๋ ๊ธฐ๋ฅ์ด ํ์ํ๋ฐ, ์ด๊ฒ์ ๋ฐ๋ก Service Discovery๋ผ๊ณ ํ๋ฉฐ, ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ํฌ๊ฒ Client Side Discovery ๋ฐฉ์๊ณผ Server Side Discovery ๋ฐฉ์์ด ์์ต๋๋ค.
Service Discovery์ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ ์๋น์ค๋ฅผ ๋ฑ๋กํ๊ณ ๋ฑ๋ก๋ ์๋น์ค์ ๋ชฉ๋ก์ ๋ฐํํ๋ ๊ธฐ๋ฅ์ด์ง๋ง, ๋ฑ๋ก๋ ์๋น์ค๋ค์ Health check๋ฅผ ํตํด ํ์ฌ ์๋น์ค๊ฐ ๊ฐ๋ฅํ ์๋น์ค์ ๋ชฉ๋ก๋ง ๋ฆฌํดํ๋ค๊ฑฐ๋, ์๋น์ค ๊ฐ์ ๋ถํ ๋ถ์ฐ ๋น์จ์ ์กฐ์ ํ๋ ๋ฑ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
service client๊ฐ service registry์ query๋ฅผ ํตํด ์๋น์ค์ ์์น๋ฅผ ๋ฌผ์ด๋ณด๊ณ ํธ์ถํ๋ ๋ฐฉ์์ด๋ฉฐ, ํธ์ถ ์์๋ ๋ก๋๋ฐธ๋ฐ์ฑ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ์๋น์ค๊ฐ ํธ์ถ๋ฉ๋๋ค.
service instance๊ฐ ์์ฑ๋ ๋(๊ตฌ๋๋ ๋) ip ์ฃผ์, port, ์๋น์ค๋ช ๋ฑ์ด service registry์ ๋ฑ๋ก๋๋ฉฐ, service instance๊ฐ ์ข ๋ฃ๋ ๋ service registry์์ ์ญ์ ๋ฉ๋๋ค. (service instance์ ๋ฑ๋ก ๋ฐ ์ญ์ ๋ heartbeat mechanism์ ๋ฐ๋ผ์ ์ฃผ๊ธฐ์ ์ผ๋ก refresh ๋ฉ๋๋ค.)
E.g ) Netflix Eureka
ํธ์ถ๋๋ ์๋น์ค ์์ Load Balancer๋ฅผ ๋ฃ๋ ๋ฐฉ์์ผ๋ก service client๊ฐ Load Balancer๋ฅผ ํธ์ถํ๋ฉด Load Balancer๊ฐ service register๋ก ์๋น์ค์ ์์น๋ฅผ ๋ฌผ์ด๋ณด๊ณ ๊ฐ์ฉํ ์ ์๋ ์๋น์ค ์ธ์คํด์ค๋ฅผ ๋ผ์ฐํ ํฉ๋๋ค.
client side discovery์ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋น์ค ์ธ์คํด์ค๊ฐ ์์ฑ๋ ๋(๊ตฌ๋๋ ๋) service registry์ ์์ฑ๋๊ณ ์ข ๋ฃ๋ ๋ ์ญ์ ๋ฉ๋๋ค.