msa 3

# ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ํ†ต์‹  ์„ค๊ณ„

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ ๊ฐ ์„œ๋น„์Šค๋“ค์„ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ†ต์‹  ๋ฐฉ๋ฒ•์ด๊ณผ ๊ณ ๋ คํ•ด์•ผ ๋  ์‚ฌํ•ญ๋“ค์ด ์žˆ๋‹ค. RPC ์„ ํƒ์‹œ ๊ณ ๋ ค ์‚ฌํ•ญ API์— ๋Œ€ํ•œ RPC ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์„ ํƒํ•˜๊ธฐ ์ „์— ์„œ๋น„์Šค์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ ์Šคํƒ€์ผ์„ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ƒํ˜ธ ์ž‘์šฉ์ด ์ผ๋Œ€์ผ์ธ์ง€ ์ผ๋Œ€๋‹ค์ธ์ง€ ์—ฌ๋ถ€ ์ƒํ˜ธ ์ž‘์šฉ์ด ๋™๊ธฐ์‹์ธ์ง€ ๋น„๋™๊ธฐ์‹์ธ์ง€ ์—ฌ๋ถ€ One-way notifications: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋น„์Šค์— ์š”์ฒญ์„ ๋ณด๋‚ด์ง€๋งŒ ์‘๋‹ต์„ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š๋Š” ๋ฐฉ์‹ ๋ฉ”์‹œ์ง€ ํ˜•์‹ 1. ํ…์ŠคํŠธ ํ˜•์‹ JSON or XML์€ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ํ˜•์‹์ด๋‹ค. ๐Ÿ‘์žฅ์  ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ‘Ž๋‹จ์  ๋ฉ”์‹œ์ง€๊ฐ€ ์žฅํ™ฉํ•˜๋‹ค. ํ…์ŠคํŠธ ๊ตฌ๋ฌธ ๋ถ„์„๊ณผ ๊ด€๋ จ๋œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค. 2. ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹ Thrift, Protocol Buffers(Protobuf) ๋ฐ A..

Microservice/Design 2022.05.19

# ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ๋ฐ์ดํ„ฐ ์„ค๊ณ„

์„œ๋น„์Šค๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด์  ๊ฐ ์„œ๋น„์Šค ๊ฐ„ ๋Š์Šจํ•œ ๊ฒฐํ•ฉ์œผ๋กœ ์˜์กด์„ฑ์„ ๋‚ฎ์ถ”๊ณ  ์„œ๋น„์Šค ํŠน์„ฑ์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์„ ํƒ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฌธ์ œ์  ๋ฐ ํ•ด๊ฒฐ๋ฐฉ๋ฒ• ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ†ตํ•ด ์กฐ์ธํ•ด์•ผ ํ•˜๋Š” ์ฟผ๋ฆฌ ์ด๋ฒคํŠธ ์†Œ์‹ฑ API ๊ตฌ์„ฑ CQRS(๋ช…๋ น/์กฐํšŒ ์ฑ…์ž„ ๋ถ„๋ฆฌ) ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ฑธ์นœ ํŠธ๋žœ์žญ์…˜ ์‚ฌ๊ฐ€ํ˜„ ํŒจํ„ด 1-1. ์ด๋ฒคํŠธ ์†Œ์‹ฑ (Event Sourcing) ์ด๋ฒคํŠธ ์†Œ์‹ฑ์ด๋ž€, ์ด๋ฒคํŠธ๋ฅผ ์œ„์ฃผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๊ณ , ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ๋ฅผ event store์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. โœ… ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ: DDD์— ๊ธฐ๋ฐ˜ํ•œ ์„ค๊ณ„์—์„œ ํ•˜๋‚˜์˜ ๋„๋ฉ”์ธ์—์„œ ํ•„์š”ํ•œ ๊ฐ์ฒด๋“ค์„ ํ•˜๋‚˜์˜ ๊ตฐ์ง‘์œผ๋กœ ๋ฌถ์€ ๊ฒƒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ์„œ๋น„์Šค๊ฐ€ ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๊ฒŒ ํ•˜์ง€ ์•Š๊ณ , ์„œ๋น„์Šค๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ณ  ํ•ด๋‹น ์ด๋ฒคํŠธ๋Š” event store์— ์ €์žฅ๋งŒ ํ•œ๋‹ค...

Microservice/Design 2022.05.19

# ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ์„ค๊ณ„ ์›์น™

1. ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์„ ์ค‘์‹ฌ์œผ๋กœ ๋ชจ๋ธ๋ง ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ์„ค๊ณ„๋ฅผ ํ†ตํ•ด ๋”์šฑ ์•ˆ์ •๋œ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•ด ๋ณด๋‹ค ์‰ฝ๊ฒŒ ๊ฐ ์„œ๋น„์Šค๋“ค์„ ์žฌ๊ฒฐํ•ฉ ํ•  ์ˆ˜ ์žˆ๋‹ค. 2. ์ž๋™ํ™” ๋ฌธํ™” ๋งŽ์€ ์ˆ˜์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๋ณต์žก์„ฑ์„ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ์ž๋™ํ™”๊ฐ€ ํ•„์ˆ˜์ ์ด๋‹ค. CI/CD ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ ๋‹จ๊ณ„์—์„œ์˜ SIT(System Integration Testing) & UAT(User Acceptance Testing) ํ…Œ์ŠคํŠธ ํ”„๋กœ๋น„์ €๋‹, OS ๊ตฌ์„ฑ, ์„œ๋น„์Šค ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋“ฑ 3. ๊ตฌํ˜„ ์„ธ๋ถ€ ์ •๋ณด ์ˆจ๊ธฐ๊ธฐ ์„œ๋น„์Šค๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋˜๊ณ  ์ง„ํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ ์„œ๋น„์Šค์˜ ๊ตฌํ˜„ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ˆจ๊ฒจ์•ผ ํ•œ๋‹ค. ํ•„์š”ํ•œ ์ •๋ณด๋Š” DB์— ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๊ฐ ์„œ๋น„์Šค API๋ฅผ ํ†ตํ•ด์„œ ์–ป์–ด์•ผ ํ•œ๋‹ค. 4. ๋ชจ๋“  ๊ฒƒ์„ ๋ถ„๊ถŒํ™”ํ•˜๊ธฐ ๊ฐ ์„œ๋น„์Šค๋Š” ..

Microservice/Design 2022.05.19