Service discovery

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๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์„œ๋น„์Šค๊ฐ€ ๊ฐ€๋Šฅํ•œ ์„œ๋น„์Šค์˜ ๋ชฉ๋ก๋งŒ ๋ฆฌํ„ดํ•œ๋‹ค๊ฑฐ๋‚˜, ์„œ๋น„์Šค ๊ฐ„์˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ๋น„์œจ์„ ์กฐ์ •ํ•˜๋Š” ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Client Side Discovery

service client๊ฐ€ service registry์— query๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค์˜ ์œ„์น˜๋ฅผ ๋ฌผ์–ด๋ณด๊ณ  ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์ด๋ฉฐ, ํ˜ธ์ถœ ์‹œ์—๋Š” ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ์„œ๋น„์Šค๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

service instance๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ(๊ตฌ๋™๋  ๋•Œ) ip ์ฃผ์†Œ, port, ์„œ๋น„์Šค๋ช… ๋“ฑ์ด service registry์— ๋“ฑ๋ก๋˜๋ฉฐ, service instance๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ service registry์—์„œ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. (service instance์˜ ๋“ฑ๋ก ๋ฐ ์‚ญ์ œ๋Š” heartbeat mechanism์— ๋”ฐ๋ผ์„œ ์ฃผ๊ธฐ์ ์œผ๋กœ refresh ๋ฉ๋‹ˆ๋‹ค.)

E.g ) Netflix Eureka

Server Side Discovery

ํ˜ธ์ถœ๋˜๋Š” ์„œ๋น„์Šค ์•ž์— Load Balancer๋ฅผ ๋„ฃ๋Š” ๋ฐฉ์‹์œผ๋กœ service client๊ฐ€ Load Balancer๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด Load Balancer๊ฐ€ service register๋กœ ์„œ๋น„์Šค์˜ ์œ„์น˜๋ฅผ ๋ฌผ์–ด๋ณด๊ณ  ๊ฐ€์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ๋ผ์šฐํŒ… ํ•ฉ๋‹ˆ๋‹ค.

client side discovery์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ(๊ตฌ๋™๋  ๋•Œ) service registry์— ์ƒ์„ฑ๋˜๊ณ  ์ข…๋ฃŒ๋  ๋•Œ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.

Last updated