728x90
๋ฐ˜์‘ํ˜•

spring boot 9

[MSA ๊ตฌ์ถ•ํ•˜๊ธฐ] 9. API Gateway์™€ Eureka ์„œ๋ฒ„ ์—ฐ๋™ํ•˜๊ธฐ (API Gateway)

๐Ÿ”Š ์šฐ๋ฆฌ๋Š” Spring Cloud๋ฅผ ํ™œ์šฉํ•˜์—ฌ MSA๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค. ๐Ÿ”Š ์ด๋ฒˆ์—๋Š”, API Gateway๋ฅผ Eureka ํด๋ผ์ด์–ธํŠธ๋กœ ๋“ฑ๋กํ•˜์—ฌ API Gateway์™€ Eureka ์„œ๋ฒ„๋ฅผ ์—ฐ๋™ํ•  ๊ฒƒ์ด๋‹ค. API Gateway์™€ Eureka ์„œ๋ฒ„ ์—ฐ๋™ ํ”„๋กœ์„ธ์Šค ํด๋ผ์ด์–ธํŠธ๊ฐ€ API Gateway์— ์š”์ฒญ์„ ํ•˜๋ฉด API Gateway ๊ฐ€ Eureka server์— ๋“ฑ๋ก๋œ ์„œ๋น„์Šค๋“ค์„ ์กฐํšŒํ•˜๊ณ  ํ•ด๋‹น ์„œ๋น„์Šค๋กœ ๋ผ์šฐํŒ…์„ ํ•ด์ค€๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋กœ๊ทธ์ธ์„ ํ•œ๋‹ค๋Š” ๊ฐ€์ƒ์˜ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์ž. โ‘ : ๊ฐ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์œ ๋ ˆ์นด ์„œ๋ฒ„์— ๋“ฑ๋กํ•œ๋‹ค. ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋Š” ์‹œ์ž‘ํ•  ๋•Œ ์œ ๋ ˆ์นด ์„œ๋ฒ„์— IP, ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ, ํฌํŠธ ์ •๋ณด ๋“ฑ์„ ์ „๋‹ฌํ•œ๋‹ค. ์œ ๋ ˆ์นด ์„œ๋ฒ„๋Š” ๋“ฑ๋ก๋œ ์ธ์Šคํ„ด์Šค๋“ค์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ƒํƒœ๋ฅผ ์ฒดํฌํ•˜๋ฉด์„œ ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๋ฅผ..

[MSA ๊ตฌ์ถ•ํ•˜๊ธฐ] 7. Spring Cloud Gateway๋ฅผ ํ™œ์šฉํ•œ ๊ฒฝ๋กœ ์ˆ˜์ • (API Gateway)

๐Ÿ”Š ์šฐ๋ฆฌ๋Š” Spring Cloud๋ฅผ ํ™œ์šฉํ•˜์—ฌ MSA๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค. ๐Ÿ”Š ์•ž์„œ, API Gateway์˜ ๋ผ์šฐํŒ…์„ ์„ค์ •ํ–ˆ๋Š”๋ฐ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ๊ฒฐ๊ณผ ๊ฐ’์ด ๋‹ค๋ฅด๊ฒŒ ๋‚˜ํƒ€๋‚ฌ๋‹ค. ๊ทธ ์ด์œ ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. API Gateway ํŒŒํŠธ 3 ์šฐ์„ , ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž. 1. user-service์˜ UserController.java ํŒŒ์ผ // user-service: UserController.java (8081 ํฌํŠธ ์‚ฌ์šฉ) package com.caffeinedoctor.userservice.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestControll..

[MSA] API Gateway

์ตœ๊ทผ ๋งŽ์€ ์„œ๋น„์Šค๋“ค์ด ๋…๋ฆฝ์ ์ธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์€ ๋‹จ์œ„์˜ ์„œ๋น„์Šค๋“ค๋กœ ๊ตฌ์„ฑ๋œ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜(Micro Service Architecture) ํ˜•ํƒœ๋กœ ๊ตฌ์ถ•๋˜๋ฉด์„œ ์„œ๋น„์Šค์˜ ๋ณต์žก๋„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๊ณ , ๋ณ€๊ฒฝ์— ๋”ฐ๋ฅธ ์˜ํ–ฅ์„ ์ตœ์†Œํ™”ํ•˜๋ฉด์„œ ๊ฐœ๋ฐœ๊ณผ ๋ฐฐํฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ๋„ ์–ป๊ฒŒ ๋˜์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ์ž‘์€ ๋‹จ์œ„์˜ ์„œ๋น„์Šค๊ฐ€ 50๊ฐœ, 100๊ฐœ๊ฐ€ ๋˜์—ˆ์„ ๋•Œ, ์ด ๋งŽ์€ ์„œ๋น„์Šค๋“ค์˜ ์—”๋“œํฌ์ธํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ ์–ด๋ ค์›€์ด ์ƒ๊ธฐ๊ณ , ๋˜ ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๋งˆ๋‹ค ๊ณตํ†ต์ ์œผ๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ธฐ๋Šฅ(ex ์ธ์ฆ/์ธ๊ฐ€, ๋กœ๊น… ๋“ฑ)๋“ค์„ ์ค‘๋ณต์œผ๋กœ ๊ฐœ๋ฐœํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ API Gateway์ด๋‹ค. API Gateway๋ž€? API Gateway Service๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์„ค์ •..

[MSA ๊ตฌ์ถ•ํ•˜๊ธฐ] 6. Spring Cloud Gateway ๋ผ์šฐํŒ… ์„ค์ •ํ•˜๊ธฐ (API Gateway)

๐Ÿ”Š ์šฐ๋ฆฌ๋Š” Spring Cloud๋ฅผ ํ™œ์šฉํ•˜์—ฌ MSA๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค.๐Ÿ”Š ์ด๋ฒˆ์—๋Š”, API Gateway์˜ ๋ผ์šฐํŒ…์„ ์„ค์ •ํ•  ๊ฒƒ์ด๋‹ค.  API Gateway ํŒŒํŠธ 2 ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์„œ๋ฒ„๋ฅผ 2๊ฐœ ์ด์ƒ ์ค€๋น„ํ•˜์ž. ๋ผ์šฐํŒ…์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.application.properties๋ฅผ ํ†ตํ•œ ๊ฒฝ๋กœ ์„ค์ •application.yml๋ฅผ ํ†ตํ•œ ๊ฒฝ๋กœ ์„ค์ •Config ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•œ ๊ฒฝ๋กœ ์„ค์ • (์ง์ ‘ Java ์ฝ”๋“œ ์ž‘์„ฑ) Spring Cloud Gateway ๊ณต์‹๋ฌธ์„œ์˜ 5๋ฒˆ์งธ ์นดํ…Œ๊ณ ๋ฆฌ 5. Route Predicate Factories์— ๋‹ค์–‘ํ•œ ๋ผ์šฐํŒ…์ „๋žต์ด ์žˆ๋‹ค. Spring Cloud Gateway ๊ณต์‹๋ฌธ์„œhttps://docs.spring.io/spring-cloud-gateway/docs/current/ref..

[MSA ๊ตฌ์ถ•ํ•˜๊ธฐ] 5. Spring Cloud Gateway ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ (API Gateway)

๐Ÿ”Š ์šฐ๋ฆฌ๋Š” Spring Cloud๋ฅผ ํ™œ์šฉํ•˜์—ฌ MSA๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค. ๐Ÿ”Š ์ด๋ฒˆ์—๋Š”, Spring Cloud Gateway๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ API Gateway๋ฅผ ๊ตฌ์ถ•ํ•  ๊ฒƒ์ด๋‹ค. API Gateway ํŒŒํŠธ 1 API Gateway๋ž€? ์‚ฌ์šฉ์ž๊ฐ€ ์„ค์ •ํ•œ Routing ์„ค์ •์— ๋”ฐ๋ผ ๊ฐ endpoint๋กœ client๋ฅผ ๋Œ€์‹ ํ•ด์„œ ์š”์ฒญํ•˜๊ณ , ์‘๋‹ต์„ ๋ฐ›์œผ๋ฉด ๋‹ค์‹œ client์—๊ฒŒ ์ „๋‹ฌํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. Spring Cloud์—์„œ๋Š” Spring Cloud Gateway๊ฐ€ API Gateway์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. Spring Cloud Gateway๋ž€? ์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ ๊ฒŒ์ดํŠธ์›จ์ด๋Š” MSA ๊ฐ€์žฅ ์•ž๋‹จ์—์„œ ํด๋ผ์ด์–ธํŠธ๋“ค๋กœ ๋ถ€ํ„ฐ ์˜ค๋Š” ์š”์ฒญ์„ ๋ฐ›์€ ํ›„ ๊ฒฝ๋กœ์™€ ์กฐ๊ฑด์— ์•Œ๋งž์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋กœ์ง์— ์š”์ฒญ์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒŒ์ดํŠธ์›จ์ด์ด๋‹ค. ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ๊ฐœ..

[MSA ๊ตฌ์ถ•ํ•˜๊ธฐ] 4. Eureka ํด๋ผ์ด์–ธํŠธ์— ๋žœ๋ค ํฌํŠธ ํ• ๋‹นํ•˜๊ธฐ (Service Discovery)

๐Ÿ”Š ์šฐ๋ฆฌ๋Š” Spring Cloud๋ฅผ ํ™œ์šฉํ•˜์—ฌ MSA๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค. Service Discovery ํŒŒํŠธ 3 Service Discovery์˜ ์—ญํ• ์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์ •๋ฆฌํ•˜์ž๋ฉด, Service Discovery๋ž€? ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์ •๋ณด(์œ„์น˜ ๋“ฑ)๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค. ์™ธ๋ถ€์˜ ์š”์ฒญ์ด๋‚˜ ์„œ๋น„์Šค๊ฐ€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. Spring Cloud์—์„œ๋Š” Spring Cloud Netflix Eureka๊ฐ€ Service Discovery์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. Eureka๋Š” Eureka Server์™€ Eureka Client๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. Eureka ํด๋ผ์ด์–ธํŠธ๋ž€? MSA๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋“ค ์ค‘ Eureka ์„œ๋ฒ„์—์„œ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์›ํ•˜๋Š” ์š”์†Œ๋ฅผ Eureka ํด๋ผ์ด์–ธํŠธ ์„ค์ •์„ ์ง„ํ–‰ํ•ด์„œ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ”Š ..

[MSA ๊ตฌ์ถ•ํ•˜๊ธฐ] 3. Eureka ํด๋ผ์ด์–ธํŠธ ์„ค์ • (Service Discovery)

๐Ÿ”Š ์šฐ๋ฆฌ๋Š” Spring Cloud๋ฅผ ํ™œ์šฉํ•˜์—ฌ MSA๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค. Service Discovery ํŒŒํŠธ 2 Service Discovery์˜ ์—ญํ• ์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์ •๋ฆฌํ•˜์ž๋ฉด, Service Discovery๋ž€? ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์ •๋ณด(์œ„์น˜ ๋“ฑ)๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค. ์™ธ๋ถ€์˜ ์š”์ฒญ์ด๋‚˜ ์„œ๋น„์Šค๊ฐ€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. Spring Cloud์—์„œ๋Š” Spring Cloud Netflix Eureka๊ฐ€ Service Discovery์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. Eureka๋Š” Eureka Server์™€ Eureka Client๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. Eureka ํด๋ผ์ด์–ธํŠธ๋ž€? MSA๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋“ค ์ค‘ Eureka ์„œ๋ฒ„์—์„œ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์›ํ•˜๋Š” ์š”์†Œ๋ฅผ Eureka ํด๋ผ์ด์–ธํŠธ ์„ค์ •์„ ์ง„ํ–‰ํ•ด์„œ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ”Š ..

[MSA ๊ตฌ์ถ•ํ•˜๊ธฐ] 2. Eureka ์„œ๋ฒ„ ๊ตฌ์ถ• (Service Discovery)

๐Ÿ”Š ์šฐ๋ฆฌ๋Š” Spring Cloud๋ฅผ ํ™œ์šฉํ•˜์—ฌ MSA๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค. ๐Ÿ”Š ์ด๋ฒˆ์—๋Š”, Service Discovery๋ฅผ ๊ตฌ์ถ•ํ•  ๊ฒƒ์ด๋‹ค. Service Discovery ํŒŒํŠธ 1 Service Discovery์˜ ์—ญํ• ์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์ •๋ฆฌํ•˜์ž๋ฉด, Service Discovery๋ž€? ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์ •๋ณด(์œ„์น˜ ๋“ฑ)๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค. ์™ธ๋ถ€์˜ ์š”์ฒญ์ด๋‚˜ ์„œ๋น„์Šค๊ฐ€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. Spring Cloud์—์„œ๋Š” Spring Cloud Netflix Eureka๊ฐ€ Service Discovery์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. Eureka๋Š” Eureka Server์™€ Eureka Client๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. Eureka ์„œ๋ฒ„๋ž€? Eureka ์„œ๋ฒ„๋Š” ๋‹จ์ˆœํ•˜๊ฒŒ MSA๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋“ค์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๊ฐ์‹œ์ž ..

[MSA] Service Discovery

Service Discovery ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜(MSA)๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ์„œ๋น„์Šค๋“ค์€ ๊ฐ์ž ๋‹ค๋ฅธ IP์™€ Port๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋“ค์˜ IP์™€ Port ์ •๋ณด์— ๋Œ€ํ•ด์„œ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š”๋ฐ Service Discovery๋ผ๊ณ  ํ•œ๋‹ค. ์ฆ‰, MSA์—์„œ๋Š” Service์˜ IP์™€ Port๊ฐ€ ์ผ์ •ํ•˜์ง€ ์•Š๊ณ  ์ง€์†์ ์„ ๋ณ€ํ™”ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Client์— Service์˜ ์ •๋ณด๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์€ ํ•œ๊ณ„๊ฐ€ ๋ถ„๋ช…ํ•˜๋‹ค. Service Discovery๋ž€ ์ด๋Ÿฐ MSA์˜ ์ƒํ™ฉ์— ์ ํ•ฉํ•˜๋‹ค. ์„œ๋น„์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ ํ˜น์€ ์†Œ๋ฉธ๋˜๊ฑฐ๋‚˜ ์‹ ๊ทœ ์„œ๋น„์Šค๋“ค์ด ์ง€์†์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๋“ฑ ์„œ๋น„์Šค์˜ ์ •๋ณด๊ฐ€ ์ง€์†์ ์œผ๋กœ ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค. ๋””์Šค์ปค๋ฒ„๋ฆฌ ์„œ๋ฒ„๋Š” ์ด๋Ÿฌํ•œ ๊ฐ€๋ณ€์ ์ธ ๋ชจ๋“  ์„œ๋น„์Šค์˜ ์ •๋ณด๋“ค์€ ๊ฐ ์„œ๋น„์Šค์˜ ๊ณ ์œ  I..

728x90
๋ฐ˜์‘ํ˜•