Every step you take, every call you make: the reliable agent stack โ Giselle van Dongen, Restate
ํ ์ค ํต์ฌ
์์ด์ ํธ๋ฅผ ํ๋ก๋์ ์์ ์์ ์ ์ผ๋ก ์ด์ํ๋ ค๋ฉด ๋ชจ๋ธ ์์ฒด๋ณด๋ค ์คํ ๋ณต๊ตฌ, ์ํ ๊ด๋ฆฌ, ์ธ๊ฐ ์น์ธ, ์ ํธ ์ ๋ฌ, ์ทจ์ ๊ฐ์ ์ธํ๋ผ ์ธต์ด ํต์ฌ์ด๋ฉฐ, Restate๋ ์ด๋ฅผ ์ํ durable foundation์ ์ ์ํ๋ค.
์๊ฐ๋ณ ์์ฝ
-
0:00
์ธ ๊ฐ์ ๋ฌผ๊ฒฐ๊ณผ ์์ด์ ํธ์ ๋ฐฉํฅ LLM์ ์ง์์๋ต ๋๊ตฌ์์ ๋๊ตฌ๋ฅผ ์ฐ๋ ์์ด์ ํธ๋ก, ๋ค์ ์ฅ๊ธฐ๊ฐ ๋น๋๊ธฐ์ ์ผ๋ก ๋์ํ๋ ์์ ํ๋ก์ธ์ค๋ก ์งํํ๊ณ ์๋ค. ๋ฐ๋ผ์ ์์ด์ ํธ ํ์ฉ์ด ๋จ์ผ ์์ ์์ ์กฐ์ง ์ ์ฒด๋ฅผ ์๋ ํ๋ซํผ์ผ๋ก ๋ฐ๋์๋ก ์ธํ๋ผ๋ ๊ทธ์ ๋ง๊ฒ ์งํํด์ผ ํ๋ค.
-
1:53
์๋ฌด๋ ์ฐ๊ณ ์ถ์ด ํ์ง ์๋ ์ธํ๋ผ ๊ณ์ธต ์์ด์ ํธ๋ฅผ ์ค์ ์ด์ํ๋ ค๋ฉด retry, recovery ๊ฐ์ ๋ณต์กํ ๋ก์ง๊ณผ ๋ถ์ฐ ์คํ์ ๊ฐ์ธ๋ ์ถ๊ฐ ์ธํ๋ผ๊ฐ ํ์ํ๋ค. Restate๋ ์ด๋ฐ ๋ถ๋ด์ ์ค์ฌ ์ฃผ๋ ์คํ์์ค durable foundation์ผ๋ก, ์์ด์ ํธ๋ฟ ์๋๋ผ ์ผ๋ฐ ๋ฐฑ์๋์๋ ์ ์ฉํ ์ ์๋ค.
-
2:45
์ง์ ๊ฐ๋ฅํ ๊ธฐ๋ฐ์ ๋ค ๊ฐ์ง ์์ ์ง์ ๊ฐ๋ฅํ ๊ธฐ๋ฐ์ ๋จ์ผ ์คํ ๋ณต๊ตฌ, ๋ค์ค ์ธ์ ๋์์ฑ, ์์ด์ ํธยทMCP ์๋ฒยท๋๊ตฌ ๊ฐ ํต์ , ๊ทธ๋ฆฌ๊ณ ์ค๋จยท์ทจ์ ์ ์ด์ ๋ค ๊ฐ์ง๋ก ์ ๋ฆฌ๋๋ค. Restate๋ ์๋น์ค ์๋จ์์ ์์ฒญ๊ณผ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ journal๋ก ์ํ๋ฅผ ๋จ๊ธฐ๊ณ , ์ด๋ฅผ ๋ฐํ์ผ๋ก ์คํจ ํ์๋ ์ ํํ ์ด์ด์ ์คํํ๊ฒ ํ๋ค.
-
4:29
journal์ด ์คํจํ ์คํ์ ๋ณต๊ตฌํ๋ ๋ฐฉ์ ์ผ๋ฐ ํจ์๋ฅผ ์ฅ๊ธฐ ์คํยท์ํ ๋ณด์กดยท๋ณต๊ตฌ ๊ฐ๋ฅํ ํ๋ก์ธ์ค๋ก ๋ฐ๊พธ๋ ํต์ฌ์ ์ด๋ฒคํธ journal์ด๋ค. ์์ด์ ํธ๊ฐ ์คํ ์ค ๋ณด๋ธ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋กํด ๋๋ฉด, ์ฅ์ ๊ฐ ๋๋ ๊ทธ ์์ ๋ถํฐ ์ฌ๊ฐํ ์ ์๋ค.
-
5:20
Slack ์ ๋ฅ ๋ฆฌ์์น ์์ด์ ํธ ๋ฐ๋ชจ Slack์์ ์ง๋ฌธ์ ๋ฐ๋ deep research agent๊ฐ planner, ๋ณ๋ ฌ sub-agent, writer ํ๋ฆ์ผ๋ก ๋์ํ๋ฉฐ, UI์์๋ ํ์ฌ ์คํ๊ณผ journal์ ํ์ธํ ์ ์๋ค. ๋์ค์ API ์คํจ๊ฐ ๋๋ journal์ ์ด์ฉํด ์ฌ์๋ํ๊ณ , ์ฒ์๋ถํฐ ๋ค์ ์์ํ์ง ์๊ณ ์งํ ์ํฉ์ ๋ณต๊ตฌํ๋ค.
-
7:51
์ฝ๋์์ ํ ๋จ๊ณ๋ฅผ ์ง์ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๊ธฐ Restate์์๋ HTTP handler๋ฅผ ์์ฑํ๊ณ `restate.run`์ผ๋ก ๊ฐ์ผ ๋จ๊ณ๊ฐ durable step์ด ๋๋ค. ์ด๋ ๊ฒ ๋ง๋ ์คํ์ ๋ ์๊ฐ ๋ค๋ ๋ ๋ฌ ๋ค๋ ๊ฐ์ ์ง์ ์์ ๋ณต๊ตฌ๋๋ฏ๋ก, ์คํจ ๋ณต๊ตฌ๋ฟ ์๋๋ผ ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์๋ ์ ํฉํ๋ค.
-
8:42
ํ ๋ฌ์ง๋ฆฌ ์ธ๊ฐ ์น์ธ๋ ๋ฉ์ถ์ง ์๊ฒ ํ๊ธฐ ์ธ๊ฐ ์น์ธ์ด ํ์ํ ๊ฒฝ์ฐ durable promise๋ฅผ journal์ ๋จ๊ฒจ ๋๊ณ ์คํ์ ์ผ์ ์ ์งํ ์ ์๋ค. ์๋ฒ๋ฆฌ์ค ํ๊ฒฝ์์๋ ์คํ ์๊ฐ์ ๊ณ์ ์ ์ ํ์ง ์์ผ๋ฉฐ, ์น์ธ ์๋ต์ด ์ค๋ฉด ์ค๋จํ ์ง์ ๋ถํฐ ๋ค์ ์ด์ด์ ์งํํ๋ค.
-
9:32
์ํ๋ฅผ ๊ฐ์ง ์กํฐ๋ก์์ ๊ฐ์ ๊ฐ์ฒด ์ํฌํ๋ก๋ณด๋ค ๋ ์ ์ ํ ๋ชจ๋ธ์ session ID์ ๊ฒฉ๋ฆฌ๋ key-value state, ๊ทธ๋ฆฌ๊ณ durable handler๋ฅผ ๊ฐ์ง virtual object์ด๋ค. ์ด ๊ตฌ์กฐ๋ ์คํ ์ค์ธ ์์ด์ ํธ์ ๋์ค์ ๋ค์ ์ํธ์์ฉํ๊ฑฐ๋, ์์ฒ ๊ฐ์ ์ธ์ ์ ๋์์ ๋๋ฆฌ๋ฉด์๋ ์๋ก์ ์ํ๊ฐ ์์ด์ง ์๊ฒ ๋ง๋ ๋ค.
-
12:10
์คํ ์ค์ธ ์์ด์ ํธ ๋ฃจํ์ ์ ํธ ๋ณด๋ด๊ธฐ ๊ธฐ์กด ์คํ์ ID๋ฅผ ์ด์ฉํ๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค์์ ์ถ๋ ฅ ์กฐํ, ์ทจ์, ์ํ ์ฃผ์ ์ด ๊ฐ๋ฅํ๋ค. ์ ์ ๋ ฅ์ด ํ์ฌ ์์ ๊ณผ ๊ด๋ จ ์์ผ๋ฉด signal๋ก ๋ฃ๊ณ , ์๋๋ฉด ๊ธฐ์กด ์คํ์ ์ค๋จํ ๋ค ์ ์ ๋ณด๋ก ๋ค์ ์์ํด ๋ ์ ์ฐํ๊ฒ ๋ฃจํ๋ฅผ ์ ์ดํ๋ค.
-
13:51
์คํ์ ์ทจ์ํ๊ณ ๋๊ฐ๊ธฐ ์ค๊ฐ์ ์ฃผ์ ๊ฐ ๋ฐ๋๋ฉด coordinator๊ฐ ์งํ ์ค์ธ ์คํ๊ณผ ํ์ sub-agent๋ค์ ์์๋๋ก ์ทจ์ํ๊ณ ์ ์์ ์ผ๋ก ์ ํํ๋ค. ์ด ์ทจ์๋ ํธ์ถ ์ฒด์ธ ์ ์ฒด์ ์ ํ๋์ด ์์ด์ ํธ ์คํ์ ๋๊ฐ๋ ํจ๊ณผ๋ฅผ ๋ธ๋ค.
-
17:19
๋ถ์ฐ ๋ก๊ทธ ๋ด๋ถ ๊ตฌ์กฐ Restate์ ๋ด๋ถ๋ ์ด๋ฒคํธ๋ฅผ ์ ์ฅํ๋ log์ event loop๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๋ค์ด์จ ์ด๋ฒคํธ์ ๋ฐ๋ผ ์ํ ์ ์ฅ, ํ์ด๋จธ ์ค์ , ๋ค๋ฅธ ์์ด์ ํธ ํธ์ถ์ ์ํํ๋ค. push ๋ชจ๋ธ์ด๋ผ ์ง์ฐ์ด ๋ฎ๊ณ serverless์ ์ ๋ง์ผ๋ฉฐ, ๋จ์ผ binary, ์ฌ๋ฌ SDK, BYOC/managed cloud๊น์ง ์ ๊ณตํด ์ด์๊ณผ ํ์ฅ์ด ์ฝ๋ค.
์ค๋ฌด ์ธ์ฌ์ดํธ
- ์์ด์ ํธ ์ด์์ ๋ณ๋ชฉ์ ๋ชจ๋ธ ์ฑ๋ฅ๋ณด๋ค ์คํ ๋ณต๊ตฌ์ ์ํ ์ผ๊ด์ฑ์ ์์ผ๋ฏ๋ก, ๋จผ์ durable execution๊ณผ journal ์ค๊ณ๋ฅผ ์ก์์ผ ํ๋ค.
- ์ธ๊ฐ ์น์ธ, ์ธ๋ถ API ์คํจ, ๋ฐฉํฅ ์ ํ์ฒ๋ผ ํ์ค์์ ์์ฃผ ์๊ธฐ๋ ์ด๋ฒคํธ๋ฅผ signal, cancel, suspend๋ก ๋ค๋ค์ผ ์ฅ๊ธฐ ์คํ ์์ด์ ํธ๊ฐ ์ค๋ฌด์ ์ธ ์ ์๋ค.
- ๋๊ท๋ชจ ์์ด์ ํธ ์์คํ ์ ์ํฌํ๋ก ์ค์ผ์คํธ๋ ์ด์ ๋ง์ผ๋ก ๋ถ์กฑํ ์ ์์ผ๋ฏ๋ก, ์ธ์ ๊ฒฉ๋ฆฌ์ ํต์ ์ ์ด๊ฐ ๊ฐ๋ฅํ ์ํful ์คํ ๋ชจ๋ธ์ด ์ ๋ฆฌํ๋ค.