κΈ΄ μμ , μΉμΈ λκΈ°, μΈλΆ μ₯μ κ° λΌμ΄λλ μκ°μλ βν λ²μ λλλ μ€νβ κ°μ μ΄ κΉ¨μ§λλ€. Durable Executionμ μ€λ¨ νμλ μ΄μ΄μ μ§νν μ μκ² νλ μ΄μ μ₯μΉμ λλ€.
AI νμ© μλ΄: μ΄ λ¬Έμλ μμ±ν AIλ₯Ό νμ©ν΄ μμ±νμΌλ©°, Pydantic AI 곡μ λ¬Έμλ₯Ό 1μ°¨ μΆμ²λ‘ κ²ν ν΄ μ 리νμ΅λλ€.
곡μλ¬Έμ νλ¦ μ κ² (κ°μ 보μ)
- νλ¦: Durable execution κ°λ /μ μ© μ‘°κ±΄ β Prefect/Temporal ν΅ν© μ ν β idempotencyΒ·retryΒ·activity μ€μ β κ΄μΈ‘(Logfire)κ³Ό μ΄μ λ°°μΉ.
- μ΄λ² νΈμμ λΉ μ§λ©΄ μ λλ ν¬μΈνΈ:
- βμ₯κΈ° μ€νβκ³Ό βμ¬μλβλ₯Ό λΆλ¦¬ν΄ μ€λͺ νλ€(κ°μ§ μμ).
- μν¬νλ‘ μμ§ μ ν κΈ°μ€(ν μ΄μνκ²½/μ€μΌμ€/μΉμΈλκΈ°)μ κ°μμ λ£λλ€.
- μΊμ±Β·λ©±λ±μ± κΈ°μ€ μμ΄ λμ νμ§ μλλ‘ κ²½κ³ λ₯Ό λͺ μνλ€.
- 곡μ λ¬Έμ μ²΄ν¬ λ§ν¬:
Durableμ΄ νμν λν μν©
- 10λΆ μ΄μ 걸리λ μ₯κΈ° μ²λ¦¬
- μ¬λ μΉμΈ(HITL) λκΈ°
- μΈλΆ API μΌμ μ₯μ κ° μ¦μ μν¬νλ‘μ°
곡μ λ¬Έμ:
- Overview: https://ai.pydantic.dev/durable_execution/overview/
- Prefect/Temporal μ°κ³ λ¬Έμ μ°Έμ‘°
flowchart TD A[μμ μμ] --> B[μ€κ° μν μ μ₯] B --> C{μ₯μ /μ€λ¨?} C -->|μλμ€| D[λ€μ λ¨κ³ μ§ν] C -->|μ| E[볡ꡬ ν μ¬κ°] E --> D D --> F[μλ£]
λ―Έλ μ¬λ‘ A: λ°°μΉ μμ μ΄ μ€κ°μ λκΈ°λ©΄ μ²μλΆν° λ€μ νλ λ¬Έμ
μ€κ° μν μ μ₯μ΄ μμ΄μ μ€ν¨ν λλ§λ€ μ 체 μ¬μ€νμ΄ νμνμ΅λλ€. Durable λ°©μμΌλ‘ 체ν¬ν¬μΈνΈλ₯Ό λ¨κΈ°μ 볡ꡬ μκ°μ΄ λ¨μΆλμ΅λλ€.
λ―Έλ μ¬λ‘ B: μΉμΈ λκΈ° μ€ νλ‘μΈμ€κ° νμμμλλ λ¬Έμ
μ¬λ μΉμΈκΉμ§ κΈ°λ€λ¦¬λ λμ μΈμ μ΄ λ§λ£λμ΅λλ€. Durable μν¬νλ‘μ°λ‘ λκΈ° μνλ₯Ό μ μ₯νκ³ μΉμΈ ν μ¬κ°νλλ‘ λ°κΏ ν΄κ²°νμ΅λλ€.
μ€λ¬΄ μ μ© μμ
- μ€λ¨ κ°λ₯ μ§μ μλ³
- μ¬κ°μ νμν μ΅μ μν μ μ
- λ¨κ³λ³ idempotency(μ€λ³΅ μ€ν μμ μ±) ν보
- 볡ꡬ μλλ¦¬μ€ λ¦¬νμ€
μ±κ³΅ νμ :
- μ₯μ ν μ²μλΆν° μ¬μ€ν λΉμ¨μ΄ μ€μλ€
- μΉμΈ λκΈ° μλ리μ€λ₯Ό μμ μ μΌλ‘ μ²λ¦¬νλ€
- 볡ꡬ μ μ°¨κ° λ¬Έμνλμ΄ μλ€