[gRPC] gRPC๋ฅผ ํ™œ์šฉํ•œ MSA ๊ฐ„ ํ†ต์‹ , Spring Boot์—์„œ gRPC๋กœ ํ†ต์‹ ํ•˜๊ธฐ (feat. ์„ฑ๋Šฅ ์ธก์ •)

[gRPC] gRPC๋ฅผ ํ™œ์šฉํ•œ MSA ๊ฐ„ ํ†ต์‹ , Spring Boot์—์„œ gRPC๋กœ ํ†ต์‹ ํ•˜๊ธฐ (feat. ์„ฑ๋Šฅ ์ธก์ •)

1. gRPC๋ž€? gRPC๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์•ž์„œ RPC๋ž€ Remote Procedure Call์˜ ์•ฝ์ž๋กœ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์— ์žˆ๋Š” ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์ž๊ธฐ ๊ธฐ๋Šฅ์ธ ๊ฒƒ ์ฒ˜๋Ÿผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.RPC๋Š” ์–ธ์–ด ๋…๋ฆฝ์ ์ด๋ฏ€๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์—์„œ๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.๊ฐœ๋ฐœ์ž๋Š” ์„œ๋ฒ„๋‚˜ ํ†ต์‹  ๊ณผ์ •์— ๋Œ€ํ•ด ํ•˜๋‚˜ํ•˜๋‚˜ ์•Œ์•„๋‘๊ฑฐ๋‚˜ ๊ณ ๋ คํ•  ํ•„์š” ์—†์ด ๋งˆ์น˜ ๋กœ์ปฌ ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ ธ๋‹ค ์“ฐ๋“ฏ ๊ธฐ๋Šฅ๋“ค์„ ํ•„์š”์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค.   gRPC๋Š” ๊ตฌ๊ธ€์—์„œ ๊ฐœ๋ฐœํ•œ ์˜คํ”ˆ์†Œ์Šค ๊ธฐ์ˆ ๋กœ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•œ ํšจ์œจ์ ์ด๊ณ  ๊ฐ„ํŽธํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค. gRPC๋Š” ์ด์ „์˜ RPC ์‹œ์Šคํ…œ๊ณผ ๋‹ฌ๋ฆฌ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ์ง€์› ๋“ฑ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ํ˜„์žฌ๊นŒ..

  • textsms
[Resilience4J] MSA ํ™˜๊ฒฝ์—์„œ์˜ ์žฅ์•  ๋ฐฉ์–ด ์ „๋žต

[Resilience4J] MSA ํ™˜๊ฒฝ์—์„œ์˜ ์žฅ์•  ๋ฐฉ์–ด ์ „๋žต

1. CircuitBreaker๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด ์™ธ๋ถ€ API๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ํŠนํžˆ๋‚˜ ์ „์ฒด์ ์ธ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์ด MSA(Microservice Architecture)๋กœ ๋˜์–ด ์žˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งค์šฐ ๋นˆ๋ฒˆํ•˜๋‹ค.  ๋ฌธ์ œ๋Š” ์„œ๋ฒ„๋“ค์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ธ๋ฐ, ํ˜ธ์ถœํ•œ ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋ฉด ์žฅ์• ๊ฐ€ ์ „ํŒŒ๋˜์–ด, ํ•ด๋‹น ์„œ๋น„์Šค๊นŒ์ง€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•œ ์„œ๋ฒ„์— ๊ณ„์† ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์€ ์žฅ์•  ๋ณต๊ตฌ๋ฅผ ํž˜๋“ค๊ฒŒ ๋งŒ๋“ ๋‹ค.   ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž์˜ ๋Œ€์‹œ๋ณด๋“œ์—์„œ ํ•œ ๋ฒˆ์˜ ์š”์ฒญ์œผ๋กœ ์‚ฌ์šฉ์ž์˜ ์—ฌ๋Ÿฌ ์ •๋ณด๋ฅผ ์กฐํšŒํ•ด ํ•œ ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ์–ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์„ ์ƒ๊ฐํ•ด๋ณด์ž. ์ด ๋Œ€์‹œ๋ณด๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์„œ๋น„์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค.์‚ฌ์šฉ์ž ์ •๋ณด ์„œ๋น„์Šค: ์‚ฌ์šฉ์ž..

  • textsms
MSA ํ™˜๊ฒฝ์—์„œ ์ธ์ฆ, ์ธ๊ฐ€๋Š” ์–ด๋””์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒŒ ์˜ณ์„๊นŒ?

MSA ํ™˜๊ฒฝ์—์„œ ์ธ์ฆ, ์ธ๊ฐ€๋Š” ์–ด๋””์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒŒ ์˜ณ์„๊นŒ?

1. ๊ฐœ์š”MSA๋ฅผ ๋„์ž…ํ•˜๋ฉด์„œ, ํ˜น์€ ๊ณ ๋ คํ•˜๋ฉด์„œ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ์ธ์ฆ ์ธ๊ฐ€์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์„ ํ•˜๊ฒŒ ๋ ๊ฑฐ๋ผ ์ƒ๊ฐํ•œ๋‹ค.  ๋‚˜๋„ Spring Cloud๋ฅผ ์‚ฌ์šฉํ•œ MSA ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ๋กœ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ธ์ฆ, ์ธ๊ฐ€์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์„ ํ•˜๊ฒŒ ๋๋‹ค. ๊ตฌ๊ธ€๋ง ํ•ด๋ณด๋ฉด ํฌ๊ฒŒ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‚˜๋‰˜์—ˆ๋‹ค.  1. Gateway์—์„œ ๋ชจ๋“  ์ธ์ฆ, ์ธ๊ฐ€ ์ฒ˜๋ฆฌ 2. ๊ฐ Micro Service ์—์„œ ์ธ์ฆ, ์ธ๊ฐ€ ์ฒ˜๋ฆฌ    ์ด ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ค‘ ์–ด๋–ค๊ฑธ ์„ ํƒํ•ด์•ผ ํ•  ์ง€์— ๋Œ€ํ•ด ๋งŽ์€ ๊ณ ๋ฏผ์„ ํ–ˆ๋‹ค. ๊ฒฐ๋ก ๋ถ€ํ„ฐ ์–˜๊ธฐํ•˜๋ฉด ํ˜„์žฌ๋Š” Gateway์—์„œ ์ธ์ฆ ์ฒ˜๋ฆฌ, ๊ฐ Micro Service์—์„œ ์ธ๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•ด๋ณธ๊ฒŒ ์•„๋‹ˆ๊ณ  ํ•™์Šตํ•˜๋Š” ๋‹จ๊ณ„์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด ์ƒ๊ฐ์ด ํ‹€๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ์ž ๊ฐœ๋ฐœํ•˜๋Š” ์„œ๋น„์Šค์˜ ๋„๋ฉ”์ธ,..

  • textsms
[๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ] Spring Boot Multi Module๋กœ MSA ํ™˜๊ฒฝ ๊ตฌ์„ฑํ•˜๊ธฐ

[๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ] Spring Boot Multi Module๋กœ MSA ํ™˜๊ฒฝ ๊ตฌ์„ฑํ•˜๊ธฐ

1. ๊ฐœ์š”์˜ˆ์ „์— ๋ดค๋˜ Spring Cloud ๊ฐ•์˜๋ฅผ ๋ณต์Šตํ•˜๋ฉฐ ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ, SAGA ํŒจํ„ด, CQRS ๋“ฑ MSA์— ์‚ฌ์šฉ๋˜๋Š” ์—ฌ๋Ÿฌ ๊ธฐ์ˆ ๋“ค์— ์ตํžˆ๊ธฐ ์œ„ํ•ด ๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ํ•™์Šตํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.  ์ฒ˜์Œ multi module์„ ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค ํ–ˆ๋˜ ๊ฑด kafka ๊ด€๋ จ ์„ค์ •๊ณผ ์ด๋ฒคํŠธ ํ†ต์‹ ์„ ์œ„ํ•œ dto๋“ค์˜ ์ฝ”๋“œ ์ค‘๋ณต ๋•Œ๋ฌธ์ด์—ˆ๋‹ค. MSA ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๋ฉด์„œ๋„ ์ฝ”๋“œ๊ฐ€ ์ค‘๋ณต๋œ๋‹ค๋Š”๊ฒŒ ๋งŽ์ด ๋Š๊ปด์กŒ๊ณ  ๊ณตํ†ต ๋ชจ๋“ˆ๋กœ ๋นผ๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋˜ํ•œ JWT ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆ, ์ธ๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ„ ๋กœ์ง๋„ ์–ด๋””๋กœ ๋นผ์•ผํ•  ์ง€ ๊ณ ๋ฏผ์ด ๋˜์—ˆ๋‹ค.   ์ •๋ง ์˜ˆ์ „์— multi module์— ๋Œ€ํ•ด์„œ ๊ฐ•์˜๋ฅผ ๋ณธ ์ ์ด ์žˆ๋Š”๋ฐ, ๊ทธ ๋• ์ด๋Ÿฐ๊ฒŒ ์žˆ๊ตฌ๋‚˜ ํ•˜๊ณ  ๋„˜์–ด๊ฐ”์ง€๋งŒ ์ด๋ฒˆ์—” ์ œ๋Œ€๋กœ ์•Œ์•„๋ณด๊ณ  multi module๋กœ msa ํ™˜๊ฒฝ์„..

  • textsms
MSA ์•„ํ‚คํ…์ฒ˜์—์„œ API ๋ฌธ์„œ ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌํ•˜๊ธฐ

MSA ์•„ํ‚คํ…์ฒ˜์—์„œ API ๋ฌธ์„œ ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌํ•˜๊ธฐ

1. ๊ฐœ์š”ํ˜„์žฌ Spring Cloud๋ฅผ ์ด์šฉํ•ด์„œ MSA ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ ์ค‘์ด๋‹ค. ๊ธฐ์กด์˜ ๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ฒ˜๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ž‘์„ฑํ•œ API๋ฅผ ํ•˜๋‚˜์˜ API ๋ฌธ์„œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.  ํ•˜์ง€๋งŒ MSA๋Š” ๊ฐ๊ฐ์˜ ๋„๋ฉ”์ธ์— ๋”ฐ๋ผ ํ”„๋กœ์ ํŠธ๊ฐ€ ์กด์žฌํ•˜๊ณ , ๊ฐ๊ฐ์˜ ๋„๋ฉ”์ธ๋งˆ๋‹ค API ๋ฌธ์„œ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์ด API ๋ฌธ์„œ๋“ค์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค ์ž…์žฅ์—์„  ๊ฐ๊ฐ์˜ API ๋ฌธ์„œ ์ฃผ์†Œ๋ฅผ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ต‰์žฅํžˆ ๋ถˆํŽธํ•˜๊ณ  ๋น„ํšจ์œจ์ ์ด๋‹ค.   MSA ํ™˜๊ฒฝ์—์„œ API ๋ฌธ์„œ๋ฅผ ํ•œ ๊ณณ์— ๋ชจ์•„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด์•˜๊ณ  ๊ณต์œ ํ•˜๊ณ ์ž ์ด ๊ธ€์„ ์ž‘์„ฑํ•œ๋‹ค.         2. ์˜์กด์„ฑ ์ถ”๊ฐ€๋จผ์ € Swagger ์‚ฌ์šฉ์„ ์œ„ํ•ด API Gateway์— ์˜์กด์„ฑ ์ถ”๊ฐ€๋ฅผ ํ•ด์ฃผ์ž.  ์—ฌ๊ธฐ ์—์„œ ๊ฐ ๋ฒ„์ „์— ๋งž๋Š” ์˜์กด์„ฑ..

  • textsms