๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
CS/Architecture

MSA์—์„œ ๋งํ•˜๋Š” '๋А์Šจํ•œ ๊ฒฐํ•ฉ'์ด๋ž€?

by agong์ด 2025. 3. 6.

 

๐Ÿ“œ์„œ๋ก 

MSA๋ฅผ ๊ณต๋ถ€ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋А์Šจํ•œ ๊ฒฐํ•ฉ(Loose Coupling)์ด๋ผ๋Š” ๊ฐœ๋…์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ ‘ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

"์„œ๋น„์Šค ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ˜๋‹ค."
"์„œ๋น„์Šค ๊ฐ„ ์˜์กด์„ฑ์„ ๋‚ฎ์ถ˜๋‹ค."
"์„œ๋น„์Šค ๊ฐ„ ์—๋Ÿฌ๊ฐ€ ์ „ํŒŒ๋˜์ง€ ์•Š๋Š”๋‹ค."

 

์ด์ฒ˜๋Ÿผ ๋‹ค์–‘ํ•œ ํ‘œํ˜„์ด ๋“ฑ์žฅํ•˜๋‹ค ๋ณด๋‹ˆ ๋‹ค์†Œ ํ˜ผ๋ž€์ด ์™”์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” MSA์—์„œ ๋งํ•˜๋Š” ์„œ๋น„์Šค ๊ฐ„ ๋А์Šจํ•œ ๊ฒฐํ•ฉ์˜ ์ •ํ™•ํ•œ ์˜๋ฏธ์™€ MSA๊ฐ€ ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ์‹คํ˜„ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

 

"์„œ๋น„์Šค ๊ฐ„์—๋Š” ์ตœ์†Œํ•œ์˜ ์ข…์†์„ฑ์„ ๊ฐ€์ง„๋‹ค"

MSA์—์„œ๋Š” ๊ฐ ์„œ๋น„์Šค๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์„œ๋น„์Šค ๊ฐ„์˜ ์ข…์†์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.
์ฆ‰, ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์ตœ์†Œํ•œ์˜ ์ข…์†์„ฑ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

"์ตœ์†Œํ•œ์˜ ์ข…์†์„ฑ"์ด๋ž€, ์„œ๋น„์Šค ๊ฐ„ ์ง์ ‘์ ์ธ ์˜์กด์„ฑ์„ ์ค„์ด๊ณ  ๋…๋ฆฝ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰, ํ•œ ์„œ๋น„์Šค๊ฐ€ ๋‹ค๋ฅธ ์„œ๋น„์Šค์˜ ์ƒํƒœ๋‚˜ ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ์•Œ ํ•„์š” ์—†์ด ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์‚ฌ์‹ค ์ด๋ ‡๊ฒŒ๋งŒ ๋“ค์—ˆ์„๋•Œ๋Š” ๋Œ€๋žต์ ์œผ๋กœ ๋А๋‚Œ์€ ์˜ค์ง€๋งŒ ๊ทธ๋ž˜์„œ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ๋‚ฎ์ถ˜๋‹ค๋Š” ๊ฒƒ์ธ์ง€ ํ™•์‹คํ•˜๊ฒŒ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด์ œ๋Š” ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์„œ๋น„์Šค๊ฐ„์— ์ตœ์†Œํ•œ์˜ ์ข…์†์„ฑ์„ ๊ฐ–๊ฒŒํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์‚ดํŽด๋ณด๊ธฐ์ „์— ์ด๋ฒˆ๊ธ€์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋‚˜์˜ค๋Š” '๊ฒฐํ•ฉ'์ด๋ž€ ๋‹จ์–ด๋ฅผ ์ƒ๊ฐํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๊ฐ•ํ•œ๊ฒฐํ•ฉ๐Ÿ†š์•ฝํ•œ ๊ฒฐํ•ฉ

 

๊ณต์žฅ์—์„œ ๋”๋ธ” ๋น„์–€์ฝ” ์•„์ด์Šคํฌ๋ฆผ์„ ์ œ์กฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” " ์•„์ด์Šคํฌ๋ฆผ ๋ฐ›์นจ + ์•„์ด์Šคํฌ๋ฆผ + ๋šœ๊ป‘ " ์ด ๋ชจ๋“ ๊ฒŒ ์žˆ์–ด์•ผ ๋”๋ธ” ๋น„์–€์ฝ”๊ฐ€ ์™„์„ฑ๋˜์–ด ํŒ”์ˆ˜์žˆ์Šต๋‹ˆ๋‹ค. 
๊ณต์žฅ์—์„œ ์ œ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์€ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ฒซ๋ฒˆ์จฐ ๋ฐฉ๋ฒ•์€, ์•„์ด์Šคํฌ๋ฆผ ๋ฐ›์นจ์„ ๋งŒ๋“ค๊ณ , ์•„์ด์Šคํฌ๋ฆผ์„ ๋งŒ๋“ ๋’ค์—, ๋šœ๊ป‘์„ ์ œ์ž‘ํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

์ด๋•Œ ๋ ˆ์ผ์ด ๊ณ ์žฅ๋‚˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๋ชจ๋“  ์ œ์ž‘์ด ๋ฉˆ์ถ”๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 

 

 

 

๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ๊ฐ๊ฐ์˜ ๋ ˆ์ผ ์œ„์— ๋‘๊ณ  ์žฌ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋์„ ๋•Œ ๋šœ๊ป‘ ๋ ˆ์ผ์ด ๊ณ ์žฅ๋‚˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๋šœ๊ป‘ ์ œ์ž‘๋งŒ ๋ฉˆ์ถ”๊ณ  ๋‹ค๋ฅธ ๋ ˆ์ผ์€ ์ •์ƒ์ ์œผ๋กœ ๊ณ„์†ํ•ด์„œ ์ œ์ž‘์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋‚˜์ค‘์— ๋šœ๊ป‘ ๋ ˆ์ผ๋งŒ ๋Š˜๋ ค์„œ ๋” ๋งŒ๋“ค ์ˆ˜ ๋„์žˆ๊ณ , ๋‹ค๋ฅธ ๋ ˆ์ผ๋“ค์€ ์‰ฌ๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์‹ค์ œ๋กœ ์•„์ด์Šคํฌ๋ฆผ ์ œ์ž‘์‹œ๊ฐ„์ด ๋šœ๊ป‘ ์ œ์ž‘๋ณด๋‹ค ์˜ค๋ž˜ ๊ฑธ๋ฆดํ…Œ๋‹ˆ๊น ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†“์„ ์ˆ˜ ๋„์žˆ๊ฒ ์ฃ ? 


๋‘๊ฐ€์ง€ ์ฐจ์ด๋ฅผ ์•„์‹œ๊ฒ ๋‚˜์š”? ์œ„์—๋Š” ๊ฐ•ํ•œ๊ฒฐํ•ฉ์„ ์˜๋ฏธํ•˜๊ณ , ๋ฐ‘์—๋Š” ์•ฝํ•œ ๊ฒฐํ•ฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜๋ ˆ์ผ๋กœ๋งŒ ๋™์ž‘ํ•œ๋‹ค๋ฉด ๋ชจ๋“  ์žฌ๋ฃŒ๋“ค์— ์˜ํ–ฅ์ด ๊ฐ€์ง€๋งŒ, ๊ฐ๊ฐ์˜ ๋ ˆ์ผ๋กœ ๋™์ž‘ํ•œ๋‹ค๋ฉด ํŠน์ • ๊ณ ์žฅ๋‚œ ๋ ˆ์ผ์˜ ์žฌ๋ฃŒ์—๋งŒ ์˜ํ–ฅ์ด ๊ฐ€์ฃ .

 

MSA๋Š” ๋ฐ”๋กœ ์•ฝํ•œ ๊ฒฐํ•ฉ์„ ํ•˜๊ธฐ์œ„ํ•ด ๊ณ ์•ˆ๋œ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด MSA๋Š” ์–ด๋–ป๊ฒŒ ์•ฝํ•œ ๊ฒฐํ•ฉ์„ ํ• ๊นŒ์š”?

 

 

 

1. ์„œ๋น„์Šค ๊ฐ„ ์ง์ ‘์ ์ธ HTTP ํ˜ธ์ถœ์„ ์ตœ์†Œํ™”  
 

โ—[๋‚˜์œ ์˜ˆ์‹œ: ๊ฐ•ํ•œ ๊ฒฐํ•ฉ]

  Order-service → Payment-service (์ง์ ‘ HTTP ํ˜ธ์ถœ)

 

๐Ÿšจ๋ฌธ์ œ์ 

  • Payment-service๊ฐ€ ๋‹ค์šด๋˜๋ฉด Order-service๋„ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์—†์Œ
  • Payment-service์˜ API๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด, Order-service๋„ ํ•จ๊ป˜ ์ˆ˜์ •ํ•ด์•ผ ํ•จ
  • ํ•˜๋‚˜์˜ ์„œ๋น„์Šค์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ๋‹ค๋ฅธ ์„œ๋น„์Šค๋กœ๋„ ์žฅ์• ๊ฐ€ ์ „ํŒŒ๋จ

์ด์ฒ˜๋Ÿผ ํ•œ ์„œ๋น„์Šค๊ฐ€ ๋‹ค๋ฅธ ์„œ๋น„์Šค์˜ ์ƒํƒœ์™€ ๊ตฌํ˜„ ๋ฐฉ์‹์— ์ง์ ‘์ ์œผ๋กœ ์˜์กดํ•˜๋ฉด, ๊ฒฐ๊ตญ ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ ์„œ๋กœ ์–ฝํ˜€๋ฒ„๋ ค ๋ณ€๊ฒฝ์ด ์–ด๋ ค์›Œ์ง€๊ณ  ๊ทธ๋ ‡๊ฒŒ ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ ๋‹ค์šด๋ฉ๋‹ˆ๋‹ค.

 

' ๊ทธ๋Ÿฐ๋ฐ ๊ทธ๊ฑด ๋น„๋™๊ธฐ๋„ ๋˜‘๊ฐ™์€๊ฑฐ ์•„๋‹Œ๊ฐ€? ' ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“œ์‹ค์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๋น„๋™๊ธฐ ํ†ต์‹  ๋ฐฉ์‹์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

 

Order-service → ๋ฉ”์‹œ์ง€ ํ(RabbitMQ, Kafka) → Payment-service (๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง•)

Order-service๊ฐ€ ๊ฒฐ์ œ ์š”์ฒญ์„ ๋ฉ”์‹œ์ง€ ํ์— ๋„ฃ๊ณ  ๋ฐ”๋กœ ๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•จ
Payment-service๋Š” ๋ฉ”์‹œ์ง€ ํ์—์„œ ์š”์ฒญ์„ ๊ฐ€์ ธ์™€ ๊ฒฐ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•จ

 

์žฅ์ 

  • Payment-service๊ฐ€ ๋‹ค์šด๋˜๋”๋ผ๋„ Order-service๋Š” ์ •์ƒ์ ์œผ๋กœ ์ฃผ๋ฌธ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
  • Payment-service๊ฐ€ ๋‹ค์‹œ ์‚ด์•„๋‚˜๋ฉด, ๋ฉ”์‹œ์ง€ ํ์— ์Œ“์ธ ์š”์ฒญ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ(์ด๋•Œ, ๊ฒฐ์ œ์ฒ˜๋ฆฌํ•˜๋ฉด๋จ)
  • Payment-service์˜ ๋‚ด๋ถ€ ๊ตฌํ˜„์ด ๋ฐ”๋€Œ๋”๋ผ๋„ Order-service์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ

 

์ฐจ์ด๋ฅผ ์•„์‹œ๊ฒ ๋‚˜์š”? ๋น„๋™๊ธฐ ๋ฐฉ์‹์—์„œ๋Š” Payment-service๊ฐ€ ๋‹ค์šด๋˜๋”๋ผ๋„ ์ผ๋‹จ Order-service๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ํ›„์— ๋‹ค์‹œ Payment-service๊ฐ€ ์‚ด์•„๋‚˜๋ฉด ๊ทธ๋•Œ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฒŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, Payment-service์˜ ์žฅ์• ๊ฐ€ Order-service์—๊ฒŒ๊นŒ์ง€ ์ „ํŒŒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก๋ฌผ๋ก  ๋™๊ธฐ๋ฐฉ์‹์˜ ํ†ต์‹ ์—์„œ ์žฅ์•  ์ „ํŒŒ ์œ„ํ—˜๋“ฑ์€ ์„œํ‚ท๋ธŒ๋ ˆ์ด์ปค๋“ฑ์„ ํ™œ์šฉํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค๋Š” ๋‹จ์ˆœํžˆ ์žฅ์• ๋ฅผ ๊ฐ์ง€๋งŒ ํ•  ๋ฟ ์‹คํŒจํ•œ ์š”์ฒญ์„ ๋ณด์กดํ•  ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

 


2. ์„œ๋น„์Šค ๊ฐ„ DB๋ฅผ ๋ถ„๋ฆฌ

MSA์—์„œ๋Š” ๊ฐ ์„œ๋น„์Šค๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ๊ฐ ์„œ๋น„์Šค๋Š” ์ž์‹ ๋งŒ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB)๋ฅผ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

์ฆ‰, ์„œ๋น„์Šค ๊ฐ„ DB๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ ์›์น™์ž…๋‹ˆ๋‹ค.

 

์™œ ์„œ๋น„์Šค ๊ฐ„ DB๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผ ํ• ๊นŒ?

 

[๋‚˜์œ ์˜ˆ์‹œ: ๋‹จ์ผ DB๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒฝ์šฐ]

Order-service, Payment-service → ํ•˜๋‚˜์˜ DB ์‚ฌ์šฉ

๐Ÿšจ๋ฌธ์ œ์ 

  • ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ง → Payment-service๊ฐ€ DB๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด Order-service๋„ ์˜ํ–ฅ์„ ๋ฐ›์Œ
  • ํ™•์žฅ์„ฑ์ด ๋‚ฎ์Œ → ํŠน์ • ์„œ๋น„์Šค์— ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๋ฉด, ๋‹ค๋ฅธ ์„œ๋น„์Šค์—๋„ ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
  • ์žฅ์•  ์ „ํŒŒ ๊ฐ€๋Šฅ์„ฑ → ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๊ฐ€ DB ์„ฑ๋Šฅ์„ ๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด, ์ „์ฒด ์‹œ์Šคํ…œ์ด ๋А๋ ค์งˆ ์ˆ˜ ์žˆ์Œ

[์ข‹์€ ์˜ˆ์‹œ: ์„œ๋น„์Šค๋ณ„ ๋…๋ฆฝ์ ์ธ DB ์‚ฌ์šฉ]

Order-service → Order-DB
Payment-service → Payment-DB

๐Ÿ˜Š ์žฅ์ 

  • ์„œ๋น„์Šค ๊ฐ„ ์™„์ „ํ•œ ๋…๋ฆฝ์„ฑ ๋ณด์žฅ → ํ•œ ์„œ๋น„์Šค์˜ ๋ณ€๊ฒฝ์ด ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ
  • ํ™•์žฅ์„ฑ ํ–ฅ์ƒ → ๊ฐ ์„œ๋น„์Šค๊ฐ€ ์ž์‹ ์˜ DB๋ฅผ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Œ
  • ์žฅ์•  ๊ฒฉ๋ฆฌ ๊ฐ€๋Šฅ → ํŠน์ • ์„œ๋น„์Šค๊ฐ€ ์žฅ์• ๋ฅผ ์ผ์œผ์ผœ๋„ ๋‹ค๋ฅธ ์„œ๋น„์Šค์˜ DB์—๋Š” ์˜ํ–ฅ ์—†์Œ

๊ณ„์†ํ•ด์„œ ๊ฒฐํ•ฉ๋„, ์žฅ์• ์ „ํŒŒ ๊ฐ™์€ ๋‹จ์–ด๊ฐ€ ๋ฐ˜๋ณต๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋А๋ผ์…จ๋‚˜์š”? 

์ •๋ฆฌํ•˜์ž๋ฉด ํ•˜๋‚˜์˜ ์„œ๋น„์Šค์—์„œ DB์— ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋ฉด, ๋‹ค๋ฅธ ๋ชจ๋“ ์„œ๋น„์Šค์— ์˜ํ–ฅ์ด ๊ฐ‘๋‹ˆ๋‹ค. ๋˜๋Š” DB๋ฅผ ์ˆ˜์ •ํ• ๊ฒฝ์šฐ์—๋„ ๋ชจ๋“  ์„œ๋น„์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๊นŠ๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ์•Š์•„๋„ ์‚ฌ์‹ค ๋‹ค๋ฅธ ์„œ๋น„์Šค์—๊ฒŒ ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด์„œ ํž˜๋“ค๊ฒŒ ์„œ๋น„์Šค๋ฅผ ๋ถ„๋ฆฌ์‹œ์ผœ๋†จ๋Š”๋ฐ  DB๋ฅผ ๊ณต์œ ํ•˜๋ฉด ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง‘๋‹ˆ๋‹ค. ํŠน์ • ์„œ๋น„์Šค๊ฐ€ DB ๋ง๊ฐ€๋œจ๋ฆฌ๋ฉด ๋‹ค๋ฅธ ์„œ๋น„์Šค๋„ ์™€๋ฅด๋ฅด 

 


3. API ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์„œ๋น„์Šค ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ˜๋‹ค

MSA์—์„œ๋Š” ๊ฐ ์„œ๋น„์Šค๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•ด์•ผ ํ•˜์ง€๋งŒ,
ํด๋ผ์ด์–ธํŠธ(์›น, ๋ชจ๋ฐ”์ผ ์•ฑ ๋“ฑ) ์ž…์žฅ์—์„œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋น„์Šค๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ, ๊ฐ ์„œ๋น„์Šค์˜ ์ƒํƒœ๋ฅผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค๋ฉด, ์„œ๋น„์Šค ๊ฐ„ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด API ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค

 

 API๊ฒŒ์ดํŠธ์›จ์ด๋Š” ํด๋ผ์ด์–ธํŠธ ํŽธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š”๊ฑฐ ์•„๋‹ˆ์•ผ?
-> ํด๋ผ์ด์–ธํŠธ๋„ ์„œ๋น„์Šค๋‹ค. ์ฆ‰, ํด๋ผ์ด์–ธํŠธ ์„œ๋น„์Šค์™€ MSA์„œ๋น„์Šค๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ˜๋‹ค.

 

API ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ์„œ๋น„์Šค ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๋Š” ์ด์œ 

ํด๋ผ์ด์–ธํŠธ → API ๊ฒŒ์ดํŠธ์›จ์ด → ๊ฐœ๋ณ„ ์„œ๋น„์Šค ํ˜ธ์ถœ

์žฅ์ 
1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐœ๋ณ„ ์„œ๋น„์Šค์˜ ์ƒํƒœ๋ฅผ ๋ชฐ๋ผ๋„ ๋จ

  • API ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ๊ฐœ๋ณ„ ์„œ๋น„์Šค์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ์ผ๋ถ€ ์„œ๋น„์Šค๊ฐ€ ๋‹ค์šด๋˜์–ด๋„ ์ผ๊ด€๋œ ์‘๋‹ต์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Œ.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, Order-service๋Š” ์ •์ƒ์ธ๋ฐ Payment-service๊ฐ€ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋ฉด?
    → API ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ Payment-service์˜ ์‘๋‹ต์„ ์บ์‹ฑ๋œ ๋ฐ์ดํ„ฐ๋กœ ๋Œ€์ฒดํ•˜๊ฑฐ๋‚˜,
    "ํ˜„์žฌ ๊ฒฐ์ œ ์ฒ˜๋ฆฌ๊ฐ€ ์ง€์—ฐ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค."์™€ ๊ฐ™์€ ์šฐํšŒ ์‘๋‹ต์„ ์ค„ ์ˆ˜ ์žˆ์Œ.

2. ์„œ๋น„์Šค ์žฅ์•  ์‹œ ์ค‘์•™์—์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐœ๋ณ„ ์„œ๋น„์Šค์˜ ์žฅ์•  ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ํ•„์š” ์—†์ด,
    API ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ์ด๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์ ์ ˆํ•œ ์‘๋‹ต์„ ์ค„ ์ˆ˜ ์žˆ์Œ.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ์ผ๋ถ€ ์„œ๋น„์Šค๊ฐ€ ๋‹ค์šด๋˜์—ˆ์„ ๊ฒฝ์šฐ ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€
    "์ผ๋ถ€ ์„œ๋น„์Šค๊ฐ€ ํ˜„์žฌ ์ด์šฉ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค."๋ผ๋Š” ๊ณตํ†ต ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ.

3. Fallback(๋Œ€์ฒด ์‘๋‹ต) ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

  • ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ํ†ตํ•ด ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ๋™์ž‘ํ•˜์ง€ ์•Š์•„๋„ ์ „์ฒด ์„œ๋น„์Šค๊ฐ€ ์ •์ƒ ์ž‘๋™ํ•˜๋„๋ก ์„ค๊ณ„ ๊ฐ€๋Šฅ
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ๋ฌธ์„œ๋น„์Šค๊ฐ€ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ด๋„,
    API ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ "ํ˜„์žฌ ์ฃผ๋ฌธ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."๋ผ๋Š” ๊ธฐ๋ณธ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Œ.

์ฆ‰, API ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ํ™œ์šฉํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ์™€ MSA ์„œ๋น„์Šค๋“ค ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋„ ๋‚ฎ์ถฐ์ฃผ๋Š” ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿค ๊ฒฐ๋ก : MSA์—์„œ ๋А์Šจํ•œ ๊ฒฐํ•ฉ์„ ์œ ์ง€ํ•˜๋Š” ํ•ต์‹ฌ ์›์น™

1. ์ง์ ‘์ ์ธ HTTP ํ˜ธ์ถœ์„ ์ตœ์†Œํ™”ํ•˜๊ณ , ๋ฉ”์‹œ์ง€ ํ ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ํ†ต์‹ ์„ ํ™œ์šฉํ•œ๋‹ค.
2. ์„œ๋น„์Šค๋ณ„ ๋…๋ฆฝ์ ์ธ DB๋ฅผ ์šด์˜ํ•˜์—ฌ, ๋ฐ์ดํ„ฐ ์ข…์†์„ฑ์„ ์ค„์ธ๋‹ค.
3. API ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ๋„์ž…ํ•˜์—ฌ, ์„œ๋น„์Šค ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ์žฅ์•  ์ „ํŒŒ๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค.

 

์ด ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ ์šฉํ•˜๋ฉด, ์„œ๋น„์Šค ๊ฐ„ ๋…๋ฆฝ์„ฑ์ด ๋ณด์žฅ๋˜์–ด ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ํ–ฅ์ƒ๋˜๊ณ , ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์„œ๋น„์Šค ์ „์ฒด์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉฐ, ํ™•์žฅ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์ด ๋›ฐ์–ด๋‚œ MSA ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

'CS > Architecture' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

DDD ํ•ต์‹ฌ๋งŒ ๋ณด๊ณ ๊ฐ€์ž  (0) 2025.02.27

๋Œ“๊ธ€