Architecture

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜(MSA) ์•Œ์•„๋ณด๊ธฐ

91MS 2022. 7. 2. 22:29
๐Ÿ› 
๐Ÿ“Œ
3์ค„ ์š”์•ฝ
  1. MSA๋Š” ์€ํƒ„ํ™˜์ด ์•„๋‹ˆ๋‹ค.
  1. ๋งˆ์ง€๋ง‰ ์ˆ˜๋‹จ์ด MSA์ผ ๋•Œ ๋„์ž…ํ•ด์•ผ ๊ฐ€์žฅ ์ด์ƒ์ ์ด๋‹ค.
  1. ๋งŽ์€ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๊ฒช์€ ์„ ๋ฐฐ ๊ฐœ๋ฐœ์ž ๋ถ„๋“ค์—๊ฒŒ ๊ฐ์‚ฌํ•จ์„ ์ „ํ•ฉ๋‹ˆ๋‹ค.


MSA๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

MSA๋Š” ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ์•„ํ‚คํ…์ณ์˜ ์ค„์ž„๋ง์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์‚ฌ์ „์  ์ •์˜๋Š” ๋ฌด์—‡์ผ๊นŒ?

์„ธ๊ณ„์—์„œ ์œ ๋ช…ํ•œ ๊ธฐ์—…์ธ aws์—์„œ ๋‚ด๋ฆฐ ์ •์˜๋ฅผ ์‚ดํŽด๋ณด์ž.

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ž˜ ์ •์˜๋œ API๋ฅผ ํ†ตํ•ด ํ†ต์‹ ํ•˜๋Š” ์†Œ๊ทœ๋ชจ์˜ ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ์กฐ์ง์  ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๊ฝค๋‚˜ ๋‹ต๋ณ€์ด ์–ด๋ ต๊ฒŒ ์ ํ˜€์žˆ๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„๋งŒ ์ถ”์ถœํ•ด๋ณด์ž.

API๋ฅผ ํ†ตํ•ด ํ†ต์‹ ํ•˜๋Š” ์†Œ๊ทœ๋ชจ์˜ ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค ์ด๊ฒƒ์ด ํ•ต์‹ฌ!

์—ฌ๊ธฐ์„œ API๋Š” http ํ†ต์‹ ์ด ๋ ์ˆ˜๋„ ์žˆ๊ณ  ๋ฉ”์„ธ์ง€๊ธฐ๋ฐ˜์˜ ์ด๋ฒคํŠธ๋ฐฉ์‹์ด ๋ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ ๋‚˜๋ฆ„๋Œ€๋กœ(?) ์ƒ๊ฐํ•œ ์ •์˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก
๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์„œ๋น„์Šค(Monolith)๋ฅผ ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค ๋‹จ์œ„๋กœ ์ž˜๊ฒŒ(Micro) ๋‚˜๋ˆ„์–ด ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๊ฐ€ ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉ(API, Message)ํ•˜์—ฌ ๊ฑฐ๋Œ€ํ•œ ์„œ๋น„์Šค๋ฅผ ์ด๋ฃจ๋Š” ๊ฒƒ

์—ฌ๊ธฐ์„œ ์ž˜๊ฒŒ(Micro)์˜ ๋‹จ์œ„๋Š” ์ ์šฉ๋Œ€์ƒ์— ๋”ฐ๋ผ ๋‹จ์œ„๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ์„ค๋ช…ํ•˜๋Š” ๋‹จ์œ„๋Š” ๊ฐ€์žฅ ํ”ํžˆ ์‚ฌ์šฉ๋˜๋Š” ์„œ๋ฒ„ ๋‹จ์œ„๋ผ ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด๊ฒŒ ์™œ ๊ทธ๋ ‡๊ฒŒ ํ•ซํ•œ๋ฐ?

์š”์ฆ˜ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ๊ณต๊ณ ๋ฅผ ๋ณด๋ฉด ์šฐ๋Œ€์‚ฌํ•ญ์— ๋น ์ง€์ง€ ์•Š๊ณ  ์ ํ˜€์žˆ๋Š” ๊ฒƒ์„ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€ข MSA ํ™˜๊ฒฝ์˜ ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ, ๊ณ  ๊ฐ€์šฉ์„ฑ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ์— ๊ด€์‹ฌ์ด ๋งŽ์€ ๋ถ„

โ€ข MSA ๊ธฐ๋ฐ˜ ๋Œ€์šฉ๋Ÿ‰ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ ๋””์ž์ธ ์„ค๊ณ„

โ€ข MSA, SOA ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ๊ฒฝํ—˜ํ•ด ๋ณด์‹  ๋ถ„

๊ทธ๋ ‡๋‹ค๋ฉด, ์™œ ์ด๋ ‡๊ฒŒ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ณ๊ฐ€ ์ด๋ ‡๊ฒŒ ํ•ซํ•œ๊ฒƒ์ผ๊นŒ์š”?

์ œ ๋‚˜๋ฆ„๋Œ€๋กœ์˜ ๊ฒฐ๋ก ์„ ๋จผ์ € ๋ง์”€๋“œ๋ฆฌ์ž๋ฉด, ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์€ ์„œ๋น„์Šค๋“ค์ด ํ•ด๊ฒฐํ•ด์•ผํ•˜๋Š” ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•ด ๋Œ€์‘ํ•˜๊ธฐ์œ„ํ•œ ํ•„์ˆ˜์กฐ๊ฑด์ด ์•„๋‹Œ ํ•„์š”์กฐ๊ฑด ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋„ทํ”Œ๋ฆญ์Šค์™€ ๊ฐ™์ด ์ด์šฉ์ž๊ฐ€ ์••๋„์ ์œผ๋กœ ๋งŽ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ํ•„์š”์กฐ๊ฑด์ด ์•„๋‹Œ ํ•„์ˆ˜์กฐ๊ฑด์ด ๋˜๊ฒ ์ง€์š”

๊ฒฐ๊ตญ ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ๋‹นํ•˜๊ธฐ ์œ„ํ•œ โ† ์žฅ์• ๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•œ ์ƒ์กด์˜ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•˜์…”์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๊ณ  ๋ฌด์กฐ๊ฑด์ ์œผ๋กœ MSA๊ฐ€ ์ข‹๋‹ค๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ์„œ๋น„์Šค๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์€ ๋งค์šฐ๋งค์šฐ ์•ˆ์ข‹์Šต๋‹ˆ๋‹ค.

MSA๋Š” ์€ํƒ„ํ™˜์ธ๊ฐ€?

์ ˆ๋Œ€ ์ ˆ๋Œ€ ์€ํƒ„ํ™˜์ด ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ชจ๋†€๋ฆฌ์Šค๊ฐ€ ์ ํ•ฉํ•œ ๊ฒฝ์šฐ๋„ ๋งŽ์Šต๋‹ˆ๋‹ค.

๋‹จ์ ์ธ ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด์šฉ์ž๊ฐ€ ๋ณ„๋กœ ์—†๋Š” ์‚ฌ๋‚ด์„œ๋น„์Šค๋ฅผ MSA๋กœ ๊ตฌ์ถ•ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

(์‚ฌ๋‚ด์„œ๋น„์Šค ์ค‘์—์„œ๋„ ํŠธ๋ž˜ํ”ฝ์ด ๋„˜์น˜๋Š” ์„œ๋น„์Šค๋“ค์€ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.)

๋ชจ๋†€๋ฆฌ์Šค๋ผ๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ @Transactional๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค์„ ๋ถ„์‚ฐ๋œ ํ™˜๊ฒฝ์—์„  ํŠธ๋žœ์žญ์…˜์„ ๊ด€๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊นŠ๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ ๋„, ๋ฒŒ์จ ๋กค๋ฐฑ์„ ์–ด๋–ป๊ฒŒํ•˜์ง€? ๊ณค๋ž€ํ•˜๋„ค.. ๋ผ๊ณ  ์ƒ๊ฐ์ด ๋“œ์‹ค๊ฒ๋‹ˆ๋‹ค.

(์ƒ์„ธํ•œ ๋‚ด์šฉ์€ https://waspro.tistory.com/734 ์ด ๋ธ”๋กœ๊ทธ์˜ ๊ธ€์„ ํ™•์ธํ•ด๋ณด์„ธ์š”)

์ด์ฒ˜๋Ÿผ ๋ชจ๋†€๋ฆฌ์Šค๋กœ ๊ฐœ๋ฐœํ•˜๋˜ ์ ์ง„์ ์œผ๋กœ MSA ํ™˜๊ฒฝ์œผ๋กœ ๊ฐ€๊ฒŒ๋˜๋Š” ๊ฒƒ์ด์ง€, ์‹œ์ž‘๋ถ€ํ„ฐ MSAํ™˜๊ฒฝ์€ ๋งค์šฐ ์˜ณ์ง€ ๋ชปํ•œ ์„ค๊ณ„์ž…๋‹ˆ๋‹ค.

So my primary guideline would be don't even consider microservices unless you have a system that's too complex to manage as a monolith. The majority of software systems should be built as a single monolithic application. Do pay attention to good modularity within that monolith, but don't try to separate it into separate services. - Martin Fowler
๋”ฐ๋ผ์„œ ์ €์˜ ์ฃผ์š” ์ง€์นจ์€ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋†€๋ฆฌ์Šค๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ฉด ๋ง์ด์ฃ . ๋Œ€๋ถ€๋ถ„์˜ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์€ ๋ชจ๋†€๋ฆฌ์Šค๋กœ ๊ตฌ์ถ•๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋…ธ๋ฆฌ์Šค ๋‚ด์˜ ๋ชจ๋“ˆํ™”์— ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด๋˜, ์ด๋ฅผ ๋ณ„๋„์˜ ์„œ๋น„์Šค๋กœ ๋ถ„๋ฆฌํ•˜๋ ค๊ณ  ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. - ๋งˆํ‹ด ํŒŒ์šธ๋Ÿฌ

์ด์ฒ˜๋Ÿผ ์„œ๋น„์Šค๊ฐ€ ์ปค์ง€๋ฉด์„œ ์‹œ์Šคํ…œ์ด ๋ณต์žกํ•ด์ง€๊ณ  MSA๋กœ ๋„˜์–ด๊ฐˆ๋•Œ ํ•„์š”ํ•œ ๋ฐฐํฌ, ๋ชจ๋‹ˆํ„ฐ๋ง, ์žฅ์• ์ฒ˜๋ฆฌ, ์ตœ์ข… ์ผ๊ด€์„ฑ, ๋ถ„์‚ฐ ์‹œ์Šคํ…œ๋“ฑ๋“ฑ ๊ฒƒ๋“ค ๋ณด๋‹ค ๋น„์šฉ์ด ํฌ๋‹ค๋ฉด MSA๋ฅผ ์ ์šฉํ•ด์•ผ๋˜๋Š” ์ˆœ๊ฐ„์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

MSA์˜ ์ง„์‹ค

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ์ž˜๋ชป ์„ค๊ณ„๋˜์—ˆ์„ ๋•Œ ํ™•์žฅํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€๋งŒ ํ™•์žฅํ•œ ๋‹ค์Œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šคํ™”ํ•˜๋Š” ๊ฒƒ์€ ์‰ฝ์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ฐ„์— ์•ˆ์ •์ ์ธ ๊ฒฝ๊ณ„(bounded context)๋ฅผ ๊ฐ€์งˆ ๋•Œ ์ž˜ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋น„์ฆˆ๋‹ˆ์Šค๊ฐ€ ์ถ”๊ฐ€๋˜๊ณ  ๋ณ€๊ฒฝ๋œ๋‹ค๋ฉด ๋ฆฌํŒฉํ† ๋ง์˜ ๋ณต์žก๋„๋Š” ๋ชจ๋†€๋ฆฌ์Šค๋ณด๋‹ค ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ํ›จ์”ฌ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋จผ์ € ๋ชจ๋†€๋ฆฌ์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅธ ๊ฒฝ๊ณ„๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํŒŒ์•…ํ•œ ํ›„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

MSA ์žฅ/๋‹จ์ 

๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋Š” ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•œ ์•„ํ‚คํ…์ณ ์ž…๋‹ˆ๋‹ค.

์žฅ์• ๊ฐ€ ๋‚  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜๊ณ  ์„œ๋น„์Šค๊ฐ„ ์žฅ์• ์˜ ์ „ํŒŒ๋ฅผ ๋ง‰๊ณ  ๋‹จ์ผ์žฅ์• ์ง€์ ์„ ์—†์•  ์žฅ์•  ๋‚ด์„ฑ์„ ๊ฐ•ํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ด์ปค๋จธ์Šค ์„œ๋น„์Šค๊ฐ€ ๋ฌผ๊ฑด์„ ๊ตฌ๋งคํ•˜๋Š”๋ฐ ๊ฒฐ์ œDB์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๊ฒฐ์ œDB์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ ์ƒํ’ˆ ๊ฒ€์ƒ‰๋„ ์—ฐ์‡„์ ์œผ๋กœ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ด ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ ๋‹ค์šด๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๊ทธ ์ดํ›„ ๊ฒฐ์ œ ์„œ๋น„์Šค๊ฐ€ ์ •์ƒ์ž‘๋™๋˜๋ฉด ๋“ค์–ด์˜จ ์ด๋ฒคํŠธ ์ˆœ์„œ๋Œ€๋กœ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๊ฒŒ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ํฐ ์žฅ์ ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์„ ์ฐฉ์ˆœ ์ด๋ฒคํŠธ์ฒ˜๋Ÿผ ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ ค ๋ถ€ํ•˜๊ฐ€ ์˜ˆ์ƒ๋˜๋Š” ์‹œ๊ฐ„์— ์˜คํ† ์Šค์ผ€์ผ์„ ํ†ตํ•ด ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ์„ ์‰ฝ๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ข‹์€์ ์ด ์žˆ์œผ๋ฉด ๋”ฐ๋ผ์˜ค๋Š” ๋‹จ์ ๋„ ์กด์žฌํ•˜๋Š”๋ฐ, ๊ทธ๊ฒƒ์€ ๋ฐ”๋กœ ์œ„์—์„œ ์„ค๋ช…ํ•œ ๋น„์šฉ๋ฐœ์ƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋†€๋ฆฌ์Šค ์„œ๋น„์Šค๋ก  ๊ณ ๋ฏผํ•  ํ•„์š”์—†๋Š” ์ƒํ™ฉ๋“ค์„ ๋งŽ์€ ๋น„์šฉ์„ ๋ฐœ์ƒ์‹œ์ผœ ๊ตฌ์„ฑํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœํ›„์˜ ์ˆ˜๋‹จ์œผ๋กœ ์ƒ๊ฐํ•˜์—ฌ ๋„์ž…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„ฑ๊ณต์ ์ธ MSA ์‚ฌ๋ก€ - ์šฐ์•„ํ•œํ˜•์ œ๋“ค

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

๐Ÿ’ก
์ด ์˜์ƒ์€ ๋งค์šฐ๋งค์šฐ ์œ ์ตํ•˜๋‹ˆ ๊ผญ! ์‹œ์ฒญํ•˜๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์˜์ƒ ๋‚ด์šฉ์„ ์š”์•ฝํ•ด๋ณด์ž๋ฉด ํฌ๊ฒŒ 4๊ฐ€์ง€์˜ ์„œ์‚ฌ๋กœ ์ด๋ค„์ง‘๋‹ˆ๋‹ค.

๋ชจ๋†€๋ฆฌ์Šค ํ™˜๊ฒฝ์˜ ์น˜ํ‚จ ๋””๋„์Šค

  • 2015๋…„ ๋ฐฐ๋‹ฌ์˜ ๋ฏผ์กฑ์€ ๋ฃจ๋น„DB ํ•˜๋‚˜๋กœ ์ „์ฒด ์„œ๋น„์Šค๋ฅผ ์šด์˜์ค‘์ด์—ˆ์Œ
  • ์น˜ํ‚จ์ด๋ฒคํŠธ(์น˜ํ‚จ๋””๋„์Šค) ๊ณต๊ฒฉ์— ํ”„๋ก ํŠธ์„œ๋ฒ„๊ฐ€ ์ฃฝ์Œ
  • IDC โ†’ AWS ํ•˜๋ฃจ๋งŒ์— ์ด์ „
  • AWS ์ด์ „ํ–ˆ๊ธฐ๋•Œ๋ฌธ์— ์Šค์ผ€์ผ์•„์›ƒ 100๋Œ€์ฆ์„ค
  • ๊ทธ๋žฌ๋”๋‹ˆ ์ฃผ๋ฌธ ์„œ๋ฒ„๊ฐ€ ์ฃฝ์Œ
  • ์ฃผ๋ฌธ AWS ์ด์ „
  • ์Šค์ผ€์ผ์•„์›ƒํ•ด์„œ ์„ฑ๊ณต
  • ๊ทธ๋žฌ๋”๋‹ˆ ๊ฒฐ์ œ โ†’ ์™ธ๋ถ€ PG, ์นด๋“œ์‚ฌ ์ฃฝ์Œ
  • ๊ทธ ๋‹ค์Œ๋‚  ์žฅ๋น„ 2๋ฐฐ ํˆฌ์ž…ํ•ด์„œ ๋Œ€์‘ํ•จ

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

  • 2017๋…„ ๋ชจ๋†€๋ฆฌ์Šค ๊ตฌ์กฐ์—์„œ ํ•˜๋‚˜์”ฉ ๋—ด์–ด๋ƒ„
  • ๊ฐ€๊ฒŒ ๋ชฉ๋ก+๊ฒ€์ƒ‰์„ ๋–ผ์–ด๋‚ด์„œ ES๋กœ ๋ถ™์ž„ โ†’ ๋ฃจ๋น„ DB๋กœ ๊ฐ€๋Š” ๋ถ€ํ•˜๊ฐ€ ํ™•์‹คํžˆ ์ค„์–ด๋“ฌ
    • CQRS ํŒจํ„ด
    • ๋ช…๋ น๊ณผ ์ฟผ๋ฆฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ ์‹œ์ž‘
  • ๊ฐ€๊ฒŒ ์ƒ์„ธ ํŽ˜์ด์ง€๋„ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ๋‹นํ•  ์ˆ˜ ์—†์–ด ๋–ผ์–ด๋ƒ„ โ†’ aws ๋‹ค์ด๋‚˜๋ชจ DB(nosql)๋กœ select์— ํŠนํ™”๋œ๊ฒƒ์„ ์‚ฌ์šฉ โ†’ ๋ฃจ๋น„ DB์—์„œ ๋ฐฐ์น˜๊ฐ€ ๊ณ„์†๋Œ๋ฉด์„œ ์ƒ‰์ธ์„ํ•จ
  • ๊ฐ€๊ฒŒ์ƒ์„ธ, ๊ฐ€๊ฒŒ๋ชฉ๋ก+๊ฒ€์ƒ‰ ๋ถ„๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋จ
  • ๊ทธ๋‹ค์Œ ์ฃผ๋ฌธ, ๋ฆฌ๋ทฐ๋ฅผ ๋ถ„๋ฆฌ
    • ์‚ฌ์‹ค ์ฃผ๋ฌธ์ด ๋น„์ฆˆ๋‹ˆ์Šค๊ฐ€ ์ œ์ผ ๋ณต์žกํ•จ
    • ์™ธ๋ถ€ API์—ฐ๋™์ด ๊ต‰์žฅํžˆ ๋งŽ์ด ์—ฎ์—ฌ์žˆ์—ˆ์Œ
    • ๋‹จ์ ์œผ๋กœ ์ฃผ๋ฌธ์ด ์™„๋ฃŒ๋˜๋ฉด ๋ฆฌ๋ทฐ ์‹œ์Šคํ…œ์— ์ „๋‹ฌํ•ด์„œ ๋ฆฌ๋ทฐ๋ฅผ ํ•ด๋‹ฌ๋ผ๋Š” ์•ฑํ‘ธ์‹œ๋ฅผ ๋‚ ๋ ค์•ผํ•˜๋Š” api๊ฐ€ ์žˆ์—ˆ์Œ
    • ์ฃผ๋ฌธ์ด ์™„๋ฃŒ๋๋Š”๋ฐ ๋ฆฌ๋ทฐ ์‹œ์Šคํ…œ์ด ์ฃฝ์–ด๋ฒ„๋ฆฌ๋ฉด ์ฃผ๋ฌธ์ด ์•ˆ๋˜๋Š” ์ด์ƒํ•œ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•จ
    • ๊ทธ๋ž˜์„œ ์ด ๋งŽ์€ ์™ธ๋ถ€ api๋ฅผ ์™„๋ฒฝํ•œ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ๋กœ ํ•จ
  • aws - sqs ๋ฅผ ํ†ตํ•ด์„œ ์ฃผ๋ฌธ์‹œ์Šคํ…œ์—์„œ ๋ฐœ์ƒ๋˜๋Š” ์ด๋ฒคํŠธ(์ƒ์„ฑ, ์ ‘์ˆ˜, ๋ฐฐ๋‹ฌ์™„๋ฃŒ, ์ทจ์†Œ ๋“ฑ)๋“ค์„ ๋ฉ”์„ธ์ง€ํ๋กœ ์ „๋‹ฌ
  • ์ด๋ ‡๊ฒŒ๋˜๋ฉด ๊ธฐ์กด์— ๋ฆฌ๋ทฐ์‹œ์Šคํ…œ์ด ์ฃฝ์–ด๋„ ๋™์ž‘ํ•˜๊ฒŒ๋˜๊ณ  api์ฝœ์ด ์œ ์‹ค๋œ ๋ถ€๋ถ„๋„ api ๊ฐ€ ์‚ด์•„๋‚˜๋ฉด ๋‹ค์‹œ ์žฌ์ฒ˜๋ฆฌ ํ• ์ˆ˜ ์žˆ๊ฒŒ ๊ฐœ์„ ๋จ
  • ์‹œ์Šคํ…œ ํšŒ๋ณต๋ ฅ์ด ๊ธ‰๊ฒฉํžˆ ์ข‹์•„์ง
  • ํฌ๊ฒŒ 3๊ฐ€์ง€์˜ ์†์„ฑ์„ ๊ฐ€์ง„ ์ด๋ฒคํŠธ ํ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ด
    • ๋ฆฌ๋ทฐ ์‹œ์Šคํ…œ ์ „๋‹ฌ(์™ธ๋ถ€ API)
    • ๋ ˆ๊ฑฐ์‹œDB ์‹ฑํฌ(๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”)
    • ๋ผ์ด๋”์Šค ์‹œ์Šคํ…œ(DB write โ† ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”?)
  • ํ•˜๋‚˜์˜ db์—์„œ msa๊ตฌ์กฐ๋กœ ๊ฐ€๋ฉด์„œ ๋ณ„๊ฐœ์˜ db๊ฐ€ ๋˜์–ด ๊ฐ™์€ ์ปฌ๋Ÿผ์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ๋ฐ–์— ์—†์Œ
  • ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” ์ด์Šˆ ๋ฐœ์ƒ
    • ๊ฒ€์ƒ‰, ์ƒ‰์ธ, nosql ์กฐํšŒ์— ํŠนํ™”๋œ ๊ณณ(Q)
    • ๋ช…๋ น(C)์ด ๋ฐœ์ƒํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ด๋ฒคํŠธ๋ฅผ ๋ฐœํ–‰ํ•ด์„œ ์กฐํšŒDB์— ์•Œ๋ฆผ
    • ์กฐํšŒ DB๋Š” ์•Œ๋ฆผ์„ ๋ฐ›๊ณ  ์ฟผ๋ฆฌ๋ชจ๋ธ์—์„œ ๊ฐฑ์‹ 

์ด๋ฒคํŠธ ์ „ํŒŒ์™€ ๋™๊ธฐํ™”

  • Eventually consistency(์ตœ์ข…์  ์ผ๊ด€์„ฑ)
    • ๋ฐ์ดํ„ฐ๋Š” ์–ธ์  ๊ฐ€๋Š” ๋‹ค ๋งž์ถ”์–ด์ง„๋‹ค
    • ๋ฐ์ดํ„ฐ ์‹ฑํฌ 1~3์ดˆ
  • ๋ฌธ์ œ ๋ฐœ์ƒ์‹œ ํ•ด๋‹น ์‹œ์Šคํ…œ์ด ์ด๋ฒคํŠธ๋งŒ ์žฌ๋ฐœํ–‰
  • ๋Œ€๋ถ€๋ถ„ zero-payload ๋ฐฉ์‹ ์‚ฌ์šฉ
    • ์ด๋ฒคํŠธ์— ์‹๋ณ„์ž(ex ๊ฐ€๊ฒŒID)์™€ ์ตœ์†Œํ•œ์˜ ์ •๋ณด๋งŒ ๋ฐœํ–‰
    • ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์€ ์‹œ์ ์— ์กฐํšŒ API๋กœ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ด์„œ ์ €์žฅ
    • ๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ์ด์œ ๋Š”?
      • ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•ด์•ผํ•˜๋Š”๋ฐ ๊ฐฑ์‹ ํ•ด์•ผ๋  ๋ฐ์ดํ„ฐ๊ฐ€ 2๊ฐœ ๋™์‹œ์—์˜ค๋ฉด ์–ด๋–ค๊ฒŒ ์šฐ์„ ์ธ์ง€ ๋น„๊ตํ•ด์•ผ๋˜๊ณ  ๋งŽ์€ ๊ณ ๋ฏผ์ด ๋“ค์–ด๊ฐ(๋น„์šฉ ๋ฐœ์ƒ)
      • ๊ทธ๋Ÿฌ์ง€ ๋ง๊ณ  id๊ฐ’๋งŒ ๋ฐœ์ƒ์‹œํ‚ค๊ณ  ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ๋˜๋ฉด ๋ฌด์กฐ๊ฑด ๊ฐฑ์‹ ํ•˜์ž (๋น„์šฉ๊ฐ์†Œ) ํ•ญ์ƒ ์ตœ์‹ ์œผ๋กœ ๋ณด๊ณ  ๊ฐฑ์‹ ํ•˜์ž
      • ํŒ€๋งˆ๋‹ค ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค๋ฅผ์ˆ˜๋ฐ–์— ์—†๋Š”๋ฐ ๊ทธ๋Ÿฌ๋ฉด ํŒ€๋งˆ๋‹ค ๋‹ค๋ฅธ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•ด์ค˜์•ผํ•จ(๋น„์šฉ๋ฐœ์ƒ)
      • ๊ทธ๋ž˜์„œ id๊ฐ’๋งŒ ์ด๋ฒคํŠธ ๋ฉ”์„ธ์ง€๋กœ ๋ฐœํ–‰ํ•˜๊ณ  ๊ฐํŒ€์—์„œ ํ•„์š”ํ•œ ์ •๋ณด๋“ค์˜ ์กฐํšŒ API๋ฅผ ์ŠคํŽ™์—๋งž๊ฒŒ ์—ด์–ด๋‘ 
    • ์ตœ์†Œ ๋ฐ์ดํ„ฐ ๋ณด๊ด€ ์›์น™
      • ๊ฐ ์‹œ์Šคํ…œ์—์„œ ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋ณด๊ด€ํ•œ๋‹ค
      • ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ๋ฌผ๋ฆฌ์ ์ธ ๊ด€๊ณ„๋Š” ์—†์ง€๋งŒ ๋…ผ๋ฆฌ์ ์ธ ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ๋น„๊ตํ•ด์„œ ์ฒ˜๋ฆฌํ•ด์•ผํ•จ
        • ํ•„์š”์—†๋Š” ๋ฐ์ดํ„ฐ๋„ ๋“ค๊ณ ์žˆ๋‹ค๋ฉด ํŠน์ • ์‹œ์Šคํ…œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ• ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•ด๋ด์•ผ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•จ (๋น„์šฉ๋ฐœ์ƒ)
          • A ์‹œ์Šคํ…œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ ์žํ•˜๋Š”๋ฐ B ์‹œ์Šคํ…œ์— ๋˜‘๊ฐ™์€ ์ •๋ณด๊ฐ€ ์žˆ๋Š”๋ฐ ๋‹ค๋ฅธ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์„๋•Œ ์–ด๋–ป๊ฒŒ ๋น„๊ตํ• ๊ฒƒ์ธ๊ฐ€? (๋น„์šฉ๋ฐœ์ƒ)
          • B ์‹œ์Šคํ…œ์—์„  ํ•„์š”์—†๋Š” ์ •๋ณด์ธ๋ฐ๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋ฉด ๋น„๊ตํ•ด๋ด์•ผ ๋˜๋Š” ๋น„์šฉ์„ ์ค„์ž„
  • ๊ฐ ์‹œ์Šคํ…œ๋“ค์€ ํด๋ฆฌ๊ธ€๋ž ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ 
    • ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ๋…ธ์ถœ์ชฝ์€ ๋ ˆ๋””์Šค๋‚˜ nosql
    • ๊ฒ€์ƒ‰์ด๋‚˜ ๊ด‘๊ณ ๋ฆฌ์ŠคํŒ…์ชฝ์€ es
    • ์‹ค์งˆ์ ์€ write๊ฐ€ ์ฃผ์‹œ์Šคํ…œ์ธ ๊ณณ์€ rdb

์•ˆ์ •๋‹จ๊ณ„

DB

  • ์กฐํšŒ(๊ณ ์„ฑ๋Šฅ)
    • ๊ฐ€๊ฒŒ๋…ธ์ถœ: dynamo db, mongo db(nosql), redis(cache)
    • ๊ด‘๊ณ ๋ฆฌ์ŠคํŒ…, ๊ฒ€์ƒ‰: es(๊ฒ€์ƒ‰์—”์ง„)
    • ๋ฐ”๋กœ๊ฒฐ์ œ ๋ผ์ด๋ธŒ: redis(cache)
  • ๋ช…๋ น(์•ˆ์ •์„ฑ)
    • ๊ด‘๊ณ : ์˜ค๋กœ๋ผ db(rdb)
    • ๊ฐ€๊ฒŒ/์—…์ฃผ: ์˜ค๋กœ๋ผ db(rdb)
  • ๋Œ€์šฉ๋Ÿ‰ํŠธ๋ž™ํ”ฝ์ด ๋นก ๋ชฐ๋ ค๋„ cqrs ๊ตฌ์กฐ์ด๊ธฐ๋–„๋ฌธ์— ์‚ด์•„๋‚จ์„ ์ˆ˜ ์žˆ์Œ
  • msa ๊ตฌ์กฐ๋กœ ๊ฐœ๋ณ„ ์Šค์ผ€์ผ๋ง ๊ฐ€๋Šฅ

์žฅ์•  ๊ฒฉ๋ฆฌ

  • ๊ฐ ์‹œ์Šคํ…œ์ด ๋‚ด๋ถ€์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๋ณด๊ด€
  • ๋‚ด๋ถ€ ์„œ๋น„์Šค(๊ด‘๊ณ , ๊ฒ€์ƒ‰)์˜ ๋ชจ๋“  ๋ณ€๊ฒฝ ๋‚ด์—ญ์ด ์ด๋ฒคํŠธ๋กœ ์ „๋‹ฌ
  • ์žฅ์• ์‹œ ๋ฐ์ดํ„ฐ ์‹ฑํฌ๊ฐ€ ๋Šฆ์–ด์ ธ๋„ ๊ณ ๊ฐ ์„œ๋น„์Šค ๊ฐ€๋Šฅ

๋ฐ์ดํ„ฐ ์‹ฑํฌ ์žฅ์•  ๋Œ€์‘

  • ์ด๋ฒคํŠธ ์žฌ๋ฐœํ–‰
  • ํ ์žฅ์•  ๋ฐœ์ƒ์‹œ
    • ์ „์ฒด IMPORT API ์ œ๊ณต
    • ๋ถ€๋ถ„ IMPORT API ์ œ๊ณต
      • ์ตœ๊ทผ ์—…๋ฐ์ดํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋‹จ์œ„๋กœ ๋ถ€๋ถ„ ์ œ๊ณต (๋ฐฐ์น˜์„ฑ)

๊ธฐํƒ€

  • ์ ๊ทน์ ์ธ ์บ์‹œ ์‚ฌ์šฉ
  • ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค
  • ๋น„๋™๊ธฐ ๋…ผ๋ธ”๋Ÿญํ‚น ์‹œ์Šคํ…œ ์ ์šฉ
    • ์Šคํ”„๋ง ์›นํ”Œ๋Ÿญ์Šค, ๋ฆฌ์•กํ„ฐ
    • ๊ฐ€๊ฒŒ๋…ธ์ถœ, ๊ด‘๊ณ ๋ฆฌ์ŠคํŒ…, ๊ฒ€์ƒ‰

์ •๋ฆฌ

  • ๋ฐฐ๋ฏผ์€ ๊ฑฐ๋Œ€ํ•œ CQRS
  • ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ์™ธ๋ถ€ ์‹œ์Šคํ…œ(์กฐํšŒ)๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ๋ช…๋ น์ด ๋งŽ์€ ๋‚ด๋ถ€ ์‹œ์Šคํ…œ(๋ช…๋ น)์œผ๋กœ ๋ถ„๋ฆฌ
  • ์ด๋ฒคํŠธ ๋ฐœํ–‰์„ ํ†ตํ•œ Eventually consistency(์ตœ์ข…์  ์ผ๊ด€์„ฑ)
  • ๊ฐ ์‹œ์Šคํ…œ์€ API ๋˜๋Š” ์ด๋ฒคํŠธ ๋ฐฉ์‹์œผ๋กœ ์—ฐ๋™
    • ์ฃผ๋ฌธ์‹œ ๋งˆ์ง€๋ง‰ validation์€ api๋ฅผ ํ†ตํ•ด ์ง„ํ–‰ํ•จ
      • ์ง„์งœ ๋งž๋Š”๊ฐ€ ํ™•์ธ
      • ์ด๋ฒคํŠธ ๋ฐฉ์‹์€ ์ตœ์ข…์  ์ผ๊ด€์„ฑ์ด์ง€๋งŒ, ์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™”๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ

์ดํ‰

  • MSA ๊ผญํ•ด์•ผ๋˜๋‚˜?
    • ๋งํ–ˆ๋‹ค์‹œํ”ผ ์ƒ์กด์˜ ๋ฌธ์ œ
    • ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ๊ณ 
    • ์‚ฌ์šฉ์ž๋„ ๋งŽ๊ณ 
    • ์žฅ์• ๋„ ๋งŽ๋‹ค๋ฉด
    • ์ƒ์กด์˜ ์ˆ˜๋‹จ์œผ๋กœ ํ•ด๊ฒฐํ•ด์•ผํ•จ
    • MSA ํ•˜๊ธฐ์ „์—” ๋‹จ์ˆœํžˆ ์กฐ์ธํ•˜๋‚˜๋งŒ ํ•ด์„œ ํ•ด๊ฒฐ์ด ๋ ๊ฑฐ๋ฅผ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”์‹ ๊ฒฝ์จ์•ผ๋˜๊ณ  ํŠธ๋žœ์žญ์…˜ ์‹ ๊ฒฝ์จ์•ผ๋˜๊ณ  ๊ทธ๋Ÿฐ ๋น„์šฉ์ด 10๋ฐฐ์ •๋„ ๋”๋„˜์Œ
    • ๊ทธ๋Ÿฐ ๋น„์šฉ์„ ์ƒ์‡„ํ• ๋งŒํผ์˜ ์ด์ ์ด ์žˆ์„๋•Œ โ†’ ์ƒ์กด์˜ ์ˆ˜๋‹จ

๋งˆ๋ฌด๋ฆฌ

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ ์ „์—” ๋ฌด์กฐ๊ฑด ์ข‹์€์ค„๋กœ๋งŒ ์•Œ์•˜๋˜ ๋ฐ˜์„ฑ์˜ ์‹œ๊ฐ„์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐ๋ฏผ์—์„œ ์˜ฌ๋ฆฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์—ฌํ–‰๊ธฐ๋Š” ์•ž์œผ๋กœ ๊ณฑ์”น์œผ๋ฉด์„œ ์˜์ƒ์„ ์‹œ์ฒญํ•˜๊ฒŒ ๋  ๊ฒƒ ๊ฐ™๋„ค์š”.. ๐Ÿซ 

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

์ด ๊ธ€์—์„  ์‹คํŒจ์‚ฌ๋ก€๋ฅผ ๋‹ค๋ฃจ์ง„ ์•Š์•˜์ง€๋งŒ, ๋งŽ์€ ๊ธฐ์—…๋“ค์ด ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๊ฒช์—ˆ๊ณ , ๊ทธ ์‹œํ–‰์ฐฉ์˜ค ๋’ค์— ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์— ์„ ๋ฐฐ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ๊นŠ์€ ๊ฐ์‚ฌํ•จ์„ ๋Š๋ผ๋ฉฐ.. ์ด๋งŒ ๊ธ€์„ ๋งˆ๋ฌด๋ฆฌ ์ง“๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ธ€์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” CQRS ํŒจํ„ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋!


Uploaded by N2T