๊ธฐ๋ณธ ์๋ฌ ์ฒ๋ฆฌ
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 ์ฑ๊ณต
- ์คํจํ ํ์ผ ๋ชฉ๋ก ๋ฐํ