๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ฌ์•„ํ‚คํ…์ฒ˜/- distributed system

[๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค] MSA์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ - Service Mesh

by Wonit 2021. 4. 14.

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐ์ˆ ์ ์œผ๋กœ ๋งŽ์€ ์–ด๋ ค์›€์ด ์ˆ˜๋ฐ˜๋œ๋‹ค.

์•„๋ž˜์˜ ์‚ฌ์ง„๋งŒ ๋ณด๋”๋ผ๋„ ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์•Œ์•ผ์•„ ํ•  ๊ธฐ์ˆ ๋“ค์ด ๊ต‰์žฅํžˆ ๋งŽ๋‹ค.

์˜ค๋Š˜์€ ์—ฌ๊ธฐ์— ๋‚˜์˜จ ๊ธฐ์ˆ ๋“ค์˜ ํŠน์ง•๊ณผ ์–ด๋–ค ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค.

CNCF๊ฐ€ ์ œ์‹œํ•œ ํ‘œ์ค€ MSA ๊ตฌ์„ฑ ์š”์†Œ

CNCF๋Š” ์ง€๋‚œ Cloud Native Architecture ์—์„œ๋„ ์ž ๊น ์–ธ๊ธ‰ํ•œ Cloud Native Computing Foundation ๋‹จ์ฒด์ด๋‹ค.

CNCF ์—์„œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜๋ˆˆ๋‹ค.

  • API Gateway ํŒจํ„ด ๋ธ”๋กœ๊ทธ ์„ค๋ช… ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Service Mesh ๋ธ”๋กœ๊ทธ ์„ค๋ช… ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Container Runtime ๋ธ”๋กœ๊ทธ ์„ค๋ช… ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • CI / CD ๋ธ”๋กœ๊ทธ ์„ค๋ช… ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Message Queuing ๋ธ”๋กœ๊ทธ ์„ค๋ช… ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • RESTful API ๋ธ”๋กœ๊ทธ ์„ค๋ช… ๋ฐ”๋กœ๊ฐ€๊ธฐ

Service Mesh

Service Mesh๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„์˜ ์ธํ”„๋ผ ์‚ฌ์ด์—์„œ ์›ํ™œํ•˜๊ฒŒ ํ†ต์‹ ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ธํ”„๋ผ ๊ณ„์ธต์ด๋‹ค.

 

์•„ํ‚คํ…์ฒ˜ ๋‚ด๋ถ€์—์„œ ์š”์ฒญ์ด ์–ด๋–ค ์ง€์ ์œผ๋กœ ๊ฐˆ์ง€ ์ „๋‹ฌ๋˜๋Š” ๋ฐฉ์‹์„ ์ถ”์ƒํ™” ํ•œ๋‹ค.

 

์ด ๋ง์€ ์‹ค์งˆ์ ์ธ ์„œ๋ฒ„๋กœ์„œ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•˜๋‚˜์˜ ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์„ ๋œปํ•˜๊ฒŒ ๋œ๋‹ค.

 

๊ฒฐ๊ตญ ์„œ๋น„์Šค ๋ฉ”์‹œ๋ฅผ ํ†ตํ•ด์„œ ์šฐ๋ฆฌ๋Š” ์„œ๋น„์Šค ๊ฐ„์˜ ํ†ต์‹ ์„ ์ถ”์ƒํ™”ํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ณ  ํšจ์œจ์ ์ด๋ฉฐ ๋น ๋ฅด๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์ฆ‰, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ์‹์„ ์ œ์–ดํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ ์…ˆ์ด๋‹ค.

Service Mesh๋Š” ์„œ๋น„์Šค์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์—์„œ Aggregate ์„œ๋ฒ„์˜ ์—ญํ•  ์ฆ‰, ์ผ์ข…์˜ ๋ฏธ๋“ค์›จ์–ด์˜ ํŠน์„ฑ์„ ๊ฐ–๋Š”๋‹ค.

 

์ด๋Ÿฌํ•œ ์„œ๋น„์Šค ๋ฉ”์‰ฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

  1. ์„œ๋น„์Šค ๋“ฑ๋ก : Service Registery
  2. ์„œ๋น„์Šค ๊ฒ€์ƒ‰ : Service Discovery
  3. ๊ฐ ์„œ๋น„์Šค์˜ ๊ณ ์œ ํ•œ ์„ค์ • ์ •๋ณด๋ฅผ ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ๊ด€๋ฆฌ : Configuration Server
  4. ํ”„๋ก์‹œ, ์ธ์ฆ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ ์ˆ˜ํ–‰
  5. ์•”ํ˜ธํ™”

์ด๋Ÿฌํ•œ ์ •๋ณด๋“œ๋ฅผ Dashboard๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.

์ฃผ์š” ํŠน์ง•, Service Register & Discovery

์„œ๋น„์Šค๋ฅผ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•œ๋‹ค๋ฉด ํ•ด๋‹น ์„œ๋ฒ„์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ Service Mesh ์— ์กด์žฌํ•˜๋Š” Discovery ์„œ๋ฒ„์— ๋“ฑ๋กํ•œ๋‹ค.


๊ทธ๋Ÿผ ๊ฐ๊ฐ์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋“ค์˜ IP ์ •๋ณด๋Š” ์ผ์ผ์ด ๋“ฑ๋กํ•˜์ง€ ์•Š๋”๋ผ๊ณ  Discovery ์„œ๋ฒ„๊ฐ€ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.

API Gateway VS Service Mesh

API Gateway์™€ Service Mesh์™€ ํ•˜๋Š” ์ผ์€ ๋™์ผํ•˜๋‹ค.


ํ•˜์ง€๋งŒ ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜๋Š” ๊ฒƒ๊ณผ ์ž‘๋™ ์œ„์น˜์— ๋”ฐ๋ผ ๋‹ค๋ฅธ๋ฐ, ์ด๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œ๋กœ ๋งŒ๋“ค์–ด๋ณด์ž.

 

์ด๋ฆ„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ผ ์ ์šฉ ์œ„์น˜ ์™ธ๋ถ€ ๋…ธ์ถœ ์—ฌ๋ถ€
API Gateway ๋ผ์šฐํŒ…, ์ธ์ฆ, ๋ชจ๋‹ˆํ„ฐ๋ง, ์„œ๋น„์Šค ๊ฒ€์ƒ‰, ์„œ๋น„์Šค ๋“ฑ๋ก Client-to-Server Yes
Service Mesh ๋ผ์šฐํŒ…, ์ธ์ฆ, ๋ชจ๋‹ˆํ„ฐ๋ง, ์„œ๋น„์Šค ๊ฒ€์ƒ‰, ์„œ๋น„์Šค ๋“ฑ๋ก Server-to-Server No

๊ทธ๋Ÿผ API Gateway๋ƒ Service Mesh๋ƒ ์‚ฌ์ด์—์„œ ์–ด๋–ค ๊ฒƒ์„ ์จ์•ผ ํ• ๊นŒ?
์ •๋‹ต์€ ์—†๋‹ค. ์‚ฌ์šฉ๋˜๋Š” ์œ„์น˜๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด์ง€๋งŒ API Gateway์™€ Service Mesh๋‚˜ ์„œ๋กœ ๋™์ผํ•œ ๋ชฉ์ , ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ, ํ”„๋ก์‹œ, ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๊ทธ์— ๋”ฐ๋ผ์„œ ์ ์  API ๊ฒŒ์ดํŠธ์›จ์ด์™€ Service Mesh๊ฐ€ ํ†ตํ•ฉ๋˜๋Š” ์›€์ง์ž„์ด ๋ณด์ธ๋‹ค. ์ ์ ˆํžˆ ๋‘˜์˜ ์žฅ์ ์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

Service Mesh ์˜ ๊ตฌ์„ฑ๋„

์ด๋Š” Spring Cloud์˜ Eureka์™€ Gateway๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑํ•œ ์„œ๋น„์Šค ๋ฉ”์‰ฌ ํฐ ๊ทธ๋ฆผ์ด๋‹ค.

 

์„œ๋น„์Šค ๋ฉ”์‰ฌ์—๋Š” Sidecar ํŒจํ„ด ๋ผ๋Š” ๊ฐœ๋…์ด ๋“ฑ์žฅํ•˜๋Š”๋ฐ, ์ด๋Š” ์•„์ฃผ ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋‹ค.

 

Sidecar Pattern

 

์œ„์˜ ๊ตฌ์„ฑ๋„๋ฅผ ๋ณด๋ฉด ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๋“ค์€ ์–ด๋–ป๊ฒŒ ์„œ๋น„์Šค ์ •๋ณด๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ์„œ๋น„์Šค ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„๊นŒ?

๋งŒ์•ฝ ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋™์ž‘ํ•œ๋‹ค๋ฉด?

 

์ด๋Ÿด ๋•Œ ์‚ฌ์ด๋“œ์นด ํŒจํ„ด์„ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋‹ค.

 

์‚ฌ์ด๋“œ์นด ํŒจํ„ด์€ ๊ฒฉ๋ฆฌ ๋ฐ ์บก์Šํ™”๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹ค์งˆ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…Œ์ด๋„ˆ ์˜†์— ๋ถ™์ด๋Š” ๊ฒƒ์„ ๋œปํ•˜๋Š”๋ฐ, ์˜คํ† ๋ฐ”์ด์— ์žˆ๋Š” ์‚ฌ์ด๋“œ ์นด์™€ ๋น„์Šทํ•˜๋‹ค๊ณ  ํ•ด์„œ ์ด๋ฆ„์ด ์‚ฌ์ด๋“œ ์นด ํŒจํ„ด์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

์ฆ‰, API Gateway๋‚˜ Service Discovery ๊ฐ€ Java๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.

 

๊ทธ๋Ÿผ ๋‹ค๋ฅธ ํ”Œ๋žซํผ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์„œ๋ฒ„์— Sidecar๋ฅผ ๋ถ™์—ฌ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๋Š”๊ฒŒ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

์ด๋ฅผ ์ง€์›ํ•˜๋Š” ๋„๊ตฌ ๋ฐ ๊ธฐ์ˆ 

ํ˜„์žฌ ๋งŽ์€ Service Mesh๋ฅผ ์ง€์›ํ•˜๋Š” ๊ธฐ์ˆ ๋“ค์ด ์กด์žฌํ•œ๋‹ค.

์ด๋Š” CNCF ์— CNCF Cloud Native Interactive Landscape ์—์„œ ๋” ์ž์„ธํžˆ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Netflix Eureka
  • Netflix Ribbon
  • Istio
  • Hydra

๋Œ“๊ธ€