BackEnd

[MSA] ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜(EDA)์˜ ์ด์œ ์™€ ๋ฐ”๋žŒ์งํ•œ ์„ค๊ณ„

ddonghyeo 2024. 12. 28. 22:12

๋ฐ์ดํ„ฐ ํ†ต์‹  ๊ตฌ์กฐ - EDA์˜ ์ด์œ 

์—ฌ๋Ÿฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ถ„๋ฆฌ๋œ ์„œ๋ฒ„๋“ค์˜ ํ†ต์‹ ์€ ๋ถˆ๊ฐ€ํ”ผํ•˜๋‹ค.

 

์„œ๋น„์Šค ๋‚ด์˜ ํ†ต์‹  ๊ตฌ์กฐ, ์„œ๋น„์Šค ๊ฐ„์˜ ํ†ต์‹  ๊ตฌ์กฐ๋Š” ์œ ์—ฐ์„ฑ, ํ™•์žฅ์„ฑ, ํšจ์œจ์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ฒŒ ๋œ๋‹ค.

 

์‹œ๋‚˜๋ฆฌ์˜ค #1

ํ•œ ํŒ€์—์„œ ์ƒˆ๋กœ์šด ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ฑด์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ๋‘ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•œ๋‹ค.

 

  • ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•œ๋‹ค

์ด ์ƒํ™ฉ์—์„œ ๋น ๋ฅด๊ณ  ์‰ฌ์šด ๋ฐฉ๋ฒ•์ผ ๊ฒƒ์ด๋‹ค.

 

์ด๋ฏธ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ , ๋กœ๊น…, ๋ชจ๋‹ˆํ„ฐ๋ง, ๋ฐฐํฌ, ๋กค๋ฐฑ ํ”„๋กœ์„ธ์Šค ๋“ฑ ์—ฌ๋Ÿฌ ํ™˜๊ฒฝ์ด ๊ตฌ์ถ•๋˜์–ด ์žˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ๊ธฐ์กด ์ฝ”๋“œ์™€ ์—ฎ์ด๋ฉฐ ๊ตฌํ˜„์ฒด ๋‚ด๋ถ€ ๊ฒฝ๊ณ„๊ฐ€ ๋ชจํ˜ธํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

๊ฒฐํ•ฉ๋„๋Š” ์˜ฌ๋ผ๊ฐ€๊ณ  ์‘์ง‘๋„๋Š” ๋–จ์–ด์ง€๋Š” ๊ฒƒ์ด๋‹ค.

 

  • ์ƒˆ๋กœ์šด ์„œ๋น„์Šค๋กœ ๊ตฌํ˜„ํ•œ๋‹ค

ํ™•์žฅ์„ฑ์„ ์ƒ๊ฐํ•œ๋‹ค๋ฉด ๋ชจ๋“ˆํ™”ํ•œ ๋…๋ฆฝ์ ์ธ ์‹œ์Šคํ…œ์ด ๋” ์ข‹์•„๋ณด์ด๊ธฐ๋„ ํ•œ๋‹ค.

 

์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์€ ์˜› ๋ฐ์ดํ„ฐ๋„ ์ฐธ์กฐํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๊ธฐ์กด ์„œ๋น„์Šค์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌถ์—ฌ์žˆ๋‹ค.

 

์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ์†Œ๋กœ ๋ณต์‚ฌํ•  ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๊ณ , ๊ทธ ๊ณผ์ •์—์„œ ๋‚ด๋ถ€ ๋กœ์ง์ด ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ์‹ ๊ฒฝ์จ์•ผ ํ•œ๋‹ค.

 

๋˜ํ•œ ๋ณต์‚ฌ ๊ณผ์ •์—์„œ ๊ณผ๋„ํ•œ ๋ถ€ํ•˜, ๋™๊ธฐํ™” ์‹คํŒจ, ์˜์กด๊ด€๊ณ„ ๋ฐœ์ƒ, ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ ๋“ฑ ์—ฌ๋Ÿฌ ๋ฌธ์ œ์ ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณต์‚ฌํ•˜๋”๋ผ๋„, ๊น€๋น ์ง„(stale) ๋ฐ์ดํ„ฐ๊ฐ€ ๋˜์ง€ ์•Š๋„๋ก ๋™๊ธฐํ™” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค.

 

 

์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ํ†ต์‹  ๊ตฌ์กฐ

์œ„ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๊ฒฐํ•ฉ๋„์™€ ํ™•์žฅ์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ์ƒˆ๋กœ์šด ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ, ๋ฐ์ดํ„ฐ์™€ ๊ด€๋ จ๋œ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋“ค์ด ์žˆ๋‹ค.


์‹ค์ œ๋กœ ๋‚˜๋„ MSA ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค๊ณ„ํ•˜๋ฉฐ ์ •๋ง ๋งŽ์ด ๊ณ ๋ฏผํ–ˆ๋˜, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๋ฐ์ดํ„ฐ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

 

  • ์–ด๋–ค ์„œ๋น„์Šค๊ฐ€ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ์œ ํ•ด์•ผ ํ•˜๋Š”์ง€?
  • ๋ฐ์ดํ„ฐ๋Š” ์–ด๋””์— ๋‘์–ด์•ผ ํ•˜๋Š”์ง€?
  • ๋‘ ์„œ๋น„์Šค๊ฐ€ ๋ชจ๋‘ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š”์ง€?

 

์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ํ†ต์‹ ์€ ๊ธฐ์กด์˜ ๊ตฌํ˜„/๋ฐ์ดํ„ฐ ํ†ต์‹  ๊ตฌ์กฐ์˜ ๋Œ€์•ˆ์ด๋‹ค.

 

๋‹น์‹œ MSA๋ฅผ ์ž˜ ๋ชฐ๋ž๋˜ ์‹œ์ ˆ์— ์—ด์‹ฌํžˆ ๊ตฌ๊ธ€๋งํ•ด์„œ ๊ตฌํ˜„ํ•œ ์•„ํ‚คํ…์ฒ˜์ธ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋กœ ํ•ด๊ฒฐํ–ˆ๋‹ค.

 

์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐฉ์‹์€ ๋ฐ์ดํ„ฐ ์ƒ์‚ฐ/์†Œ์œ ์™€ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์ด ์ฒ ์ €ํ•˜๊ฒŒ ๋ถ„๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์—

์„œ๋น„์Šค๋Š” ๋”์ด์ƒ ์ง์ ‘ ์š”์ฒญ-์‘๋‹ต API์— ์–ฝ๋งค์ด์ง€ ์•Š๊ณ , ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ์†Œํ†ตํ•œ๋‹ค.

 

Producer๋Š” ๊ทธ์ € ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆผ์— ์ž˜ ์ •์˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์‚ฐํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

์ด๋ฒคํŠธ ๋ฐ›์•„์„œ ์•Œ์•„์„œ ์จ

 

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

 

๋Š์Šจํ•œ ๊ฒฐํ•ฉ๊ณผ ๋†’์€ ์‘์ง‘๋„๋ฅผ ์ค€์ˆ˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋๋‹ค.

 

๋˜ํ•œ, Producer์™€ Consumer๋Š” Pub/Sub ๊ตฌ์กฐ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ์ƒˆ๋กœ์šด ์„œ๋น„์Šค/๊ธฐ๋Šฅ์€ ์–ธ์ œ๋“ ์ง€ ์ด๋ฒคํŠธ๋ฅผ ๊ตฌ๋…ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ , ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์ถ”์ถœํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

 

๋น„๋™๊ธฐ์‹ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค

๋น„๋™๊ธฐ์‹ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜์˜ ์ค‘์š”ํ•œ ์ด์ ๋“ค์„ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ๋‹ค.

 

  • ์„ธ๋ถ„์„ฑ(granularity) :์„œ๋น„์Šค๊ฐ€ ๊ฒฝ๊ณ„ ์ปจํ…์ŠคํŠธ์— ์•Œ๋งž๊ฒŒ ๋งคํ•‘, ์š”๊ฑด์ด ๋ฐ”๋€Œ์–ด๋„ ์‰ฝ๊ฒŒ ์žฌ์ž‘์„ฑ ํ•  ์ˆ˜ ์žˆ์Œ
  • ํ™•์žฅ์„ฑ(scalability) : ํ•„์š” ์‹œ ๊ทœ๋ชจ๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ผ ์ˆ˜ ์žˆ์Œ
  • ๊ธฐ์ˆ  ์œ ์—ฐ์„ฑ(technological flexibility) : ์„œ๋น„์Šค๋งˆ๋‹ค ํ•„์š”ํ•œ ์–ธ์–ด, ๊ธฐ์ˆ ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ
  • ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ฑด ์œ ์—ฐ์„ฑ(business requirement flexibility) : ๋‹จ์œ„๊ฐ€ ์ž‘์€ ์„œ๋น„์Šค๋Š” ์š”๊ฑด ๋ณ€ํ™”์— ์‹ ์†ํ•˜๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์Œ
  • ๋Š์Šจํ•œ ๊ฒฐํ•ฉ(loosely coupling) : ์–ด๋–ค ํŠน์ •ํ•œ ๊ตฌํ˜„ API์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š์Œ.
  • ์ง€์†์  ์ „๋‹ฌ ์ง€์›(continuous delivery support) : ์˜ฎ๊ธฐ๊ธฐ ์‰ฝ๊ณ  ๊ฐ„ํŽธํ•˜๊ฒŒ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ์Œ.
  • ์šฐ์ˆ˜ํ•œ ์‹œํ—˜์„ฑ(high testability) : ๊ทœ๋ชจ๊ฐ€ ํฐ ๋ชจ๋†€๋ฆฌ์Šค๋ณด๋‹ค ์˜์กด์„ฑ์ด ์ ์–ด ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ์œ ์ง€๊ฐ€ ์‰ฌ์›€.

 

๊ฒฝ๊ณ„ ์ปจํ…์ŠคํŠธ๊ฐ„ ๋Š์Šจํ•œ ๊ฒฐํ•ฉ - EDA์˜ ์„ค๊ณ„

DDD์—์„œ ๋“ฑ์žฅํ•˜๋Š” ๊ฐœ๋…์ธ ๊ฒฝ๊ณ„ ์ปจํ…์ŠคํŠธ(Bounded Context)๋Š” ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ•œ ๊ฐœ์˜ ๋ชจ๋ธ์„ ๊ฐ€์ง€๋ฉฐ, ๊ฐ ๋ชจ๋ธ์˜ ๊ฒฝ๊ณ„๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

 

๊ฒฝ๊ณ„ ์ปจํ…์ŠคํŠธ๋Š” ์‘์ง‘๋ ฅ์ด ๊ฐ•ํ•ด์•ผํ•˜๊ณ , ๊ฒฝ๊ณ„ ์ปจํ…์ŠคํŠธ๋ผ๋ฆฌ๋Š” ๋Š์Šจํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋˜์–ด์•ผ ํ•œ๋‹ค.

 

์‘์ง‘๋„๋Š” ๋†’๊ฒŒ, ๊ฒฐํ•ฉ๋„๋Š” ๋‚ฎ๊ฒŒ

 

ํ‰์†Œ ์•„ํ‚คํ…์ฒ˜, ๊ฐœ๋… ๊ณต๋ถ€๋ฅผ ํ• ๋•Œ ์ž์ฃผ ๋“ฃ๋Š” ๋ง์ด๋‹ค. 

 

๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๊ฒฝ๊ณ„ ์ปจํ…์ŠคํŠธ๋Š” ์–ด๋–ค ๊ธฐ์ค€์„ ์ค‘์‹ฌ์œผ๋กœ ์ •ํ•ด์•ผ ํ• ๊นŒ?

 

 

๊ฒฝ๊ณ„ ์ปจํ…์ŠคํŠธ : ๊ธฐ์ˆ  ์š”๊ฑด vs ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ฑด

๋งŒ์•ฝ ์‡ผํ•‘๋ชฐ ์„œ๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ๊ธฐ์ˆ  ์š”๊ฑด ๋˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ฑด ์ค‘์‹ฌ์œผ๋กœ ๊ฒฝ๊ณ„ ์ปจํ…์ŠคํŠธ๋ฅผ ๊ฒฐ์ •ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

 

 

์–ด๋–ค ํ”„๋กœ๋•ํŠธ์— ๋Œ€ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ฑด์€ ์ˆ˜์‹œ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.

 

๋ฐ˜๋Œ€๋กœ, ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ฑด ๋ณ€๊ฒฝ ์—†์ด ์ œํ’ˆ์˜ ๊ทผ๋ณธ์ ์ธ ๊ตฌํ˜„์ฒด๋ฅผ ๋œฏ์–ด๊ณ ์น˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†๋‹ค.

 

๊ฒฝ๊ณ„ ์ปจํ…์ŠคํŠธ๋ฅผ ๊ธฐ์ˆ  ์š”๊ฑด์ด ์•„๋‹Œ ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ฑด ์ค‘์‹ฌ์œผ๋กœ ์ •ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์ด๋‹ค.

 

ํŒ€๋ณ„๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ฑด์— ๋”ฐ๋ผ ๋‚˜๋ˆ„๊ณ , ๋Š์Šจํ•˜๊ฒŒ ๊ฒฐํ•ฉํ•˜์—ฌ

์‘์ง‘๋œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ๊ฐ ํŒ€๋ณ„ ์š”๊ฑด์—๋งŒ ์ „๋…ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ด์–ด์•ผ ํ•œ๋‹ค.

 

๋งŒ์•ฝ ๊ฒฝ๊ณ„๋ฅผ ๊ธฐ์ˆ  ์š”๊ฑด์— ๋งž์ถ”๊ฒŒ ๋œ๋‹ค๋ฉด, ์—ฌ๋Ÿฌ ๊ฒฝ๊ณ„์— ๊ฑธ์ณ ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ฑ…์ž„์ด ์—ฌ๋Ÿฌ ํŒ€์œผ๋กœ ๋ถ„์‚ฐ๋œ๋‹ค.

 

ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๋ ค๋ฉด ํŒ€๋ณ„๋กœ ๋‹ค๋ฅธ ์Šค์ผ€์ค„๋กœ ์ง„ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋น„ํšจ์œจ์ ์ธ ์ƒํ™ฉ์ด ์ผ์–ด๋‚˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

 

์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ฑด์— ๋”ฐ๋ฅธ ๊ฒฝ๊ณ„ ๋‚ด์—์„œ

๊ฐ ์„œ๋น„์Šค๊ฐ€ ์ฝ”๋“œ, DB๋“ฑ ์ž์‹ ์˜ ๋ ˆ์ด์–ด๋ฅผ ์•Œ์•„์„œ ์ฑ…์ž„์ง€๋Š” ๊ฐ์ž ์†Œ์œ (sole ownership) ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋žŒ์งํ•˜๋‹ค.

 

์—ฌ๊ธฐ์„œ ์ฝ”๋“œ๊ฐ€ ์ค‘๋ณต๋˜๊ฑฐ๋‚˜ ๋น„์Šทํ•œ ํŒจํ„ด์ด ๋‚˜์˜ฌ ์ˆ˜๋„ ์žˆ๋Š”๋ฐ, (์‹ค์ œ๋กœ๋„ ๊ทธ๋žฌ๋‹ค)

์žฅ๊ธฐ์ ์ธ ๊ด€์ ์—์„œ๋Š” ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ๊ฒฝ๊ณ„๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค ๋กœ์ง์„ ๋ฐ˜๋ณตํ•˜๊ฑฐ๋‚˜ ๋น„์Šทํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๊ฒŒ ํ›จ์”ฌ ๋‚ซ๋‹ค.

 

 

 

 

 

์ฐธ๊ณ 
Building Event-Driven Microservices: Leveraging Organizational Data at Scale, ์• ๋ค ๋ฒจ๋ฉ”์–ด