κΈ°λ³Έ μλ¬ μ²λ¦¬
Workflowμμ λ°μν μλ¬λ μΌλ°μ μΈ try-catch λ¬ΈμΌλ‘ μ²λ¦¬ν©λλ€. μλ¬λ₯Ό λ‘κΉ νκ³ , νμν κ²½μ° μ¬λ°μμμΌ workflowλ₯Ό μ€ν¨ μνλ‘ λ§λλλ€.logger.error()λ‘ μλ¬ κΈ°λ‘throw errorλ‘ workflow μ€ν¨ μ²λ¦¬- μ€ν¨ν workflowλ Workerκ° μλμΌλ‘ μ¬μλ
Stepλ³ μλ¬ μ²λ¦¬
λͺ¨λ stepμ΄ νμλ μλλλ€. μΌλΆ stepμ μ€ν¨ν΄λ workflowλ₯Ό κ³μ μ§νν μ μμ΅λλ€. μ΄λ° μ νμ stepμ try-catchλ‘ κ°μΈμ μλ¬λ₯Ό ν‘μν©λλ€.- μΊμ± μ€ν¨ (λ°μ΄ν°λ μ μ₯λμ΄μΌ ν¨)
- μλ¦Ό λ°μ‘ μ€ν¨ (μ£Όλ¬Έμ μλ£λμ΄μΌ ν¨)
- λ‘κ·Έ κΈ°λ‘ μ€ν¨ (λΉμ¦λμ€ λ‘μ§μ κ³μ)
μ¬μλ ν¨ν΄
μλ μ¬μλ
μΈλΆ APIλ λ€νΈμν¬ μμ²μ μΌμμ μΌλ‘ μ€ν¨ν μ μμ΅λλ€. μ΄λ° κ²½μ° μ¬λ¬ λ² μ¬μλνμ¬ μ±κ³΅λ₯ μ λμΌ μ μμ΅λλ€.- μ΅λ 3λ² μλ
- μλ μ¬μ΄μ 5μ΄ λκΈ°
- λͺ¨λ μλ μ€ν¨ μ μλ¬ λ°μ
μ§μ λ°±μ€ν
μ¬μλ κ°κ²©μ μ μ λ리λ μ§μ λ°±μ€ν(Exponential Backoff) μ λ΅μ μλ² κ³ΌλΆνλ₯Ό λ°©μ§νλ©΄μ μ¬μλ μ±κ³΅λ₯ μ λμ λλ€.- 1μ°¨ μ€ν¨ β 2μ΄ λκΈ°
- 2μ°¨ μ€ν¨ β 4μ΄ λκΈ°
- 3μ°¨ μ€ν¨ β 8μ΄ λκΈ°
- 4μ°¨ μ€ν¨ β 16μ΄ λκΈ°
- μΌμμ κ³ΌλΆνμμ ν볡ν μκ° μ 곡
- μλ² λΆν λΆμ°
- μ¬μλ μ±κ³΅λ₯ ν₯μ
보μ νΈλμμ
λΆμ° νΈλμμ μμλ μΌλΆ μμ μ΄ μ€ν¨νλ©΄ μ΄λ―Έ μλ£λ μμ μ λλλ €μΌ ν©λλ€. μ΄λ₯Ό 보μ νΈλμμ (Compensating Transaction)μ΄λΌκ³ ν©λλ€.- κ° μμ μ μλ£ μν μΆμ
- μ€ν¨ λ°μ μ μλ£λ μμ νμΈ
- μμμΌλ‘ μμ μ·¨μ
- μλ¬ μ¬λ°μ
- κ²°μ μ·¨μ
- μ¬κ³ 볡μ
- μμ½ μ·¨μ
- νμΌ μμ
νμμμ μ²λ¦¬
μΈλΆ APIκ° μλ΅νμ§ μμΌλ©΄ workflowκ° λ¬΄νμ λκΈ°ν μ μμ΅λλ€. νμμμμ μ€μ νμ¬ μΌμ μκ° ν μ€ν¨ μ²λ¦¬ν©λλ€.- μ§§μ νμμμ (5-10μ΄): λΉ λ₯Έ API
- μ€κ° νμμμ (30-60μ΄): μΌλ° API
- κΈ΄ νμμμ (5-10λΆ): νμΌ μ²λ¦¬
μλ¬ νμ λ³ μ²λ¦¬
μλ¬μ μ’ λ₯μ λ°λΌ λ€λ₯Έ μ²λ¦¬ μ λ΅μ μ¬μ©ν©λλ€. λ€νΈμν¬ μλ¬λ μ¬μλνμ§λ§, λ°μ΄ν° κ²μ¦ μλ¬λ μ¦μ μ€ν¨ μ²λ¦¬ν©λλ€.| μλ¬ νμ | μ²λ¦¬ λ°©λ² | μμ |
|---|---|---|
| μΌμμ μλ¬ | μ¬μλ | λ€νΈμν¬, νμμμ, 503 |
| μꡬμ μλ¬ | μ¦μ μ€ν¨ | κ²μ¦, μΈμ¦, 404 |
| λΆλΆ μ€ν¨ | μ νμ μ²λ¦¬ | μΌλΆ λ°μ΄ν° μμ |
μ€μ μμ
1. μ΄λ©μΌ λ°μ‘ with Dead Letter Queue
μ΄λ©μΌ λ°μ‘μ΄ 3λ² μ€ν¨νλ©΄ Dead Letter Queueμ μΆκ°νμ¬ λμ€μ μλμΌλ‘ μ²λ¦¬ν©λλ€.- 3λ² μ¬μλ μ€ν¨
- DLQμ μΆκ° (λμ€μ μ²λ¦¬)
- κ΄λ¦¬μμκ² μλ¦Ό
2. API νΈμΆ with Circuit Breaker
μΈλΆ APIκ° κ³μ μ€ν¨νλ©΄ **νλ‘ μ°¨λ¨κΈ°(Circuit Breaker)**λ‘ μμ²μ μ°¨λ¨νμ¬ μμ€ν μ 보νΈν©λλ€.- Closed: μ μ μλ
- Open: 5λ² μ€ν¨ ν μ°¨λ¨ (1λΆκ°)
- Half-Open: 1λΆ ν μ¬μλ
3. νμΌ μ λ‘λ with λΆλΆ μ¬μλ
μ¬λ¬ νμΌμ μ λ‘λν λ, κ° νμΌμ λ 립μ μΌλ‘ μ¬μλνμ¬ μΌλΆ μ€ν¨ν΄λ λλ¨Έμ§λ μ±κ³΅νλλ‘ ν©λλ€.- κ° νμΌμ΄ λ 립μ μΈ stepλ€
- νμΌλ³ 3λ² μ¬μλ
- μΌλΆ μ€ν¨ν΄λ workflow μ±κ³΅
- μ€ν¨ν νμΌ λͺ©λ‘ λ°ν
μ£Όμμ¬ν
λ€μ λ¨κ³
@workflow λ°μ½λ μ΄ν°
Workflow μ μμ μ€μΌμ€λ§ λ°°μ°κΈ°
Step
StepμΌλ‘ μμ
μ λλκ³ κ΄λ¦¬νκΈ°
Worker μ€μ
Worker νλ‘μΈμ€ μ€μ νκΈ°