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

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

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 ๋ธ”๋กœ๊ทธ ์„ค๋ช… ๋ฐ”๋กœ๊ฐ€๊ธฐ

 

API Gateway

API Gateway๋Š” RESTful ํ•˜๊ฒŒ ์ž‘์„ฑ๋œ ๋ชจ๋“  ์„œ๋น„์Šค์˜ API๋ฅผ ์†์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•˜์—ฌ ์ธ์ฆ์„ ํ†ตํ•œ ์ž์›์˜ ํšจ์œจ์ ์ธ ๋ถ„๋ฐฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

MSA๋Š” ์„œ๋น„์Šค๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค.

 

๊ทธ๋Ÿผ ์‚ฌ์šฉ์ž ์ฆ‰, ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์š”์ฒญ๋œ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋Š” ์–ด๋–ค ์„œ๋น„์Šค๊ฐ€ ๋งก์•„์•ผ ์ ์ ˆํ• ๊นŒ?

 

๋‹ต์€ ๋‹น์—ฐํ•˜๊ฒŒ๋„ ์ ์ ˆํ•œ ์„œ๋น„์Šค์ด๋‹ค.

 

๋ฌธ์ œ๋Š” ํ•ด๋‹น ์š”์ฒญ์ด ์–ด๋–ป๊ฒŒ ์ ์ ˆํ•œ์ง€ ํŒ๋‹จ์„ ํ• ๊นŒ?

๋˜ํ•œ ๋ชจ๋“  ์„œ๋น„์Šค์˜ ์š”์ฒญ์—๋Š” ๊ณตํ†ต๋œ ์ธ์ฆ ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์–ด๋””์„œ ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ• ๊นŒ?

๋”ฐ๋กœ ์ธ์ฆ ์„œ๋ฒ„๋ฅผ ๋‘ฌ์•ผํ•˜๋‚˜?

๊ทธ๋ฆฌ๊ณ  ๋˜ API์˜ ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•œ ๋กœ๊ทธ ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๋งˆ๋‹ค ๋กœ๊น… ์„œ๋ฒ„๋ฅผ ๋‘ฌ์•ผ ํ•˜๋‚˜?

์—ฌ๊ธฐ์„œ ๋“ฑ์žฅํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ API Gateway ์ด๋‹ค.

 

๋งŒ์•ฝ API Gateway๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์€ ๊ณตํ†ต๋œ ๊ณผ์ •๊ณผ ๋น„ํšจ์œจ์ ์ธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

 

ํ•˜์ง€๋งŒ API Gateway๋ผ๋Š” ๊ฐœ๋…์ด ๋“ฑ์žฅํ•œ๋‹ค๋ฉด ์ด๋ฅผ ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ๊ด€๋ฆฌํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

API Gateway ์˜ ๋™์ž‘ ๋ฐฉ์‹

์ด๋Š” Spring Cloud Gateway ์˜ ํ”Œ๋กœ์šฐ์ธ๋ฐ, ์•„๋งˆ ์ด ๊ทธ๋ฆผ์œผ๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์„๋“ฏ ํ•˜๋‹ค.

 

API Gateway๋Š” ํ•˜๋‚˜์˜ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ํ•˜๋‚˜์˜ ์„œ๋ฒ„๋กœ ๋“ค์–ด์™€ ํ•ด๋‹น ์„œ๋ฒ„์—์„œ ์š”์ฒญ์ด ์ •์ œ๋˜๊ฑฐ๋‚˜ ์กฐ์ž‘๋˜์–ด ๊ฐ์ž ๋ชฉ์ ์— ๋งž๋Š” ์„œ๋น„์Šค๋ฅผ ์ฐพ์•„๊ฐ€๋„๋ก ๋„์™€์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

๋˜ํ•œ ๊ฐ ์„œ๋ฒ„์—์„œ ์ ์ ˆํ•œ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•œ ๋’ค ๋ฐœ์ƒํ•˜๋Š” ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ„๋ฐฐํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

 

API Gateway์˜ ์—ญํ• 

API Gateway์—๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ญํ• ์ด ์กด์žฌํ•œ๋‹ค.

  1. ํ”„๋ก์‹œ์˜ ์—ญํ• ๊ณผ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ
  2. ์ธ์ฆ ์„œ๋ฒ„๋กœ์„œ์˜ ๊ธฐ๋Šฅ
  3. ๋กœ๊น… ์„œ๋ฒ„๋กœ์„œ์˜ ๊ธฐ๋Šฅ

์œ„์˜ ๋™์ž‘ ๊ณผ์ •์—์„œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋‚˜์˜ ์„œ๋ฒ„๋กœ ์ „์†ก๋˜๋ฏ€๋กœ ํ•ด๋‹น ์„œ๋ฒ„์—์„œ๋Š” ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ๋„ ํ•˜๊ณ  ๋กœ๊น…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

 

๋˜ํ•œ ํ•ด๋‹น ๊ตฌ์กฐ๋Š” ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ์™€ ๋งค์šฐ ๋‹ฎ์•„์žˆ์œผ๋ฉฐ ์‹ค์ œ๋กœ๋„ ๊ทธ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

๊ทธ๋ž˜์„œ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ๊ณผ ๋ผ์šฐํŒ…์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

 

API Gateway์˜ ๊ณ ๋ ค์‚ฌํ•ญ

API Gateway๋Š” ์œ„์™€ ๊ฐ™์ด ์ข‹์€ ์ ๋“ค๋งŒ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

 

์—ฌ๋Ÿฌ ๋‹จ์ ๋“ค๊ณผ ๊ณ ๋ คํ•ด์•ผํ•  ์‚ฌํ•ญ๋“ค์ด ์žˆ๋Š”๋ฐ ํ•จ๊ป˜ ์•Œ์•„๋ณด์ž.

  • ๋ณ‘๋ชฉํ˜„์ƒ
  • ๋„คํŠธ์›Œํฌ Latency

๋ณ‘๋ชฉ ํ˜„์ƒ

๋ณ‘๋ชฉ ํ˜„์ƒ์ด๋ž€? ๋ณ‘๋ชฉ ํ˜„์ƒ์€ ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์ด๋‚˜ ์šฉ๋Ÿ‰์ด ํ•˜๋‚˜์˜ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์ธํ•ด ์ œํ•œ์„ ๋ฐ›๋Š” ํ˜„์ƒ์„ ๋งํ•œ๋‹ค.

์œ„์˜ ๊ตฌ์กฐ๋ฅผ ๋ณธ๋‹ค๋ฉด ๋งŒ์•ฝ ์„œ๋น„์Šค๊ฐ€ 100๊ฐœ๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž.

 

๊ทธ๋Ÿผ API Gateway๋Š” ๊ฐ€์žฅ ์•ž๋‹จ์—์„œ 100๊ฐœ์˜ ์„œ๋น„์Šค๊ฐ€ ์š”์ฒญ๋  ์ˆ˜ ์žˆ๋Š” ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ๋‹นํ•ด์•ผ ํ•œ๋‹ค.

 

๊ทธ๋Ÿผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉด์„œ, ์ „์ฒด์ ์ธ ์„œ๋น„์Šค์˜ ํ†ต์‹ ์— ๋ฌธ์ œ๊ฐ€๋  ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋ž˜์„œ API Gateway๋Š” ์ ์ ˆํ•œ Scale-Out ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉด ๋งŽ์€ ์œ„ํ—˜์ด ๋ฐœ์ƒํ•œ๋‹ค.

๋„คํŠธ์›Œํฌ Latency

๋„คํŠธ์›Œํฌ Latency๋ž€? ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ํŒจํ‚ท์„ ํ•œ ์ง€์ ์—์„œ ๋‹ค๋ฅธ ์ง€์ ์œผ๋กœ ๋ณด๋‚ด๋Š”๋ฐ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์„ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด๋‹ค.

๋‹น์—ฐํ•˜๊ฒŒ API Gateway ์€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ•œ ๋ฒˆ ๋” ํƒ€๊ฒŒ ๋˜์–ด ๋„คํŠธ์›Œํฌ ์ง€์—ฐ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋Ÿฐ ๋ฌธ์ œ์ ๋“ค์€ ์ ์ ˆํ•œ Telemetry ๋„๊ตฌ๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธํ•˜๊ณ  ์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๋งŽ์€ ๊ณ ๋ฏผ์„ ํ•ด์•ผ ํ•œ๋‹ค.

 

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

ํ˜„์žฌ ๋งŽ์€ Gateway ๊ธฐ์ˆ ๋“ค์ด ์กด์žฌํ•œ๋‹ค.

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

  • Nginx
  • Kong
  • Apigee
  • Spring Cloud Gateway
  • Spring Cloud Zuul
  • AWS API Gateway

๋Œ“๊ธ€