ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
๐Ÿ’ฅ Tech Talks Weekly #105
Dev.toDev.to
Backend

Event-driven ์•„ํ‚คํ…์ฒ˜์˜ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ๋ณด์žฅ ๋ฐ Structured Concurrency ํŒจ๋Ÿฌ๋‹ค์ž„ ์ „ํ™˜

๐Ÿ’ฅ Tech Talks Weekly #105

Tech Talks Weekly2026๋…„ 5์›” 20์ผ10๋ถ„advanced

Context

Fintech ๋ฐ Healthcare ๋“ฑ ๊ทœ์ œ ์‚ฐ์—… ๋‚ด Cloud-native ํ™˜๊ฒฝ์—์„œ Event loss ๋˜๋Š” ์ค‘๋ณต ๋ฐœ์ƒ์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜ ๋ฆฌ์Šคํฌ ์กด์žฌ. ๊ธฐ์กด ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋ณต์žกํ•œ ๋ฆฌ์†Œ์Šค ๋ˆ„์ˆ˜์™€ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ ํ•œ๊ณ„๋กœ ์ธํ•œ ์‹œ์Šคํ…œ ๋ถˆ์•ˆ์ •์„ฑ ์‹ฌํ™”.

Technical Solution

  • Inbox ๋ฐ Outbox ํŒจํ„ด ๋„์ž…์„ ํ†ตํ•œ Event ์ค‘๋ณต ๋ฐฉ์ง€ ๋ฐ ์›์ž์  ๋ฉ”์‹œ์ง€ ๋ฐœํ–‰ ๋ณด์žฅ
  • Lean Events์™€ Fat Events์˜ ๊ตฌ๋ถ„ ๋ฐ Command์™€ Event์˜ ๋ช…ํ™•ํ•œ ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•œ ๋„๋ฉ”์ธ ๊ฒฝ๊ณ„ ์ œ์–ด
  • Event Sourcing ์—†์ด๋„ ์ •ํ•ฉ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฐ€๋ฒผ์šด ์ƒํƒœ ๊ด€๋ฆฌ ๊ตฌ์กฐ ์„ค๊ณ„
  • Structured Concurrency ๋„์ž…์œผ๋กœ Task์˜ ์‹œ์ž‘, ์ข…๋ฃŒ, Scope๋ฅผ ๋ช…์‹œํ•˜์—ฌ ๊ณ„์ธต์  ๊ตฌ์กฐ ํ˜•์„ฑ
  • Task ์‹คํŒจ ์‹œ ์—ฐ๊ด€๋œ ๋ชจ๋“  ํ•˜์œ„ Task๋ฅผ ์ž๋™์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” Graceful Cancellation ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๊ตฌํ˜„
  • Event Contract ์ •์˜๋ฅผ ํ†ตํ•œ ๋„๋ฉ”์ธ ๊ฐ„ ์ธํ„ฐํŽ˜์ด์Šค ์ผ๊ด€์„ฑ ์œ ์ง€ ๋ฐ ์ˆœ์„œ ๋ณด์žฅ ์ „๋žต ์ˆ˜๋ฆฝ

- ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๋‚ด ๋ฉ”์‹œ์ง€ ๋ฐœํ–‰ ์‹œ Outbox ํŒจํ„ด์„ ํ†ตํ•œ DB ํŠธ๋žœ์žญ์…˜๊ณผ ๋ฉ”์‹œ์ง€ ํ์˜ ์›์ž์„ฑ ํ™•๋ณด ์—ฌ๋ถ€ ๊ฒ€ํ†  - ๋น„๋™๊ธฐ Task ์„ค๊ณ„ ์‹œ Structured Concurrency๋ฅผ ์ ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ๋ˆ„์ˆ˜ ๋ฐฉ์ง€ ๋ฐ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ ์ฒด๊ณ„ ๊ตฌ์ถ• - Event-driven ์„ค๊ณ„ ์‹œ ๋‹จ์ˆœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ(Event)๊ณผ ์ƒํƒœ ๋ณ€๊ฒฝ ์š”์ฒญ(Command)์˜ ์—ญํ•  ๋ถ„๋ฆฌ ์ ์šฉ

์›๋ฌธ ์ฝ๊ธฐ