๐ŸŒฑ Spring Cloud - API Gateway Service (Load Balancing) ๐ŸŒฑ

Kim Dae Hyunยท2021๋…„ 5์›” 30์ผ
1

Spring-Cloud

๋ชฉ๋ก ๋ณด๊ธฐ
3/4
post-thumbnail
post-custom-banner

Github ์†Œ์Šค์ฝ”๋“œ

Spring Cloud Gateway๋ฅผ ์ด์šฉํ•œ Routing, Load Balancing Test

  • API Gateway ํ”„๋กœ์ ํŠธ ์„ค์ •
    • Spring-boot: 2.4.x
    • Dependency
      • Lombok, Spring Cloud Routing(Gateway), Eureka Client
  • ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์„œ๋น„์Šค ํ”„๋กœ์ ํŠธ ์„ค์ •
    • Spring-boot: 2.4.x
    • Dependency
      • Spring web, Eureka Client
      • Eureka Server๋Š” ์ด์ „ ํฌ์ŠคํŠธ์—์„œ ๊ตฌํ˜„ํ•œ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉ
  • ๋‹จ์ˆœ Routing์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ์ด์ „ ํฌ์ŠคํŠธ๋ฅผ ํ™•์ธํ•ด์ฃผ์„ธ์š”.

Load Balancing์„ ์œ„ํ•œ Routing ์„ค์ • ๋ณ€๊ฒฝ

  • API gateway service yml์„ค์ •
    • ๊ธฐ์กด ๋‹จ์ˆœํžˆ Routing๋งŒ์„ ์ˆ˜ํ–‰ํ•˜๋Š” api gateway service์˜ ์„ค์ •์ด๋‹ค.
    • ๋ถ€ํ•˜๋ถ„์‚ฐ์„ ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝํ•ด๋ณด์ž.
  • yml ์„ค์ • ๋ณ€๊ฒฝ
    • ๋ถ€ํ•˜๋ถ„์‚ฐ์„ ์œ„ํ•ด ์ผ๋‹จ eureka์„œ๋ฒ„์— ํด๋ผ์ด์–ธํŠธ๋กœ ๋“ฑ๋กํ•œ๋‹ค.
    • uri๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค. lb๋Š” Load Balancer์˜ ์•ฝ์ž์ด๊ณ  // ์ดํ•˜ ๋ฌธ์ž์—ด์€ ์‹๋ณ„ํ•  ์„œ๋น„์Šค์˜ ์ด๋ฆ„์ด๋‹ค.
    • eureka server์˜ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ํ™•์ธํ•˜๋ฉด ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
    • ์„œ๋น„์Šค์˜ uri, ํฌํŠธ๋ฒˆํ˜ธ๋กœ ์„œ๋น„์Šค๋ฅผ ์‹๋ณ„ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋™์ ์œผ๋กœ ์š”์ฒญ์„ ๋ถ„์‚ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

Load Balancing Test

  • first-service๋งŒ์œผ๋กœ Test๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.
    • first-service์—๋Š” ์•„๋ž˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๋‹ค.
    • ์š”์ฒญ์„ ๋ฐ›์€ ๊ฒฝ์šฐ ๋‹จ์ˆœํžˆ ์ž์‹ ์˜ ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.
  • ํ…Œ์ŠคํŠธ ๋ฐฉ์‹
    • first-service๋ฅผ 2๊ฐœ ์‹คํ–‰ํ•œ๋‹ค.
    • eureka์„œ๋ฒ„์—๋Š” api-gateway service์™€ ๋‘ ๊ฐœ first-service๊ฐ€ ๋“ฑ๋ก๋œ๋‹ค.
    • ๋™์ผํ•œ ์„œ๋น„์Šค์˜ ๋™์ผํ•œ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.
    • ์ •์ƒ์ ์œผ๋กœ ๋ถ€ํ•˜๋ถ„์‚ฐ์ด ์ด๋ฃจ์–ด์ง„๋‹ค๋ฉด ๋งค ์š”์ฒญ๋งˆ๋‹ค ๋‹ค๋ฅธ ํฌํŠธ ๋ฒˆํ˜ธ๊ฐ€ ์ถœ๋ ฅ๋˜์–ด์•ผ ํ•œ๋‹ค. (spring cloud์—์„œ๋Š” Round Robbin๋ฐฉ์‹์œผ๋กœ ๋ถ€ํ•˜๋ถ„์‚ฐ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋“ฏ ํ•˜๋‹ค..)
  • ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰
    • Eureka server
    • api gateway service์™€ 2๊ฐœ first-service๊ฐ€ ๋“ฑ๋ก๋˜์—ˆ๋‹ค.
    • ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ (postman)
      • 51638๋ฒˆ ํฌํŠธ๋กœ ์š”์ฒญ๋˜์—ˆ๋‹ค.
    • ๋‘ ๋ฒˆ์งธ ์š”์ฒญ
      • 51754๋ฒˆ ํฌํŠธ๋กœ ์š”์ฒญ๋˜์—ˆ๋‹ค.
  • ๊ฐ™์€ ํฌํŠธ, ๊ฐ™์€ ์„œ๋น„์Šค ์ด๋ฆ„์œผ๋กœ ๊ฐ™์€ api ํ˜ธ์ถœ์— ๋Œ€ํ•ด ๋ถ€ํ•˜๋ถ„์‚ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์—ˆ๋‹ค. :)
profile
์ข€ ๋” ์ฒœ์ฒœํžˆ ๊นŒ๋จน๊ธฐ ์œ„ํ•ด ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๐Ÿง
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€