728x90
๋ฐ˜์‘ํ˜•

MircroService 12

[MSA] Spring Cloud Gateway Filter (API Gateway)

Spring Cloud Gateway๋ฅผ ์‚ฌ์šฉํ•œ ์š”์ฒญ/์‘๋‹ต ํ”„๋กœ์„ธ์Šค Spring Cloud Gateway๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋“ค๊ณผ ํด๋ผ์ด์–ธํŠธ๋‹จ์˜ ๋ผ์šฐํŒ… ์—ญํ• ์„ ํ•ด์ค€๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์›ํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด Spring Cloud gateway๋กœ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค. Spring Cloud gateway์—์„œ๋Š” ์–ด๋–ค ์„œ๋น„์Šค๋กœ ๊ฐ€์•ผ ํ•˜๋Š”์ง€ ๋ถ„๊ธฐ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค€๋‹ค. ์ด๋•Œ Filter ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์กฐ๊ฑด์„ ๋ถ„๊ธฐํ•œ๋‹ค. ์ ์„  ๋„ค๋ชจ ๋ฐ•์Šค๋Š” Spring Cloud gateway์•ˆ์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ์„ ํ™•๋Œ€ํ•œ ๊ฒƒ์ด๋‹ค. Spring Cloud Gateway Filter ๋ž€? Spring Cloud Gateway์˜ ํ•„ํ„ฐ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„๊ณ  ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜, ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์—์„œ์˜ ๋ผ์šฐํŒ…, ๋ณด์•ˆ, ..

[MSA ๊ตฌ์ถ•ํ•˜๊ธฐ] 8. Spring Cloud Gateway์— ํ•„ํ„ฐ ์ ์šฉํ•˜๊ธฐ (API Gateway)

๐Ÿ”Š ์šฐ๋ฆฌ๋Š” Spring Cloud๋ฅผ ํ™œ์šฉํ•˜์—ฌ MSA๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค. ๐Ÿ”Š ์ด๋ฒˆ์—๋Š”, Spring Cloud Gateway Routes์˜ Filters๋ฅผ ์„ค์ •ํ•  ๊ฒƒ์ด๋‹ค. API Gateway ํŒŒํŠธ 4 https://bu119.tistory.com/94 [MSA ๊ตฌ์ถ•ํ•˜๊ธฐ] 6. Spring Cloud Gateway ๋ผ์šฐํŒ… ์„ค์ •ํ•˜๊ธฐ (API Gateway) ๐Ÿ”Š ์šฐ๋ฆฌ๋Š” Spring Cloud๋ฅผ ํ™œ์šฉํ•˜์—ฌ MSA๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค. ๐Ÿ”Š ์ด๋ฒˆ์—๋Š”, API Gateway์˜ ๋ผ์šฐํŒ…์„ ์„ค์ •ํ•  ๊ฒƒ์ด๋‹ค. API Gateway ํŒŒํŠธ 2 ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์„œ๋ฒ„๋ฅผ 2๊ฐœ ์ด์ƒ ์ค€๋น„ํ•˜์ž. ๋ผ์šฐํŒ…์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” 3๊ฐ€ bu119.tistory.com Spring Cloud Gateway ๋ผ์šฐํŒ…์„ ์„ค์ •ํ–ˆ์ง€๋งŒ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ์ œ๋Œ€๋กœ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค..

[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/r..

[MSA] Spring Cloud Gateway์™€ Netflix Zuul์˜ ์ฐจ์ด์  (API Gateway)

๐Ÿ”Š Spring Cloud Gateway๋ฅผ ํ™œ์šฉํ•˜์—ฌ API Gateway๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ Spring Initializr์—์„œ ์˜์กด์„ฑ์œผ๋กœ Gateway๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์•ˆ ๋˜๊ณ  Reactive Gateway๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ? โ“ API Gateway ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Spring Initializr์—์„œ ์˜์กด์„ฑ์œผ๋กœ Gateway๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค๊ฐ€ ์ดํ›„์— ์„ค์ •๋“ค์ด ์ž˜ ๋˜์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ž˜์„œ ์ด์œ ๋ฅผ ์ฐพ์•„๋ดค๋”๋‹ˆ Reactive Gateway๋ฅผ ์ถ”๊ฐ€ํ–ˆ์–ด์•ผ ํ–ˆ๋‹ค. ์™œ?!!! Gateway๊ฐ€ ์•„๋‹Œ Reactive Gateway๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ• ๊นŒ? ๊ทธ ์ด์œ ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž!! โญ ์˜์กด์„ฑ์— Gateway๊ฐ€ ์•„๋‹Œ Reactive Gateway๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ? ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์—์„œ API Gateway๋ฅผ ๊ตฌ..

[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
๋ฐ˜์‘ํ˜•