SAGA Pattern

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์—์„œ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์— ๊ฑธ์ณ์žˆ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ํŠธ๋žœ์žญ์…˜์˜ ์›์ž์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋Œ€์•ˆ์œผ๋กœ SAGA ํŒจํ„ด์ด ๋„๋ฆฌ ์‚ฌ์šฉ๋œ๋‹ค.

  • SAGA๋Š” ํ•˜๋‚˜์˜ ๊ธด ๋น„์ฆˆ๋‹ˆ์Šค ํŠธ๋žœ์žญ์žญ์…˜์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋กœ์ปฌ ํŠธ๋žœ์žญ์…˜์˜ ์—ฐ์†์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ฒ˜๋ฆฌํ•˜๋Š” ํŒจํ„ด

  • ๊ฐ ๋กœ์ปฌ ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณตํ•˜๋ฉด, ๋‹ค์Œ ํŠธ๋žœ์žญ์…˜์„ ํ˜ธ์ถœํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋ฐœํ–‰ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ „์ฒด ํ๋ฆ„ ์ง„ํ–‰

ํ•ต์‹ฌ ์›๋ฆฌ - ๋ณด์ƒ ํŠธ๋žœ์žญ์…˜

SAGA ํŒจํ„ด์˜ ํ•ต์‹ฌ์€ ๋งŒ์•ฝ ๋กœ์ปฌ ํŠธ๋žœ์žญ์…˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์‹คํŒจํ•˜๋ฉด, ์ด๋ฏธ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋œ ์ด์ „ ํŠธ๋žœ์žญ์…˜๋“ค์„ ์ทจ์†Œํ•˜๋Š” ๋ณด์ƒ ํŠธ๋žœ์žญ์…˜์ด ์—ญ์ˆœ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.

  • (T1) ๊ฒฐ์ œ ์„œ๋น„์Šค: ์นด๋“œ ๊ฒฐ์ œ ์„ฑ๊ณต

  • (T2) ์žฌ๊ณ  ์„œ๋น„์Šค: ์žฌ๊ณ  ์ฐจ๊ฐ ์‹คํŒจ

  • (C1) ๊ฒฐ์ œ ์„œ๋น„์Šค: ์นด๋“œ ๊ฒฐ์ œ ์ทจ์†Œ (T1์˜ ๋ณด์ƒ ํŠธ๋žœ์žญ์…˜)

์ด๋Ÿฌํ•œ ๋ณด์ƒ ํŠธ๋žœ์žญ์…˜์˜ ์‹คํ–‰์„ ํ†ตํ•ด, ์ „์ฒด ์‹œ์Šคํ…œ์€ ์ตœ์ข…์ ์œผ๋กœ ์ผ๊ด€๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋ฅผ ์ตœ์ข…์  ์ผ๊ด€์„ฑ(Eventual Consistency)์ด๋ผ ์นญํ•œ๋‹ค.

๋‘ ๊ฐ€์ง€ ๊ตฌํ˜„ ๋ฐฉ์‹

SAGA ํŒจํ„ด์€ ์ œ์–ด ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ตฌ๋ถ„
์ฝ”๋ ˆ์˜ค๊ทธ๋ž˜ํ”ผ (Choreography)
์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ (Orchestration)

์ œ์–ด ๋ฐฉ์‹

๊ฐ ์„œ๋น„์Šค๊ฐ€ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœํ–‰ํ•˜๊ณ  ๊ตฌ๋…ํ•˜๋ฉฐ ์ž์œจ์ ์œผ๋กœ ๋™์ž‘

์ค‘์•™์˜ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ๊ฐ€ ๊ฐ ์„œ๋น„์Šค์˜ ํŠธ๋žœ์žญ์…˜์„ ์ง€์‹œ ๋ฐ ์ œ์–ด

์žฅ์ 

์„œ๋น„์Šค ๊ฐ„ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ๊ณ  ๊ตฌ์กฐ๊ฐ€ ๋น„๊ต์  ๋‹จ์ˆœ

์ „์ฒด ํ๋ฆ„์„ ์ค‘์•™์—์„œ ๊ด€๋ฆฌํ•˜์—ฌ ์ถ”์  ๋ฐ ๋””๋ฒ„๊น… ์šฉ์ด

๋‹จ์ 

์ „์ฒด ํ๋ฆ„์„ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต๊ณ , ์„œ๋น„์Šค ๊ฐ„ ์ˆœํ™˜ ์˜์กด์„ฑ ์œ„ํ—˜

์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ์˜ SPoF

์‹ฌ์ธต์  ๊ณ ๋ ค์‚ฌํ•ญ

SAGA ํŒจํ„ด์„ ์ ์šฉํ•  ๋•Œ๋Š” ACID ์†์„ฑ ์ค‘ ์ผ๋ถ€๋ฅผ ํฌ๊ธฐํ•˜๋Š” ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.

  • ๊ฒฉ๋ฆฌ ์ˆ˜์ค€(Isolation)์˜ ๋ถ€์žฌ

    • SAGA๋Š” ACD(์›์ž์„ฑ, ์ผ๊ด€์„ฑ, ์ง€์†์„ฑ)๋Š” ๋ณด์žฅํ•˜์ง€๋งŒ, ๊ฒฉ๋ฆฌ์„ฑ ๋ณด์žฅ X

    • ์„ฑ๊ณต(T1)๊ณผ ์‹คํŒจ(T2) ์‚ฌ์ด์˜ ์งง์€ ์‹œ๊ฐ„ ๋™์•ˆ, ์ผ๋ถ€ ์„œ๋น„์Šค๋Š” ์ค‘๊ฐ„ ์ƒํƒœ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Œ

    • ์ดํ›„ ๋ณด์ƒ ํŠธ๋žœ์žญ์…˜(C1)์ด ์‹คํ–‰๋˜์–ด ์ผ์‹œ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถˆ์ผ์น˜ํ•˜๋Š” ์ƒํƒœ๊ฐ€ ์™ธ๋ถ€์— ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Œ

  • ๋ณด์ƒ ํŠธ๋žœ์žญ์…˜์˜ ๋ฉฑ๋“ฑ์„ฑ ๋ณด์žฅ

    • ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜ ๋“ฑ์œผ๋กœ ์ธํ•ด ๋ณด์ƒ ํŠธ๋žœ์žญ์…˜ ์š”์ฒญ์ด ์—ฌ๋Ÿฌ ๋ฒˆ ์ „๋‹ฌ ๊ฐ€๋Šฅ

    • ๋ณด์ƒ ํŠธ๋žœ์žญ์…˜์ด ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰๋˜๋”๋ผ๋„ ์‹œ์Šคํ…œ ์ƒํƒœ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋„๋ก ๋ฉฑ๋“ฑ์„ฑ(idempotency)์„ ๋ณด์žฅํ•ด์•ผ ํ•จ

  • ์ตœ์ข…์  ์ผ๊ด€์„ฑ

    • SAGA๋Š” ๋ชจ๋“  ์ฐธ์—ฌ ์„œ๋น„์Šค๊ฐ€ ์ฆ‰์‹œ ์ผ๊ด€๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฐ•ํ•œ ์ผ๊ด€์„ฑ(Strong Consistency)์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Œ

    • ๋Œ€์‹ , ์‹คํŒจ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋ณด์ƒ ํŠธ๋žœ์žญ์…˜์„ ํ†ตํ•ด ๊ฒฐ๊ตญ์—๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ๊ด€๋œ ์ƒํƒœ์— ๋„๋‹ฌํ•˜๋Š” ์ตœ์ข…์  ์ผ๊ด€์„ฑ์„ ๋ชฉํ‘œ

    • ์ผ์‹œ์ ์ธ ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜๋ฅผ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์ธ์ง€ ๊ฒ€ํ†  ํ•„์š”

Last updated

Was this helpful?