๐ช Spring Cloud Gateway๋? MSA์์ Gateway๊ฐ ์ ํ์ํ ๊น?
Spring Cloud๋ฅผ ์ฌ์ฉํ๋ค ๋ณด๋ฉด "Gateway"๋ ์ฉ์ด๊ฐ ์์ฃผ ๋ฑ์ฅํ์ฃ .
ํนํ MSA(๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ) ๊ตฌ์กฐ์์๋ Gateway๊ฐ ํต์ฌ ์ญํ ์ ํฉ๋๋ค.
“Spring Cloud๊ฐ ์๋น์ค ๊ฐ์ Gateway ์ญํ ์ ํ๋ค๋๋ฐ, ๋๋์ฒด Gateway๊ฐ ๋ญ๊ฐ์?”
๐ Gateway๋ ๋ฌด์์ธ๊ฐ?
Gateway๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ฐ์ ์ ์ ํ ๋ง์ดํฌ๋ก์๋น์ค๋ก ์ ๋ฌํด์ฃผ๋ '์ ๋ฌธ(์ถ์ ๊ตฌ)' ์ญํ ์ ํฉ๋๋ค.
๊ฐ๋จํ ๋งํด, ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ์ฌ์ด์์ ์ค๊ฐ ๋ค๋ฆฌ ์ญํ ์ ํ๋ ๊ฑฐ์์.
๐ค ์ Gateway๊ฐ ํ์ํ ๊น?
๐ฅ Gateway๊ฐ ์์ ๋
[์ฌ์ฉ์] โโ> [ํ์ ์๋น์ค: 8081]
โโ> [์ฃผ๋ฌธ ์๋น์ค: 8082]
โโ> [์ํ ์๋น์ค: 8083]
- ํด๋ผ์ด์ธํธ๊ฐ ๋ชจ๋ ์๋น์ค์ ์ฃผ์์ ํฌํธ๋ฅผ ์์์ผ ํจ
- CORS, ์ธ์ฆ, ๋ก๊น ๋ฑ์ ๊ฐ ์๋น์ค์์ ์ค๋ณต ์ฒ๋ฆฌํด์ผ ํจ
โ Gateway๋ฅผ ๋์ ํ์ ๋
[์ฌ์ฉ์] โโ> [๐ Gateway: 8080] โโ> [ํ์ ์๋น์ค]
โโ> [์ฃผ๋ฌธ ์๋น์ค]
โโ> [์ํ ์๋น์ค]
- ํด๋ผ์ด์ธํธ๋ Gateway๋ง ์๋ฉด ๋จ
- ์ธ์ฆ, ๋ณด์, ๋ก๊น ๋ฑ ์ค์ ์ง์คํ ๊ฐ๋ฅ
๐ฆ Gateway๊ฐ ํ๋ ์ผ๋ค
| ์ญํ | ์ค๋ช |
|---|---|
| ๐ ๋ผ์ฐํ | ๊ฒฝ๋ก์ ๋ฐ๋ผ ์์ฒญ์ ๋ค๋ฅธ ์๋น์ค๋ก ์ ๋ฌ |
| ๐ ์ธ์ฆ/์ธ๊ฐ | JWT ๋๋ OAuth๋ก ์ฌ์ฉ์ ๊ถํ ๊ฒ์ฌ |
| ๐ ๋ก๊น /๋ชจ๋ํฐ๋ง | ์์ฒญ ์ ๋ณด ์์ง ํ ๋ก๊ทธ ๋ฐ ๋ถ์ |
| ๐ฏ Rate Limiting | ๊ณผ๋ํ ์์ฒญ ์ ์ด (์: 1์ด์ 10๊ฑด ์ดํ) |
| ๐ CORS ์ฒ๋ฆฌ | ํ๋ก ํธ์ ๋ฐฑ์๋ ๊ฐ ๋๋ฉ์ธ ํ์ฉ ์ค์ |
๐ Spring Cloud Gateway ์์
Spring Cloud์์๋ WebFlux ๊ธฐ๋ฐ์ ๊ณ ์ฑ๋ฅ Gateway๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ฐ๋จํ ์ค์ ๋ง์ผ๋ก๋ ๋ผ์ฐํ
์ด ๊ฐ๋ฅํฉ๋๋ค.
๐งพ application.yml ์์
spring:
cloud:
gateway:
routes:
- id: member-service
uri: http://localhost:8081
predicates:
- Path=/members/**
- id: order-service
uri: http://localhost:8082
predicates:
- Path=/orders/**
์ด ์ค์ ์ ๋ค์์ ์๋ฏธํฉ๋๋ค:
/members/**์์ฒญ →8081ํฌํธ์ ํ์ ์๋น์ค๋ก ์ ๋ฌ/orders/**์์ฒญ →8082ํฌํธ์ ์ฃผ๋ฌธ ์๋น์ค๋ก ์ ๋ฌ
๐งฉ Gateway ๊ตฌ์ฑ๋
[์ฌ์ฉ์ ์์ฒญ]
โ
โผ
โโโโโโโโโโโโโโโโโโ
โ ๐ Gateway โ
โโโโโโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
[ํ์ ์๋น์ค] [์ฃผ๋ฌธ ์๋น์ค] [์ํ ์๋น์ค]
Gateway๋ ์ด์ฒ๋ผ ๋ชจ๋ ์์ฒญ์ ์ค์ ํต์ ์๊ฐ ๋ฉ๋๋ค.
โ ์์ฝ
- Gateway๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ฐ์ ๋ฐฑ์๋ ์๋น์ค๋ก ๋ผ์ฐํ ํ๋ ์ถ์ ๊ตฌ์ ๋๋ค.
- ๋ณด์, ์ธ์ฆ, ๋ก๊น ๋ฑ ๊ณตํต ์ฒ๋ฆฌ๋ฅผ ํ ๊ณณ์์ ์ํํ ์ ์์ต๋๋ค.
- Spring Cloud Gateway๋ WebFlux ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ณ๊ณ ๋น ๋ฅด๋ฉฐ, ์ค์ ๋ ๊ฐ๋จํฉ๋๋ค.
- Gateway๋ ๋ฐ๋์ ๋ณ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ก ๋ฐฐํฌํด์ผ ํฉ๋๋ค.
๐ ๋ง๋ฌด๋ฆฌ
MSA ํ๊ฒฝ์์๋ ์๋น์ค๊ฐ ๋ง์์ง์๋ก ์์ฒญ ํ๋ฆ์ ๊ด๋ฆฌํ๋ ๊ฒ ์ค์ํด์ง๋๋ค.
Spring Cloud Gateway๋ฅผ ํตํด ์ค์์์ ์์ฒญ์ ํต์ ํ๊ณ , ๊ฐ ์๋น์ค๋ ๋น์ฆ๋์ค ๋ก์ง์๋ง ์ง์คํ ์ ์์ด์.
๋ค์ ๊ธ์์๋ Spring Cloud Gateway์ JWT ์ธ์ฆ ์ ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์๊ฐํด๋ณผ๊ฒ์!
'Spring & SpringBoot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Spring Boot MSA ๊ตฌ์กฐ์์ Auth-Service ๊ฐ๋ฐํ๋ฉฐ ๊ฒช์ ์ค์ ๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ (1) | 2025.07.17 |
|---|---|
| Docker + Spring Boot + Nginx๋ก ๋๋ง์ ์ด๋ฏธ์ง ํ์ผ ์๋ฒ ๋ง๋ค๊ธฐ (1) | 2025.05.02 |
| MSA ํ๊ฒฝ์์ Spring Clound์ Role (1) | 2025.04.15 |
| Spring @Transaction์ ๋ํด์ ๊น์ด์๊ฒ ์์๋ณด์ (0) | 2025.04.15 |
| Spring Boot์ Redis ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2025.01.07 |