๐Ÿ“บ ์˜์ƒ ์š”์•ฝ ์•„์นด์ด๋ธŒ
โ† ๋ชฉ๋ก

Every step you take, every call you make: the reliable agent stack โ€” Giselle van Dongen, Restate

AI Engineer ยท 2026-09-15 00:30 ยท 20:50

ํ•œ ์ค„ ํ•ต์‹ฌ

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

์‹œ๊ฐ„๋ณ„ ์š”์•ฝ

  1. 0:00
    ์„ธ ๊ฐœ์˜ ๋ฌผ๊ฒฐ๊ณผ ์—์ด์ „ํŠธ์˜ ๋ฐฉํ–ฅ LLM์€ ์งˆ์˜์‘๋‹ต ๋„๊ตฌ์—์„œ ๋„๊ตฌ๋ฅผ ์“ฐ๋Š” ์—์ด์ „ํŠธ๋กœ, ๋‹ค์‹œ ์žฅ๊ธฐ๊ฐ„ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ์ƒ์‹œ ํ”„๋กœ์„ธ์Šค๋กœ ์ง„ํ™”ํ•˜๊ณ  ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—์ด์ „ํŠธ ํ™œ์šฉ์ด ๋‹จ์ผ ์ž‘์—…์—์„œ ์กฐ์ง ์ „์ฒด๋ฅผ ์ž‡๋Š” ํ”Œ๋žซํผ์œผ๋กœ ๋ฐ”๋€”์ˆ˜๋ก ์ธํ”„๋ผ๋„ ๊ทธ์— ๋งž๊ฒŒ ์ง„ํ™”ํ•ด์•ผ ํ•œ๋‹ค.
  2. 1:53
    ์•„๋ฌด๋„ ์“ฐ๊ณ  ์‹ถ์–ด ํ•˜์ง€ ์•Š๋Š” ์ธํ”„๋ผ ๊ณ„์ธต ์—์ด์ „ํŠธ๋ฅผ ์‹ค์ œ ์šด์˜ํ•˜๋ ค๋ฉด retry, recovery ๊ฐ™์€ ๋ณต์žกํ•œ ๋กœ์ง๊ณผ ๋ถ„์‚ฐ ์‹คํ–‰์„ ๊ฐ์‹ธ๋Š” ์ถ”๊ฐ€ ์ธํ”„๋ผ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. Restate๋Š” ์ด๋Ÿฐ ๋ถ€๋‹ด์„ ์ค„์—ฌ ์ฃผ๋Š” ์˜คํ”ˆ์†Œ์Šค durable foundation์œผ๋กœ, ์—์ด์ „ํŠธ๋ฟ ์•„๋‹ˆ๋ผ ์ผ๋ฐ˜ ๋ฐฑ์—”๋“œ์—๋„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. 2:45
    ์ง€์† ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ฐ˜์˜ ๋„ค ๊ฐ€์ง€ ์š”์†Œ ์ง€์† ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ฐ˜์€ ๋‹จ์ผ ์‹คํ–‰ ๋ณต๊ตฌ, ๋‹ค์ค‘ ์„ธ์…˜ ๋™์‹œ์„ฑ, ์—์ด์ „ํŠธยทMCP ์„œ๋ฒ„ยท๋„๊ตฌ ๊ฐ„ ํ†ต์‹ , ๊ทธ๋ฆฌ๊ณ  ์ค‘๋‹จยท์ทจ์†Œ ์ œ์–ด์˜ ๋„ค ๊ฐ€์ง€๋กœ ์ •๋ฆฌ๋œ๋‹ค. Restate๋Š” ์„œ๋น„์Šค ์•ž๋‹จ์—์„œ ์š”์ฒญ๊ณผ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์•„ journal๋กœ ์ƒํƒœ๋ฅผ ๋‚จ๊ธฐ๊ณ , ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‹คํŒจ ํ›„์—๋„ ์ •ํ™•ํžˆ ์ด์–ด์„œ ์‹คํ–‰ํ•˜๊ฒŒ ํ•œ๋‹ค.
  4. 4:29
    journal์ด ์‹คํŒจํ•œ ์‹คํ–‰์„ ๋ณต๊ตฌํ•˜๋Š” ๋ฐฉ์‹ ์ผ๋ฐ˜ ํ•จ์ˆ˜๋ฅผ ์žฅ๊ธฐ ์‹คํ–‰ยท์ƒํƒœ ๋ณด์กดยท๋ณต๊ตฌ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ์„ธ์Šค๋กœ ๋ฐ”๊พธ๋Š” ํ•ต์‹ฌ์€ ์ด๋ฒคํŠธ journal์ด๋‹ค. ์—์ด์ „ํŠธ๊ฐ€ ์‹คํ–‰ ์ค‘ ๋ณด๋‚ธ ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋กํ•ด ๋‘๋ฉด, ์žฅ์• ๊ฐ€ ๋‚˜๋„ ๊ทธ ์‹œ์ ๋ถ€ํ„ฐ ์žฌ๊ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.
  5. 5:20
    Slack ์† ๋”ฅ ๋ฆฌ์„œ์น˜ ์—์ด์ „ํŠธ ๋ฐ๋ชจ Slack์—์„œ ์งˆ๋ฌธ์„ ๋ฐ›๋Š” deep research agent๊ฐ€ planner, ๋ณ‘๋ ฌ sub-agent, writer ํ๋ฆ„์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, UI์—์„œ๋Š” ํ˜„์žฌ ์‹คํ–‰๊ณผ journal์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋„์ค‘์— API ์‹คํŒจ๊ฐ€ ๋‚˜๋„ journal์„ ์ด์šฉํ•ด ์žฌ์‹œ๋„ํ•˜๊ณ , ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ  ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋ณต๊ตฌํ•œ๋‹ค.
  6. 7:51
    ์ฝ”๋“œ์—์„œ ํ•œ ๋‹จ๊ณ„๋ฅผ ์ง€์† ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ Restate์—์„œ๋Š” HTTP handler๋ฅผ ์ž‘์„ฑํ•˜๊ณ  `restate.run`์œผ๋กœ ๊ฐ์‹ผ ๋‹จ๊ณ„๊ฐ€ durable step์ด ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋งŒ๋“  ์‹คํ–‰์€ ๋‘ ์‹œ๊ฐ„ ๋’ค๋“  ๋‘ ๋‹ฌ ๋’ค๋“  ๊ฐ™์€ ์ง€์ ์—์„œ ๋ณต๊ตฌ๋˜๋ฏ€๋กœ, ์‹คํŒจ ๋ณต๊ตฌ๋ฟ ์•„๋‹ˆ๋ผ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์—๋„ ์ ํ•ฉํ•˜๋‹ค.
  7. 8:42
    ํ•œ ๋‹ฌ์งœ๋ฆฌ ์ธ๊ฐ„ ์Šน์ธ๋„ ๋ฉˆ์ถ”์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ ์ธ๊ฐ„ ์Šน์ธ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ durable promise๋ฅผ journal์— ๋‚จ๊ฒจ ๋‘๊ณ  ์‹คํ–‰์„ ์ผ์‹œ ์ •์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ์—์„œ๋„ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๊ณ„์† ์ ์œ ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์Šน์ธ ์‘๋‹ต์ด ์˜ค๋ฉด ์ค‘๋‹จํ•œ ์ง€์ ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ด์–ด์„œ ์ง„ํ–‰ํ•œ๋‹ค.
  8. 9:32
    ์ƒํƒœ๋ฅผ ๊ฐ€์ง„ ์•กํ„ฐ๋กœ์„œ์˜ ๊ฐ€์ƒ ๊ฐ์ฒด ์›Œํฌํ”Œ๋กœ๋ณด๋‹ค ๋” ์ ์ ˆํ•œ ๋ชจ๋ธ์€ session ID์™€ ๊ฒฉ๋ฆฌ๋œ key-value state, ๊ทธ๋ฆฌ๊ณ  durable handler๋ฅผ ๊ฐ€์ง„ virtual object์ด๋‹ค. ์ด ๊ตฌ์กฐ๋Š” ์‹คํ–‰ ์ค‘์ธ ์—์ด์ „ํŠธ์™€ ๋‚˜์ค‘์— ๋‹ค์‹œ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ฑฐ๋‚˜, ์ˆ˜์ฒœ ๊ฐœ์˜ ์„ธ์…˜์„ ๋™์‹œ์— ๋Œ๋ฆฌ๋ฉด์„œ๋„ ์„œ๋กœ์˜ ์ƒํƒœ๊ฐ€ ์„ž์ด์ง€ ์•Š๊ฒŒ ๋งŒ๋“ ๋‹ค.
  9. 12:10
    ์‹คํ–‰ ์ค‘์ธ ์—์ด์ „ํŠธ ๋ฃจํ”„์— ์‹ ํ˜ธ ๋ณด๋‚ด๊ธฐ ๊ธฐ์กด ์‹คํ–‰์˜ ID๋ฅผ ์ด์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—์„œ ์ถœ๋ ฅ ์กฐํšŒ, ์ทจ์†Œ, ์ƒํƒœ ์ฃผ์ž…์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ƒˆ ์ž…๋ ฅ์ด ํ˜„์žฌ ์ž‘์—…๊ณผ ๊ด€๋ จ ์žˆ์œผ๋ฉด signal๋กœ ๋„ฃ๊ณ , ์•„๋‹ˆ๋ฉด ๊ธฐ์กด ์‹คํ–‰์„ ์ค‘๋‹จํ•œ ๋’ค ์ƒˆ ์ •๋ณด๋กœ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด ๋” ์œ ์—ฐํ•˜๊ฒŒ ๋ฃจํ”„๋ฅผ ์ œ์–ดํ•œ๋‹ค.
  10. 13:51
    ์Šคํƒ์„ ์ทจ์†Œํ•˜๊ณ  ๋˜๊ฐ๊ธฐ ์ค‘๊ฐ„์— ์ฃผ์ œ๊ฐ€ ๋ฐ”๋€Œ๋ฉด coordinator๊ฐ€ ์ง„ํ–‰ ์ค‘์ธ ์‹คํ–‰๊ณผ ํ•˜์œ„ sub-agent๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ์ทจ์†Œํ•˜๊ณ  ์ƒˆ ์ž‘์—…์œผ๋กœ ์ „ํ™˜ํ•œ๋‹ค. ์ด ์ทจ์†Œ๋Š” ํ˜ธ์ถœ ์ฒด์ธ ์ „์ฒด์— ์ „ํŒŒ๋˜์–ด ์—์ด์ „ํŠธ ์Šคํƒ์„ ๋˜๊ฐ๋Š” ํšจ๊ณผ๋ฅผ ๋‚ธ๋‹ค.
  11. 17:19
    ๋ถ„์‚ฐ ๋กœ๊ทธ ๋‚ด๋ถ€ ๊ตฌ์กฐ Restate์˜ ๋‚ด๋ถ€๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ €์žฅํ•˜๋Š” log์™€ event loop๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๋“ค์–ด์˜จ ์ด๋ฒคํŠธ์— ๋”ฐ๋ผ ์ƒํƒœ ์ €์žฅ, ํƒ€์ด๋จธ ์„ค์ •, ๋‹ค๋ฅธ ์—์ด์ „ํŠธ ํ˜ธ์ถœ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. push ๋ชจ๋ธ์ด๋ผ ์ง€์—ฐ์ด ๋‚ฎ๊ณ  serverless์™€ ์ž˜ ๋งž์œผ๋ฉฐ, ๋‹จ์ผ binary, ์—ฌ๋Ÿฌ SDK, BYOC/managed cloud๊นŒ์ง€ ์ œ๊ณตํ•ด ์šด์˜๊ณผ ํ™•์žฅ์ด ์‰ฝ๋‹ค.

์‹ค๋ฌด ์ธ์‚ฌ์ดํŠธ

  • ์—์ด์ „ํŠธ ์šด์˜์˜ ๋ณ‘๋ชฉ์€ ๋ชจ๋ธ ์„ฑ๋Šฅ๋ณด๋‹ค ์‹คํ–‰ ๋ณต๊ตฌ์™€ ์ƒํƒœ ์ผ๊ด€์„ฑ์— ์žˆ์œผ๋ฏ€๋กœ, ๋จผ์ € durable execution๊ณผ journal ์„ค๊ณ„๋ฅผ ์žก์•„์•ผ ํ•œ๋‹ค.
  • ์ธ๊ฐ„ ์Šน์ธ, ์™ธ๋ถ€ API ์‹คํŒจ, ๋ฐฉํ–ฅ ์ „ํ™˜์ฒ˜๋Ÿผ ํ˜„์‹ค์—์„œ ์ž์ฃผ ์ƒ๊ธฐ๋Š” ์ด๋ฒคํŠธ๋ฅผ signal, cancel, suspend๋กœ ๋‹ค๋ค„์•ผ ์žฅ๊ธฐ ์‹คํ–‰ ์—์ด์ „ํŠธ๊ฐ€ ์‹ค๋ฌด์— ์“ธ ์ˆ˜ ์žˆ๋‹ค.
  • ๋Œ€๊ทœ๋ชจ ์—์ด์ „ํŠธ ์‹œ์Šคํ…œ์€ ์›Œํฌํ”Œ๋กœ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜๋งŒ์œผ๋กœ ๋ถ€์กฑํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์„ธ์…˜ ๊ฒฉ๋ฆฌ์™€ ํ†ต์‹  ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ƒํƒœful ์‹คํ–‰ ๋ชจ๋ธ์ด ์œ ๋ฆฌํ•˜๋‹ค.