์ต์ ์ํํธ์จ์ด ์์คํ ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ผ๊ด ์ ๋ฐ์ดํธ, ์ด๋ฉ์ผ ๋ฐ์ก, ๋๊ธฐ์ด ๊ธฐ๋ฐ ์ํฌํ๋ก์ ๊ฐ์ ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ํฌ๊ฒ ์์กดํฉ๋๋ค. ์ด๋ฌํ ์์ ์ ์ข ์ข ๊ธฐ๋ณธ ์์ฒญ-์๋ต ์ฃผ๊ธฐ ๋ฐ์์ ์คํ๋๋ฏ๋ก ๋ชจ๋ํฐ๋ง, ๋๋ฒ๊น ๋ฐ ๊ฒ์ฆ์ด ์ด๋ ต์ต๋๋ค. ์์ ๋ก์ง์ด ์งํํ๊ณ ์ข ์์ฑ์ด ์ปค์ง์ ๋ฐ๋ผ ์คํ ํ๋ฆ์ ๋ํ ๊ฐ์ ์ด ํ์ค๊ณผ ๋๋จ์ด์ ธ, ๋ฐ์ดํฐ ์์ค์ด๋ ์ด์ ์ฌ๊ณ ๊ฐ ๋ฐ์ํ ๋๊น์ง ์จ๊ฒจ์ง ์ค๋ฅ, ๋จ๊ณ ์๋ต ๋๋ ์๋์น ์์ ๋์์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์คํ ๊ฒฝ๋ก๋ ์ ์ด ๊ตฌ์กฐ, ์ธ๋ถ ์กฐ๊ฑด, ์ฌ์๋ ๋ก์ง, ๊ทธ๋ฆฌ๊ณ ๋ค์ด์คํธ๋ฆผ ์์คํ ์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. ๋๊ธฐ ํจ์์ ๋ฌ๋ฆฌ, ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์๋ ์กฐ๊ฑด ๋ถ๊ธฐ, ์์ฝ๋ ํธ๋ฆฌ๊ฑฐ, ๊ทธ๋ฆฌ๊ณ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ์ ๋ณต์กํ ์ค์ผ์คํธ๋ ์ด์ ์ด ํฌํจ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, ์์คํ ์์ ์ฑ์ ๋ํ ์ฌ๊ฐ์ง๋๊ฐ ์ปค์ง๊ณ ์์ผ๋ฉฐ, ์ฌ์ง์ด ์ ํ ์คํธ๋ ์ฝ๋์กฐ์ฐจ๋ ๋์์ฑ, ์ํ ๋๋ ์ธํ๋ผ ํ์ด๋ฐ์ผ๋ก ์ธํด ํ๋ก๋์ ํ๊ฒฝ์์ ์์ธกํ ์ ์๋ ๋์์ ํ ์ ์์ต๋๋ค.
๋ ์ด์ ์๊ฐ ์ฅ์ ์ธ ์ผ์๋ฆฌ๋ ์๋ค
SMART TS XL ์ฝ๋๋ฅผ ์๊ฐ์ ์คํ ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ๋ณํํ์ฌ ํธ์ฐจ์ ์จ๊ฒจ์ง ์คํจ๋ฅผ ๊ฐ์งํฉ๋๋ค.
์์ธํ ๋ณด๊ธฐ์ฌ์๋ ๋๋ฝ, ๋ถ๋ถ์ ์ผ๋ก ์๋ฃ๋ ํ๋ฆ, ๊ณ ์ ๋ ์ฝ๋, ๊ทธ๋ฆฌ๊ณ ๋น๋ฉฑ๋ฑ ๋์์ ๋ชจ๋ ๊ฒ์ฆ๋์ง ์์๊ฑฐ๋ ์คํด๋ ์์ ๊ฒฝ๋ก์ ์ฆ์์ ๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ ๋ก๊ทธ๋ง์ผ๋ก๋ ๊ฐ์งํ๊ธฐ ์ด๋ ค์ฐ๋ฉฐ, ํนํ ์ฌ๋ฌ ๋๊ธฐ์ด, ์๋น์ค ๋๋ ์์ ์ ์ ํ์ด ์๋ ๋ถ์ฐ ํ๊ฒฝ์์๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ์์ ์ด ์ค์ ๋ก ๋ถํ ์ํฉ์์ ์ด๋ป๊ฒ ์คํ๋๋์ง ์์ ํ ํ์ ํ์ง ๋ชปํ๋ฉด ๊ฐ๋ฐ ํ์ ํ๊ท, SLA ์๋ฐ, ๊ทธ๋ฆฌ๊ณ ์จ๊ฒจ์ง ๋ฐ์ดํฐ ์์์ ์ํ์ด ์ฆ๊ฐํฉ๋๋ค.
์ค๋๋ ์ํํธ์จ์ด ์์คํ ์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ด ์์ ์คํ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ฅด๋์ง ํ์ธํ๋ ๊ฒ์ ์ฌ์น๊ฐ ์๋๋๋ค. ์ด๋ ๊ท๋ชจ์ ๋ง์ถฐ ์ผ๊ด์ฑ, ๊ฐ์์ฑ, ๊ทธ๋ฆฌ๊ณ ์ด์์์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ํ์ ์กฐ๊ฑด์ ๋๋ค. ์ด๋ฅผ ์ํด์๋ ์ฌํ ๋์์ ์ธ ๋ฌธ์ ํด๊ฒฐ์ ์์กดํ๋ ๋ฐฉ์์์ ๋ฒ์ด๋ ์ ์ฒด ์์ ์๋ช ์ฃผ๊ธฐ์ ๊ฑธ์ณ ์ฌ์ ์๋ฐฉ์ ์ธ ๊ณ์ธก, ํ๋ฆ ๊ฒ์ฆ, ๊ทธ๋ฆฌ๊ณ ์ถ์ ์๊ฐํ๋ฅผ ๋์ ํด์ผ ํฉ๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ๋ณต์ก์ฑ ์ดํด
๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์ต์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด์ด์ง ์๋ ์ธ๋ ฅ์ ๋๋ค. ๋ณด๊ณ ์ ์์ฑ, ๋ฐ์ดํฐ ๋ณด๊ฐ, ์บ์ ๋ฌดํจํ, ํ์ฌ API ์ํธ์์ฉ, ๋ด๋ถ ๋ฉ์์ง๊ณผ ๊ฐ์ ์ค์ํ ์์ ์ ์ฒ๋ฆฌํ๋ฉฐ, ์ด๋ ๋ชจ๋ ์ฌ์ฉ์ ์์ฒญ ์ฃผ๊ธฐ ์ธ๋ถ์์ ์ด๋ฃจ์ด์ง๋๋ค. ์ด์ฒ๋ผ ์ค์ํ ์ญํ ์๋ ๋ถ๊ตฌํ๊ณ , ๋๊ธฐ์ ์ฝ๋ ๊ฒฝ๋ก์ ๊ฐ์ ์์ค์ ๊ฐ์์ฑ, ์ถ์ ์ฑ ๋๋ ์๊ฒฉํ ํ ์คํธ ์์ด ์ด์๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์ถ์ ํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋๋ ์์ธ
๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ๋ณธ์ง์ ์ผ๋ก ํด๋น ์์ ์ ์์ํ๋ ํธ๋ฆฌ๊ฑฐ์ ๋ถ๋ฆฌ๋์ด ์์ต๋๋ค. ์ฌ์ฉ์ ๋์์ผ๋ก ๋ฉ์์ง๊ฐ ๋๊ธฐ์ด์ ์ถ๊ฐ๋ ์ ์์ง๋ง, ์์ ์ด ์คํ๋ ๋์ฏค์ด๋ฉด ํด๋น ์ปจํ ์คํธ๊ฐ ์์ค๋๊ฑฐ๋, ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์๊ฑฐ๋, ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ์์๋์์ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ถ๋ฆฌ๋ ์คํ์ ์์ ์ถ์ ์ ๋ณต์ก์ฑ์ ์ผ๊ธฐํฉ๋๋ค.
๋๋ถ๋ถ์ ์์ ์์คํ ์ ์์ปค ํ, ํ ๋๋ ์ค์ผ์ค๋ฌ์ ์์กดํฉ๋๋ค. ์์ ์ด ํ์ ์ ๋ ฅ๋๋ฉด ์ฆ์ ์ ํ๋๊ฑฐ๋, ์ง์ฐ๋๊ฑฐ๋, ์ฌ์๋๋๊ฑฐ๋, ์๋์ผ๋ก ์ญ์ ๋ ์ ์์ต๋๋ค. ๋ก๊ทธ์๋ ์์ ์ด ์์๋์๋ค๋ ์ฌ์ค์ด ํ์๋ ์ ์์ง๋ง, ์๋๋ ๋ ผ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ๊ฐ๋์ง, ์กฐ๊ธฐ์ ์ข ๋ฃ๋์๋์ง, ๋ถํ์ํ๊ฒ ์ฌ์๋๋์๋์ง, ๋๋ ๋ฐ์ดํฐ๊ฐ ์๋ชป ๋ณ๊ฒฝ๋์๋์ง๋ ๊ฑฐ์ ํ์ ๋์ง ์์ต๋๋ค.
๋ค์์ ํ ๊ธฐ๋ฐ ์์ ์์ปค๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋จํ ์์ ๋๋ค.
def process_invoice(invoice_id):
invoice = Invoice.get(id=invoice_id)
if invoice.is_paid:
return # Job exits early, nothing to process
try:
payment_result = charge(invoice)
if payment_result.success:
invoice.mark_as_paid()
else:
invoice.mark_as_failed()
except PaymentError:
queue.retry(process_invoice, invoice_id)
๋ก๊ทธ์์ ๋ณผ ์ ์์ต๋๋ค process_invoice started, ๋ค์ PaymentError caughtํ์ง๋ง ๋ช
์์ ์ผ๋ก ๋๊ตฌํ๋์ง ์์ผ๋ฉด, ํด๋น ์ง๋ฌด์ ์์ฌ๊ฒฐ์ ๊ฒฝ๋ก, ์๋ฅผ ๋ค์ด ์กฐ๊ธฐ ์ข
๋ฃ ์ด์ ๋ ๋ฐ์ํ ๋ณ์ด ๋ด์ฉ ๋ฑ์ ๋์ ๋ณด์ด์ง ์์ต๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ด๋ฌํ ์ฌ๊ฐ์ง๋๋ ๋์ ๋์ด ๊ด๋ฆฌ ๋ถ๊ฐ๋ฅํด์ง๋๋ค.
๋น๋๊ธฐ ์คํ์ ์ผ๋ฐ์ ์ธ ์คํจ ๋ชจ๋
๋น๋๊ธฐ ์์ ์ ๊ธฐ์กด ์์ฒญ ๊ธฐ๋ฐ ์ฝ๋์ ๋ค๋ฅธ ์ฌ๋ฌ ๊ฐ์ง ์คํจ ์ ํ์ ๋์ ํฉ๋๋ค.
- ๋ถ๋ถ ์คํ: ์์ ์ด ์์๋์ง๋ง ์ค๊ฐ์ ์คํจํ์ฌ ์์คํ ์ด ์ผ๊ด๋์ง ์์ ์ํ๊ฐ ๋ฉ๋๋ค.
- ์๋ ์ข ๋ฃ: ์กฐ๊ฑด์ผ๋ก ์ธํด ์์ ์ด ํต์ฌ ๋ ผ๋ฆฌ๋ฅผ ์คํํ์ง ๋ชปํ์ง๋ง ์ด ๊ฒฐ์ ์ ๊ธฐ๋ก๋๊ฑฐ๋ ๋ชจ๋ํฐ๋ง๋์ง ์์ต๋๋ค.
- ์ค๋ณต ์ฌ์๋: ๋น๋ฉฑ๋ฑ ์์
(์:
send_email()) ์๊ฐ ์ด๊ณผ ํ ์ฌ์๋๋์ด ์ค๋ณต ์์ ์ด ๋ฐ์ํฉ๋๋ค. - ๊ณ ์ ์์ : ์คํค๋ง ๋ณ๊ฒฝ์ด๋ ๋ฐ์ดํฐ ์ญ์ ๋ก ์ธํด ์์ ํ์ด๋ก๋๊ฐ ๋ฌดํจํ๋์ง๋ง ์์ ์์คํ ์ ์ค๋ฅ ์์ด ์์ ์ ๊ณ์ ์ฒ๋ฆฌํฉ๋๋ค.
์ด๋ฌํ ๊ฐ ๋ฌธ์ ๋ ๋ฏธ๋ฌํ๊ฒ ๋ํ๋ ์ ์์ต๋๋ค. ๋ถ์ฐ ์์คํ ์์๋ ์ฌ์๋์ ์คํจ๊ฐ ์์๋๊ธฐ ๋๋ฌธ์ ๋์์ด ๋น์ ์์ ์ผ๋ก ๋ณํ๋ ์์ ์ ํ์ ํ๊ธฐ๊ฐ ๋ ์ด๋ ต์ต๋๋ค. ์์ ๋์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ด๋ฌํ ์์ ๋ถ์ผ์น๊ฐ ๋ ํฐ ๋ค์ด์คํธ๋ฆผ ํจ๊ณผ๋ฅผ ์ด๋ํฉ๋๋ค.
์ผ์๋ฆฌ ์ธํ๋ผ์์ ๊ฐ์์ฑ์ด ๋ถ์กฑํ ์ด์
์์ ์์คํ ์ ์ข ์ข ๋ด๋ถ ๊ฒ์ฌ๋ณด๋ค ์ฒ๋ฆฌ๋๊ณผ ๋ด๊ตฌ์ฑ์ ์ฐ์ ์ํฉ๋๋ค. ๋ก๊น ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ต์ํ๋์ด I/O ์ค๋ฒํค๋๋ฅผ ์ค์ ๋๋ค. ์คํ ๊ฒฝ๋ก๋ ์ผ๋ฐ์ ์ผ๋ก ํจ์ ํธ์ถ, ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ํ๋ ์์ํฌ ์์ค ์ถ์ํ ๋ด๋ถ์ ์จ๊ฒจ์ ธ ์์ต๋๋ค. ์ฌ์ฉ์ ์ง์ ๊ณ์ธก์ด๋ ์ ์ฉ ์ถ์ ๊ธฐ๋ฅ์ด ์์ผ๋ฉด ๊ฐ๋ฐ์๋ ์์ ๋ก์ง์ด ์๋ํ ๋๋ก ์๋ํ๋์ง ๊ฒ์ฆํ๋ ๋ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ํ๋ณดํ ์ ์์ต๋๋ค.
๋์ฑ์ด, ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ๋ํ ๊ด์ฐฐ ๋๊ตฌ๋ ์ข ์ข ๋ท์ ์ผ๋ก ๋ฐ๋ ค๋ฉ๋๋ค. ์งํ๋ ์์ ์๋ ์คํจ์จ์ ์ถ์ ํ ์ ์์ง๋ง, ์ด๋ค ์ฝ๋ ๊ฒฝ๋ก๊ฐ ์ฌ์ฉ๋์๋์ง ๋๋ ์ด๋ค ๊ฒฐ์ ๋ถ๊ธฐ๊ฐ ์ํ๋์๋์ง๋ ์ถ์ ํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ๋ถ์ฐ๋ ๋ก๊ทธ๋ ์ถ์ธก์ ํตํด ์ฌํ ๋ถ์ ์์ ๋์์ ์ฌ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
๋ ๋ค๋ฅธ ๋ฌธ์ ๋ ์ฝ๋์ ์์ ๊ฐ์ ๋จ์ ์ ๋๋ค. ์์ ์ ์๋ ์ ์ฅ์์ ์์ ์ ์์ง๋ง, ํธ๋ฆฌ๊ฑฐ, ํ๊ฒฝ ๋ณ์, ์ฌ์๋ ์ ์ฑ ๋ฐ ์ธ๋ถ ์ข ์์ฑ์ ๋ค๋ฅธ ๊ณณ์ ๊ตฌ์ฑ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ๋ถ๋ฆฌ๋ก ์ธํด ์์ ์ ๋์์ ์ฒ์๋ถํฐ ๋๊น์ง ์ถ๋ก ํ๊ธฐ ์ด๋ ต์ต๋๋ค.
๋ถ์ฐ ์คํ, ์ทจ์ฝํ ๊ณ์ธก, ๊ทธ๋ฆฌ๊ณ ๋ถ๋ฆฌ๋ ๊ตฌ์ฑ์ ์กฐํฉ์ ๋ถํฌ๋ช ์ฑ์ ์๋ฒฝํ ํญํ์ ๋ง๋ค์ด๋ ๋๋ค. ํ์ ๋น๋๊ธฐ ํ์ดํ๋ผ์ธ์ ๋ํ ์ ๋ขฐ๋ฅผ ์๊ณ , ๋ฒ๊ทธ๋ ์ฌ์ฉ์๋ ์์ต์ ์ํฅ์ ๋ฏธ์น ๋๊น์ง ๊ฐ์ง๋์ง ์์ ์ฑ๋ก ๋จ์ต๋๋ค.
์ด๋ฌํ ๋ณต์ก์ฑ์ ํด๊ฒฐํ๊ธฐ ์ํด ์์ง๋์ด๋ ์์ ์ด ์คํ๋๋์ง ์ฌ๋ถ๋ฟ๋ง ์๋๋ผ ํ๊ฒฝ๊ณผ ๊ท๋ชจ์ ๊ฑธ์ณ ์๋๋ ๋ ผ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ฅด๋์ง ํ์ธํ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค. ์ด๋ฅผ ์ํด์๋ ๊ฐ์ ๊ธฐ๋ฐ ๋ชจ๋ํฐ๋ง์์ ์ถ์ ๊ฐ๋ฅํ๊ณ ๊ฒ์ฆ ๊ฐ๋ฅํ ์คํ ๋ชจ๋ธ๋ง์ผ๋ก ์ ํํด์ผ ํ๋ฉฐ, ์ด๋ ๋ค์ ์น์ ์์ ๋ค๋ฃน๋๋ค.
"์์ ์คํ ๊ฒฝ๋ก"์ ์ค์ ์๋ฏธ
๋น๋๊ธฐ ์์ ์ฒ๋ฆฌ๋ ํ๋ ์์คํ ์ ์๋ก์ด ์ฐจ์์ ๋ณต์ก์ฑ์ ์ผ๊ธฐํฉ๋๋ค. ์ด๋ฌํ ์์ ์ ์ข ์ข ์ฌ์ฉ์ ์ํธ์์ฉ๊ณผ ๋ฌด๊ดํ๊ฒ, HTTP ์ฌ์ดํด ์ธ๋ถ์์, ๋๋ก๋ ์์ ํ ๋ณ๋์ ์ธํ๋ผ์์ ์คํ๋ฉ๋๋ค. ์ด๋ฌํ ์์ ์ ์ญํ ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ก์ฅ ๋ฐ์ก, ๋ฐ์ดํฐ ์ ๋ฆฌ, ๋น๋์ค ์ธ์ฝ๋ฉ, ๋ณด๊ณ ์ ์์ฑ, ๊ตฌ๋ ๋ฃ ์ฒญ๊ตฌ, ์๋ฆผ๊ณผ ๊ฐ์ ์ํฌํ๋ก๋ฅผ ๊ตฌ๋ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๋ถ๋ฆฌ๋ ํน์ฑ์ผ๋ก ์ธํด ๊ฐ๋ฐ์๊ฐ ๋๊ธฐ ๋ก์ง์ ๊ตฌ์ถํ ๋ ํ์๋ก ํ๋ ๊ฐ์์ฑ, ์ปจํ ์คํธ, ๊ทธ๋ฆฌ๊ณ ๋ณด์ ์ฅ์น๊ฐ ๋ถ์กฑํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. "์์ ์คํ ๊ฒฝ๋ก"์ ์๋ฏธ๋ฅผ ์ดํดํ๋ ๊ฒ์ ์ด๋ฌํ ๋ถํฌ๋ช ํ ๊ณ์ธต์ ์์ ์ฑ๊ณผ ๋ช ํ์ฑ์ ๋ถ์ฌํ๋ ๋ฐ ์ค์ํ ๋จ๊ณ์ ๋๋ค.
๊ฐ๋จํ ๋งํด, ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์์ ์คํ ๊ฒฝ๋ก๋ ์์ ์ด ์ ์ ๋ฐ ์์ธ ์ํฉ์์ ๋ฐ๋ฅด๋๋ก ์ค๊ณ๋ ์์ ๋ฐ ๊ฒฐ์ ๋ถ๊ธฐ์ ์์์ ๋๋ค. ์ด๋ ์์ ๋ด ๋ฐ์ดํฐ ํ๋ฆ, ๋ถ๊ธฐ ํ๊ฐ ๋ฐฉ์, ํ์ฉ๋๋ ๊ฒฐ๊ณผ, ๊ทธ๋ฆฌ๊ณ ์ธ๋ถ ์์คํ ๊ณผ์ ์ํธ ์์ฉ ๋ฐฉ์์ ์ ์ํฉ๋๋ค. ๋ ์ค์ํ ๊ฒ์, ํน์ ์ ๋ ฅ์ด๋ ์์คํ ์ํ๋ก ์์ ์ด ํธ๋ฆฌ๊ฑฐ๋ ๋ ๊ฐ๋ฐ์๊ฐ ๊ฐ์ ํ ๋๋ก ์ด๋ค ์ผ์ด ์ผ์ด๋ ๊ฒ์ธ์ง์ ๋ํ ์๋๋ฅผ ๋ด๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค.
ํ๋ฐํธ์๋ ๊ตฌ์ฑ ์์๋ REST ์๋ํฌ์ธํธ์ ๋ฌ๋ฆฌ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์ฝ๊ฒ ๊ด์ฐฐ ๊ฐ๋ฅํ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ๊ฐ์ง ์์ต๋๋ค. ํธ๋ฆฌ๊ฑฐ๋ ์ด๋ฒคํธ, ํฌ๋ก ์ผ์ ๋๋ ๋ฐ์ดํฐ ์ํ ๋ณํ์ผ ์ ์์ต๋๋ค. ์์ ์ด ํธ์ถ๋ ๋์ฏค์ด๋ฉด ์๋ ์ปจํ ์คํธ๊ฐ ๋ณ๊ฒฝ๋์์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์์ ์ ๋ด๋ถ ํ๋ฆ์ ํ์ ํ๊ณ ์ถ์ ํ์ง ์๋ ํ ์์ ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ด๋ ต์ต๋๋ค.
์๊ท๋ชจ ์์คํ ์์๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ๋์์ ๊ฒ์ฆํ๊ธฐ ์ํด ๋ช ๊ฐ์ ๋ก๊ทธ๋ฅผ ์ฝ๊ฑฐ๋ ์๋์ผ๋ก ๋ค์ ์คํํด์ผ ํ ์ ์์ต๋๋ค. ์์ญ ๊ฐ์ ๋๊ธฐ์ด, ์ฌ๋ฌ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋ ํ์ดํ๋ผ์ธ, ๊ทธ๋ฆฌ๊ณ ์ํธ ์์กด์ ์ธ ์์ ์๊ฐ ์๋ ๋ณต์กํ ํ๊ฒฝ์์๋ ์ด๋ฌํ ์๋ ๊ฒ์ฆ์ด ์ ๋๋ก ์๋ํ์ง ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ข ์ข ๋ค์๊ณผ ๊ฐ์ ์ง๋ฌธ์ ํ๊ฒ ๋ฉ๋๋ค.
- ์์ ์ด ๋ชจ๋ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ์๋ฃ๋์๋์?
- ์กฐ๊ฑด ๋ถ๊ธฐ ์ดํ์ ์๋ฌด๋ฐ ๋ฐ์์ด ์์ด ์คํจํ๋์?
- ๋์ฒด ๋ ผ๋ฆฌ๊ฐ ์ฌ์ฉ๋์ด์๋ ์ ๋ ๋ ์ฌ์ฉ๋์๋๊ฐ?
- ์ฌ์๋๋ก ์ธํด ์๋์น ์์ ์ค๋ณต์ด๋ ๋ถ์์ฉ์ด ๋ฐ์ํ๋์?
์ด๋ ์ด๋ก ์ ์ธ ๋ฌธ์ ๊ฐ ์๋๋๋ค. ์์ ํ๋ฆ์ ์ค๋ฅ๋ ๋ฐ์ดํฐ ์์ค, ์ฒญ๊ตฌ ๋๋ฝ, ๊ท์ ์๋ฐ, ๊ทธ๋ฆฌ๊ณ ์ด์ ํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ด๋ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ค๋ฅ๋ ๊ทธ ์ํฅ์ด ๋ฏธ๋ฌํ๊ณ ๋ช ๋ฐฑํ ์์คํ ์ค๋ฅ์ ๊ด๋ จ์ด ์๊ธฐ ๋๋ฌธ์ ๋ฉฐ์น ๋๋ ๋ช ์ฃผ ๋์ ๋์ ๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
์ด๋ฌํ ์นจ๋ฌต์ ์คํจ ์ํ์ ์ค์ด๋ ค๋ฉด ํ์ ๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์์ ์คํ ๊ฒฝ๋ก๋ฅผ ์ ์ํ๊ณ ์ถ์ ํด์ผ ํฉ๋๋ค. ์ฆ, ์ฝ๋์์ ์ด๋ค ์ผ์ด ์ผ์ด๋์ผ ํ๋์ง ๋ฌธ์ํํ๋ ๊ฒ๋ฟ๋ง ์๋๋ผ, ์ค์ ์คํ์ ๊ด์ฐฐํ๊ณ ์ด๋ฌํ ์์๊ณผ ๋น๊ตํ ์ ์๋ ์์คํ ์ ๊ตฌ์ถํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ํตํด์๋ง ๊ฐ๋ฐ์๋ ๊ฒฝ๊ณ ์ํฉ, ์ฌ์๋ ๋๋ ์ฑ๋ฅ ์ ํ ํ๊ฒฝ์์๋ ์์ ์ด ์๋๋ ๋๋ก ์ ํํ๊ฒ ์๋ํ๋ค๋ ํ์ ์ ๊ฐ์ง ์ ์์ต๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ๋ ผ๋ฆฌ์ ๋ํ ์ด์์ ์ธ ํ๋ฆ ์ ์
์์ ์คํ ๊ฒฝ๋ก์๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์ ์ฒด ์๋ช ์ฃผ๊ธฐ๊ฐ ํฌํจ๋ฉ๋๋ค. ์ฆ, ์ ๋ ฅ ์์ ๋ฐ ๊ฒ์ฆ๋ถํฐ ์์ฌ๊ฒฐ์ ํธ๋ฆฌ ๋ฐ ์๋น์ค ํธ์ถ์ ๊ฑฐ์ณ ์ต์ข ์ ๋ฐ์ดํธ ๋ฐ ์ถ๋ ฅ ์ฒ๋ฆฌ๊น์ง ํฌํจ๋ฉ๋๋ค. ์์ ์คํ ๊ฒฝ๋ก๋ ์ฑ๊ณต ๊ฒฝ๋ก๋ฟ ์๋๋ผ ์ฑ๊ณต ๋ฐ ์ค๋ฅ ํ๋ฆ์ ๋ชจ๋ ํฌํจํด์ผ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๋ณด๋ฅ ์ค์ธ ์๋ฆผ์ ๊ฐ์ ธ์ ๊ฐ์ธํํ๊ณ , ํ์ฌ API๋ฅผ ํตํด ์ ์กํ ํ ์ ์ก๋จ์ผ๋ก ํ์ํ๋ ์์ ์ ์ํํ๋ ๊ฒฝ์ฐ, ๊ฐ ๋จ๊ณ๋ฅผ ๊ด์ฐฐํ๊ณ ํ์ธํด์ผ ํฉ๋๋ค. ํ ํ๋ฆฟ ๋๋ฝ์ผ๋ก ์ธํด ๊ฐ์ธํ ๋จ๊ณ๊ฐ ์คํจํ๊ณ ์์ ์ด ์ ์ก์ ์์ ํ ๊ฑด๋๋ฐ๋ ๊ฒฝ์ฐ, ์ด๋ฌํ ๊ฒฝ๋ก ๋ณ๊ฒฝ์ ๋จ์ํ ๋ถ์์ฉ์ด ์๋ ์ค๋ํ ๋ณ๊ฒฝ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
์ด์์ ์ธ ๊ฒฝ๋ก์๋ ์ข ๋ฃ ์กฐ๊ฑด๊ณผ ๋ณด์ ๋ก์ง๋ ํฌํจ๋ฉ๋๋ค. ์ข ์์ฑ ์๊ฐ ์ด๊ณผ ์ ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ์ด๋ฉ์ผ ์๋น์ค์ ์ ์ํ ์ ์๋ ๊ฒฝ์ฐ ์ฌ๋ฐ๋ฅธ ๋์ฒด ๋ฐฉ์์ ๋ฌด์์ผ๊น์? ์ด๋ฌํ ๊ฒ๋ค์ ์์ธ์ ์ธ ๊ฒฝ์ฐ๊ฐ ์๋๋๋ค. ์์ ์คํ ๋ชจ๋ธ์ ์ผ๋ถ์ด๋ฉฐ ๊ด์ฐฐ ๊ฐ๋ฅํ๊ณ ๊ฒ์ฆ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
ํ์ฉ ๊ฐ๋ฅํ ์คํ ๊ฒฝ๋ก์ ์์์น ๋ชปํ ์คํ ๊ฒฝ๋ก์ ์
์คํ ๊ฒฝ๋ก๋ ๋ฐ์ดํฐ, ํ๊ฒฝ ๋๋ ์์คํ ์ํ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ์ค์ํ ๊ฒ์ ํ์ฉ๋๋ ๋ณ๋๊ณผ ์ค์ ๋ฌธ์ ๋ฅผ ๋ํ๋ด๋ ํธ์ฐจ๋ฅผ ๊ตฌ๋ถํ๋ ๊ฒ์ ๋๋ค.
ํ์ฉ ๊ฐ๋ฅํ ๋ณํ์ ์ฒ๋ฆฌํ ๋ ์ฝ๋๊ฐ ์์ ๋ ์กฐ๊ธฐ์ ์ข ๋ฃ๋๋ ์์ ์ผ ์ ์์ต๋๋ค. ์ด๋ ํจ์จ์ ์ด๊ณ ์๋์ ์ธ ์์ ์ ๋๋ค. ๋ ๋ค๋ฅธ ํ์ฉ ๊ฐ๋ฅํ ์ฌ๋ก๋ก๋ ํ๋ฆฌ๋ฏธ์ ์ฌ์ฉ์์๊ฒ๋ง ์ด๋ฉ์ผ์ ์ผ๋ถ๋ฅผ ์ ์กํ๋ ์กฐ๊ฑด๋ถ ๋ ผ๋ฆฌ๊ฐ ์์ต๋๋ค.
์์์น ๋ชปํ ๊ฒฝ๋ก๋ ๋ค์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ณํ์ ์๋์ผ๋ก ๊ฑด๋๋ฐ๊ฑฐ๋, ๋ฉฑ๋ฑํ์ง ์์ ์ฌ์๋๋ก ์ธํด ์ถ๊ฐ ์ฐ๊ธฐ๋ฅผ ์ํํ๊ฑฐ๋, ์ฒ๋ฆฌ๋์ง ์์ ์์ธ๋ก ์ธํด ์ค๊ฐ์ ์ค๋จ๋๋ ์์ ์ด ํฌํจ๋ฉ๋๋ค. ์ด๋ฌํ ๊ฒฝ๋ก๋ ๋ค์ด์คํธ๋ฆผ ์์คํ ์์ ํจํด์ด ๋ํ๋๊ฑฐ๋ ๊ณ ๊ฐ์ด ์ผ๊ด๋์ง ์์ ๋์์ ๋ณด๊ณ ํ ๋๊น์ง ์ข ์ข ๋์ ๋์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด :
if not order.is_complete:
return # Acceptable exit
# transform and send data
์ด๋ ์ ํจํฉ๋๋ค. ํ์ง๋ง ์ฌ์๋ ํ๋ ์์ํฌ๊ฐ ์ ์ฒด ํจ์๋ฅผ ๋ค์ ์คํํ๊ณ ํด๋น ํจ์์ ์ ํจ์ฑ ๊ฒ์ฌ์ ์ ์ก ๋ก์ง์ด ๋ชจ๋ ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ, ๋ฐ๋ณต์ ์ธ ํธ์ถ๋ก ์ธํด ์ค๋ณต ์ ์ถ์ด๋ ๋ถ๋ถ์ ์ธ ๋ณํ์ด ์ฝ๊ฒ ๋ฐ์ํ ์ ์์ต๋๋ค.
๊ธฐ๋๋๋ ๊ฒ์ด ๋ฌด์์ธ์ง ์ดํดํ๋ ค๋ฉด ํ ์คํธ ์ผ์ด์ค์ฒ๋ผ ์๊ฐํด์ผ ํฉ๋๋ค. "์ด ์ ๋ ฅ๊ณผ ์ด ์ํ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋์ผ ํ๋ฉฐ, ์ด๋ค ์์๋ก ์ผ์ด๋์ผ ํ ๊น?" ์ด๋ ๊ฒ ํ๋ฉด ํธ์ฐจ๋ฅผ ์๋ณํ๊ณ ํ ์คํธํ ์ ์๊ฒ ๋ฉ๋๋ค.
์ค์ ์์คํ ์ ํธ์ฐจ ์ํ
์คํ ๊ฒฝ๋ก์ ์ฐจ์ด๋ ๋ฏธ๋ฌํ์ง๋ง ์ํํ ์ ์์ต๋๋ค. ํ์์คํฌํ ์ ๋ฐ์ดํธ๋ฅผ ๊ฑด๋๋ฐ๊ฑฐ๋ ์ด๋ฒคํธ๋ฅผ ์์ฑํ์ง ๋ชปํ๋ ์์ ์ ๋ฉํธ๋ฆญ์ ์ฑ๊ณต์ผ๋ก ํ์๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ก ์ธํ ์ํฅ์ ๋์ค์ ์ฒญ๊ตฌ ์ง์ฐ, ๋ณด๊ณ ์ค๋ฅ ๋๋ ๋ค์ด์คํธ๋ฆผ ์๋น์ค ์ฅ์ ๋ก ๋ํ๋ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ธ ์ํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ถ๋ถ๋ช ํ ์ฌ์๋ ๊ฒฝ๊ณ๋ก ์ธํ ๋ฉฑ๋ฑ์ฑ ์๋ฐ
- ์๋ฅ ์์คํ ์ ๋ํ ์ฝ์ ์๋ฐ(์: ๋ถ์์ฉ์ด ๋ฐ์ํ๊ธฐ ์ ์ ์์ ์ ์๋ฃ๋ก ํ์ํ๋ ๊ฒ)
- ์ฒดํฌํฌ์ธํธ ๊ฑด๋๋ฐ๊ธฐ๋ก ์ธํด ์๊ฐ ๊ธฐ๋ฐ ๋ ผ๋ฆฌ๊ฐ ์๋ชป๋จ
- ๋ณด์ ๋๋ ๊ท์ ์ค์ ๋ ธ์ถ์ ์ ๋ฐํ๋ ๋ฌด์ ์คํจ ์คํ ๋์
์ด๋ฌํ ์คํจ๋ ์์คํ ์ ๊ธฐ๋๋๋ ๊ธฐ๋ฅ์ ๋ช ํํ๊ฒ ์ดํดํ์ง ๋ชปํ๋ฉด ๋ฐ๊ฒฌํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๋ ์ฌ๊ฐํ ๊ฒ์, ํ์ด ์ค์ ์คํ์ ์ฐธ์กฐ ๊ฒฝ๋ก์ ์ ๊ทน์ ์ผ๋ก ๋น๊ตํ์ง ์๋ ํ, ๋๋ถ๋ถ์ ์คํจ๋ ์๋ฌด๋ฐ ํ์ ๋ ๋จ๊ธฐ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
์์๋๋ ์คํ ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ธ๋งํ๊ณ ๊ฒ์ฆํจ์ผ๋ก์จ ๊ฐ๋ฐํ์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ํฌ์ฐฉํ๊ณ , ์์ ๋์์ ๋ํ ์๋ ๋ชจ๋ํฐ๋ง์ ๋์ ํ๊ณ , ๋ณด๋ค ํฌ๋ช ํ๊ณ ์์ธก ๊ฐ๋ฅํ๊ฒ ์คํจํ๋ ์์คํ ์ ๋ง๋ค ์ ์์ต๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์คํ์ ์ถ์ ํ๊ณ ํ์ธํ๋ ๊ธฐ์
์ค์ ํ๊ฒฝ์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ด ์ด๋ป๊ฒ ๋์ํ๋์ง ์ถ์ ํ๋ ค๋ฉด ๋ก๊ทธ์ ์ํ ์ฝ๋๋ง์ผ๋ก๋ ๋ถ์กฑํฉ๋๋ค. ์คํ ๊ฒฝ๋ก๋ ๋ถ๊ธฐ ๋ ผ๋ฆฌ, ๋น๋๊ธฐ ๋์, ์ฌ์๋, ์ธ๋ถ API ๋์, ๊ทธ๋ฆฌ๊ณ ๊ฒฝํฉ ์กฐ๊ฑด ๋ฑ์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. ๊ณ์ธก์ด๋ ๋ช ํํ ํ๋ฆ ๋ชจ๋ธ๋ง์ด ์๋ค๋ฉด ๊ฐ๋ฐ์๋ ์์ ์คํ ๋ฐฉ์์ ์ถ์ธกํด์ผ ํฉ๋๋ค. ํจ๊ณผ์ ์ธ ์ถ์ ๋ฐ ๊ฒ์ฆ์ ์ฌ๋ฌ ์ ํธ๋ฅผ ๊ฒฐํฉํ์ฌ ์ค์ ๋ก ๋ฐ์ํ ์ํฉ์ ๋ํ ์ ๋ขฐํ ์ ์๋ ์ ๋ณด๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ๋ฌ๋ ค ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ก๊ทธ, ์ถ์ , ๋ฐํ์ ๋ฉํธ๋ฆญ, ์์ ๋ฉํ๋ฐ์ดํฐ, ๊ทธ๋ฆฌ๊ณ ์คํ ์ค์ ์์ง๋ ์ํฉ๋ณ ๋ธ๋ ๋ํฌ๋ผ์ด ํฌํจ๋ฉ๋๋ค.
์ ๊ตฌ์ถ๋ ์์คํ ์ ์์ ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ์๋์ง, ์นจ๋ฌตํ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋์ง, ๋ถํ์ํ๊ฒ ์ฌ์๋๋์๋์ง, ๋๋ ์์๋ ํ์ ์กฐ์น๋ฅผ ์คํํ์ง ์๊ณ ์๋ฃ๋์๋์ง ๊ฐ์งํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ํต์ฌ์ ์ถ์ ์ฑ์ ์ฌํ์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์๋๋ผ ์ฒ์๋ถํฐ ์ค๊ณํ์ฌ ์ด์ ๋ฌธ์ ๋ฅผ ๋๋ฒ๊น ํ๊ฑฐ๋ ์์ ๋์์ ๋ํ ๊ฐ์ฌ๋ฅผ ์ํํ ๋ ํต์ฐฐ๋ ฅ์ ํ๋ณดํ๋ ๊ฒ์ ๋๋ค.
๋ก๊น ๋ชจ๋ฒ ์ฌ๋ก: ๋ฌด์์ ์บก์ฒํด์ผ ํ๋ฉฐ ์ด๋ป๊ฒ ์บก์ฒํด์ผ ํ ๊น์?
๋ก๊ทธ๋ ๊ฐ๋ฐ์๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ๋ด๋ถ์์ ๋ฐ์ํ๋ ์ํฉ์ ํ์ ํ๋ ๋ฐ ์ฌ์ฉํ๋ ์ฃผ์ ๋๊ตฌ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ถ๋ถ์ ๋ก๊น ์ ์๊ฑฐ๋ ์ผ๋ฐ์ ์ด์ด์ ์ ์ด ํ๋ฆ์ด๋ ์์ ์ํ ์ ํ์ ๋ํ ํต์ฐฐ๋ ฅ์ ๊ฑฐ์ ์ ๊ณตํ์ง ๋ชปํฉ๋๋ค. ์คํ ๊ฒฝ๋ก ๊ฒ์ฆ์ ๋ก๊ทธ๋ฅผ ์ ์ฉํ๊ฒ ํ์ฉํ๋ ค๋ฉด ๊ตฌ์กฐํ๋๊ณ , ์ผ๊ด์ฑ์ด ์์ผ๋ฉฐ, ์ปจํ ์คํธ๋ฅผ ์ธ์ํ ์ ์์ด์ผ ํฉ๋๋ค.
์์ ์ ๊ฐ ์ฃผ์ ๋จ๊ณ๋ ์์ ID ๋๋ ์๊ด ๊ด๊ณ ID๋ฅผ ์ฒจ๋ถํ์ฌ ์๋ฏธ ์๋ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํด์ผ ํฉ๋๋ค. ๋ฉ์์ง์๋ ๋ค์ ๋ด์ฉ์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค.
- ํ์ฌ ์์ ๋จ๊ณ ๋๋ ๋จ๊ณ
- ์ ๋ ฅ ๊ฐ ๋๋ ๊ฒฐ์ ์ปจํ ์คํธ
- ๋ค์ด์คํธ๋ฆผ ์ํธ ์์ฉ ์์ฝ(์: API์ ์๋ต ์ํ)
- ๋ชจ๋ ๋์ฒด ๋ ผ๋ฆฌ ๋๋ ์ฌ์๋ ์ํ
- ๋ช ์์ ๊ฒฐ๊ณผ(์ฑ๊ณต, ๋ถ๋ถ์ , ๊ฑด๋๋, ์คํจ)
์ :
logger.info("step=start_transform", job_id=job.id)
logger.info("step=send_email", to=user.email, status=delivery_status)
logger.info("job_complete", job_id=job.id, outcome="success")
๋ก๊ทธ๋ ๋ฐ์ํ ์ํฉ๋ฟ๋ง ์๋๋ผ ๋ฌด์์ ๊ฑด๋๋ฐ์๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ด์ ๋ ๋ฌด์์ธ์ง๋ ์ค๋ช ํด์ผ ํฉ๋๋ค. ๋๋ฝ๋ ๋ก๊ทธ ๋ผ์ธ์ ํ์ฌ ๋ก๊ทธ ๋ผ์ธ๋งํผ์ด๋ ์๋ฏธ๊ฐ ์์ ์ ์์ต๋๋ค. ํ์ ์ข ๋ฃ ์์ ๋ ๊ธฐ๋กํด์ผ ํ๋ฉฐ, ํนํ ๋ฐ์ดํฐ ๋๋ฝ์ด๋ ์๋ชป๋ ์ํ์ ๊ฐ์ ์ํฉ์ผ๋ก ์ธํด ์กฐ๊ธฐ ์ข ๋ฃ๋๋ ๊ฒฝ์ฐ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ์ด๋ฌํ ๊ธฐ๋ก์ด ์์ผ๋ฉด ์์ ์ด ์ค๊ณ๋๋ก ์ข ๋ฃ๋์์์๋ ๋ถ๊ตฌํ๊ณ ์ค๋จ๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ ์ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก, ๋ก๊ทธ๋ฅผ ์ค์ ์ง์คํํ๊ณ ์ธ๋ฑ์ฑํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค. ์ฌ๋ฌ ์๋น์ค์ ์๊ฐ๋์ ๊ฑธ์ณ ๋ก๊ทธ๋ฅผ ์ฟผ๋ฆฌํ๊ณ ์๊ด ๊ด๊ณ๋ฅผ ๋ถ์ํ ์ ์๋ค๋ฉด, ์๋ฌด๋ฆฌ ์ ๊ตฌ์ฑ๋ ๋ก๊ทธ๋ผ๋ ์์ ๊ฒฝ๋ก ์ถ์ ์ ์ฌ์ฉํ๊ธฐ ์ด๋ ค์ธ ๊ฒ์ ๋๋ค.
ํ, ์๋น์ค ๋ฐ ๋ฐ์ดํฐ ์ ์ฅ์ ๊ฐ ์์ ํ๋ฆ ์ถ์
๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์ข ์ข ์ฌ๋ฌ ์์คํ ์ ๊ฑธ์ณ ์งํ๋ฉ๋๋ค. ์์ ์ ์์ปค์์ ์์๋์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ ์์ฉํ๊ณ , API๋ฅผ ํธ์ถํ๊ณ , ๋ค๋ฅธ ์์ ์ ํ์ ์ถ๊ฐํ๊ณ , ๋ด๋ถ ์ํ๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํ์ ์ ์ถ์ ํ๋ ค๋ฉด ๋ก๊ทธ ์ด์์ ๊ฒ์ด ํ์ํฉ๋๋ค. ์ด๋ฌํ ์ด๋ฒคํธ๋ฅผ ๊ณต์ ์ปจํ ์คํธ์ ์ฐ๊ฒฐํ ์ ์๋ ๋ถ์ฐ ์ถ์ ์ด ํ์ํฉ๋๋ค.
์ถ์ ID ๋๋ ์์ ID๋ฅผ ์์ ๊ณผ ๊ด๋ จ๋ ์์คํ ์ ์ฒด์ ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ฌ๊ธฐ์๋ ํ ๋ฉ์์ง, HTTP ํค๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฃผ์ ๋๋ ์ฌ์ฉ์ ์ง์ ์๊ฒฉ ๋ถ์ ํ๋๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ด๋ฒคํธ์ ์ํด ์์ ์ด ํธ๋ฆฌ๊ฑฐ๋์ด ๋ ๊ฐ์ ํ์ ์์ ์ ๋๊ธฐ์ด์ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ, ์ธ ์์ ๋ชจ๋ ์ถ์ ์ปจํ ์คํธ์์ ๊ณตํต๋ ์์ ID๋ฅผ ๊ณต์ ํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ด์ธก ํ๋ซํผ์ ์ธ๊ณผ ๊ด๊ณ๋ฅผ ์ฌ๊ตฌ์ฑํ๊ณ ์ด๋ค ๊ฒฝ๋ก๊ฐ ์ ํ๋์๊ณ ์ด๋ค ๊ฒฝ๋ก๊ฐ ์๋ต๋์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
trace_id = generate_trace_id()
queue.send("subtask_a", trace_id=trace_id)
queue.send("subtask_b", trace_id=trace_id)
ํ์ ์์ ์ด ์คํจํ๊ฑฐ๋ ํ์ ์์ ๊ณผ ๋ค๋ฅด๊ฒ ์คํ๋๋ ๊ฒฝ์ฐ, ํ์๋ผ์ธ์์ ์ฐจ์ด์ ์ ์ถ์ ํ๊ณ ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ธ๋ถ์ฑ์ ์์๋ ํธ๋์คํ, ์ผ๊ด์ฑ ์๋ ๋ถ๊ธฐ ๋๋ ์๋์น ์์ ๊ฒฝ์ ์ํ๋ฅผ ํ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ถ์ฐ ์ถ์ ์ ๋จ๊ณ ๊ฐ ์๊ฐ์ ์ธก์ ํ์ฌ ์ง์ฐ์ด๋ ์ ์ฒด๊ฐ ๋ฐ์ํ๋ ์ง์ ์ ํ์ ํ๋ ๋ฐ์๋ ๋์์ด ๋ ์ ์์ต๋๋ค. ๋์ฉ๋ ์์คํ ์์๋ ์ด๋ฌํ ์์ ์ง์ฐ์ด ๋๋ฉ์ด์ฒ๋ผ ๋ถ์ด๋ ์ฌ๊ฐํ ์ฑ๋ฅ ์ ํ๋ SLA ์๋ฐ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
์๋ฏธ์ ์ด๋ฒคํธ ๋ฐ ์ฌ์ฉ์ ์ ์ ํ๊ทธ๋ฅผ ์ฌ์ฉํ ๊ณ์ธก
๋ก๊ทธ์ ์ถ์ ์ ์ ์์ค ๋ทฐ๋ฅผ ์ ๊ณตํ๋ ๋ฐ๋ฉด, ์๋ฏธ๋ก ์ ๊ณ์ธก์ ์๋๋ฅผ ์ค๋ช ํ์ฌ ๋ช ํ์ฑ์ ๋์ ๋๋ค. ์ฃผ์ ์ ํ์ด๋ ๋๋ฉ์ธ ์ด๋ฒคํธ์ ํ๊ทธ๋ฅผ ์ง์ ํจ์ผ๋ก์จ ์์คํ ์ ์์ ์ถ์ ๋ณด๋ค ์ถ๋ก ํ๊ธฐ ์ฌ์ด ์ ํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์จ๋ณด๋ฉ์ ์ฒ๋ฆฌํ๋ ์์ ์ ์๊ฐํด ๋ณด์ธ์. ์๋ฏธ์ ์ด๋ฒคํธ์๋ ๋ค์์ด ํฌํจ๋ ์ ์์ต๋๋ค.
- ์จ๋ณด๋ฉ ์์๋จ
- ์ด๋ฉ์ผ_ํ์ธ๋จ
- ํ์_์ด๋ฉ์ผ_์ ์ก
- ์ฌ์ฉ์_ํ๋กํ_์์ฑ๋จ
- ์จ๋ณด๋ฉ ์๋ฃ
๊ฐ ์ด๋ฒคํธ๋ ์ฌ์ฉ์ ID, ์์ ID, ํ๊ฒฝ ๋ฑ์ ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์๊ฒฉ ์ธก์ ์ด๋ฒคํธ๋ก ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ด๋ฒคํธ๋ ๋์๋ณด๋ ๊ตฌ์ถ, ํ๋ฆ ์๋ฃ ์ฌ๋ถ ํ์ธ, ์์ ์ด๋ฒคํธ๊ฐ ๋๋ฝ๋์๊ฑฐ๋ ์์๊ฐ ์๋ชป๋ ๊ฒฝ์ฐ ์๋ฆผ์ ์ ๊ณตํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ๋ชจ๋ ์์
์ด ํน์ ์ด์ ํ์ ๋๋ฌํ๋์ง ํ์ธํ ๋ ํนํ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, 10,000๊ฐ์ ์จ๋ณด๋ฉ ์์
์ด ํธ๋ฆฌ๊ฑฐ๋์์ง๋ง 9,842๊ฐ๋ง ์์ฑ๋ ๊ฒฝ์ฐ onboarding_complete, ์กฐ์ฌํ ๋งํ ์ ๋์ ๊ฒฉ์ฐจ๊ฐ ์์ต๋๋ค.
ํ๊ทธ ์ง์ ์ ์์ ์คํ๊ณผ ๋น์ฆ๋์ค ์ฑ๊ณผ ๊ฐ์ ์๊ด๊ด๊ณ๋ฅผ ํ์ ํ๋ ๋ฐ์๋ ๋์์ด ๋ฉ๋๋ค. ํน์ ์ด๋ฒคํธ ์กฐํฉ์ด ํญ์ ์ฌ์ฉ์ ์ดํ์ด๋ ์ง์ ํฐ์ผ ์ฆ๊ฐ๋ก ์ด์ด์ง๋ ๊ฒฝ์ฐ, ํด๋น ๊ฒฝ๋ก๋ฅผ ๊ฒํ ํ๊ณ ์ต์ ํํ ์ ์์ต๋๋ค.
์๋ฏธ๋ก ์ ๊ณ์ธก์ ์์ ์คํ์ ๊ตฌ์กฐํ๋ ๋์์ผ๋ก ๋ณํํ์ฌ ๋๊ท๋ชจ ๊ฒ์ฆ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๋ํ, ์์คํ ์ด ๋ด๋ถ์ ์ผ๋ก ์ด๋ป๊ฒ ๋์ํ๋์ง๊ฐ ์๋๋ผ ๋๋ฉ์ธ ์ธก๋ฉด์์ ์ด๋ค ์์ ์ ์ํํ๋์ง์ ์ด์ ์ ๋ง์ถฐ ๋ก๊ทธ ๋ฐ ์ถ์ ๊ธฐ๋ฅ์ ๋ณด์ํฉ๋๋ค.
์ฝ๋์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ๊ฒฝ๋ก ์๊ฐํ
๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ด ๋ช ๊ฐ์ ์์ฐจ์ ์ธ ๋จ๊ณ๋ณด๋ค ๋ ๋ณต์กํด์ง๋ฉด ์ฝ๋๋ง์ผ๋ก ์คํ ๊ณผ์ ์ ์ดํดํ๋ ๊ฒ์ด ์ ์ ๋ ์ด๋ ค์์ง๋๋ค. ์กฐ๊ฑด ๋ถ๊ธฐ, ์ฌ์๋, ๋น๋๊ธฐ ํ, ๋ค์ค ์๋น์ค ์ค์ผ์คํธ๋ ์ด์ ์ ๋ชจ๋ ์์ ์ ์ค์ ํ๋ฆ์ ๋ชจํธํ๊ฒ ๋ง๋ญ๋๋ค. ์ด๋ฌํ ๊ฒฝ๋ก๋ฅผ ์๊ฐํํ๋ ๊ฒ์ ๊ฐ๋ฐ์๊ฐ ์๊ฐํ๋ ์์คํ ๋์ ๋ฐฉ์๊ณผ ๋ค์ํ ์๋๋ฆฌ์ค์์ ์ฝ๋๊ฐ ์ค์ ๋ก ์ํํ๋ ์์ ์ฌ์ด์ ๊ฐ๊ทน์ ๋ฉ์ฐ๋ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค.
๋ค์ด์ด๊ทธ๋จ์ ๋ก๊ทธ ํ์ผ์ด๋ ์คํ ์ถ์ ์๋ง ์์กดํ์ง ์๊ณ , ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ด ์์คํ ์ ์ฒด์์ ์ด๋ป๊ฒ ์งํํ๊ณ ์ํธ ์์ฉํ๋์ง ๊ฐ์ฌ, ๋๋ฒ๊น ํ๊ณ ์ ๋ฌํ๋ ์ง๊ด์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
์ ์ด ํ๋ฆ ๋ฐ ๋ถ์์ฉ ๋งคํ
์คํ ๊ฒฝ๋ก ๊ฒ์ฆ์์ ๊ฐ์ฅ ํฐ ๊ณผ์ ์ค ํ๋๋ ์์ ๋ก์ง์ด ์กฐ๊ฑด ๊ตฌ์กฐ, ์ค๋ฅ ์ฒ๋ฆฌ, I/O ๋ฑ๊ณผ ์ฝํ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค๋ ๊ฒ์ ๋๋ค. ์ ์ด ํ๋ฆ์ ์๊ฐํํ๋ฉด ๋ฌธ์ ๋ฅผ ๋ถ๋ฆฌํ๊ณ ์ฃผ์ ์์ฌ ๊ฒฐ์ ์ง์ ์ ๊ฐ์กฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๊ฐ๋จํ Python ๊ธฐ๋ฐ ์์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
def process_user(user_id):
user = get_user(user_id)
if not user.is_active:
return
if not user.has_profile:
create_profile(user)
try:
send_welcome_email(user)
except EmailError:
log_email_failure(user)
์ธ๋ป ๋ณด๊ธฐ์๋ ๊ฐ๋จํด ๋ณด์ ๋๋ค. ํ์ง๋ง ์ด ๋ ผ๋ฆฌ๋ฅผ ์๊ฐ์ ์ผ๋ก ํํํด ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฌ์ฉ์๊ฐ ๋นํ์ฑ ์ํ์ธ ๊ฒฝ์ฐ ์กฐ๊ธฐ ์ข ๋ฃ ๊ฒฝ๋ก
- ํ๋กํ์ด ์กด์ฌํ๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ์กฐ๊ฑด๋ถ ํฌํฌ
- ๋ฉ์ผ ์คํจ๋ฅผ ์กฐ์ฉํ ํก์ํ ์ ์๋ try-except ๊ฒฝ๊ณ
์ด๊ฒ์ ์ ํฅ ๊ทธ๋ํ๋ก ๊ทธ๋ฆฌ๋ฉด ์ฝ๋๋ฅผ ์ฝ์ ๋ ๋ช
ํํ๊ฒ ๋๋ฌ๋์ง ์์ ์ ์๋ ๋ถ๊ธฐ ๊ฒฝ๋ก๊ฐ ๋๋ฌ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, send_welcome_email() ์คํจํ๋ฉด ์์
์ ์ฌ์๋๋์ง ์์ผ๋ฉฐ, ์ด๋ค ๊ฒฝ๊ณ ์์คํ
์๋ ์๋ฆฌ์ง ์์ต๋๋ค. ์๊ฐ์ ๋ค์ด์ด๊ทธ๋จ์ ํตํด ๊ฐ๋ฐ์์ ๊ฒํ ์๋ ์ด๋ฌํ ์ฐจ์ด๋ฅผ ๋ช
ํํ๊ฒ ํ์
ํ ์ ์์ต๋๋ค.
๋ถ์์ฉ ๋งคํ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ค์ํฉ๋๋ค. ํ๋กํ ์์ฑ, ์ด๋ฉ์ผ ์ ์ก, ์ค๋ฅ ๋ก๊น ๊ณผ ๊ฐ์ ๊ฐ ์ธ๋ถ ๋์์ ์ํ ๋ณํ๋ฅผ ๋ํ๋ ๋๋ค. ์๊ฐํ๋ฅผ ํตํด ์ด๋ฌํ ๋์์ ๋ช ํํ ๋ ์ด๋ธ์ ์ง์ ํ์ฌ ์ฝ๋์ ๊ฐ ๋ถ๋ถ์ด ์ด๋ค ์ญํ ์ ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๋จ๊ณ๊ฐ ๋ค์ด์คํธ๋ฆผ ์์คํ ์ ์ค์ํ์ง ๋ช ํํ๊ฒ ํ์ ํ ์ ์์ต๋๋ค.
์ฝ๋ ๋๋ ๋ฐํ์ ๋์์์ ์๋์ผ๋ก ๋ค์ด์ด๊ทธ๋จ ์์ฑ
์์ ๋ก์ง์ด ํ์ฅ๋จ์ ๋ฐ๋ผ ์๋ ํ๋ก์ฐจํ ์ ๋ ์ด์ ์ง์ ๊ฐ๋ฅํ์ง ์์ต๋๋ค. ๋๊ท๋ชจ ์์ ํ๋ ์์ํฌ๋ ์์ญ ๊ฐ์ง ์์ ์ ํ์ ๊ด๋ฆฌํ๋ ํ์ ๊ฒฝ์ฐ ์๋ํ๊ฐ ํ์์ ์ ๋๋ค. ์ค์ ์ฝ๋๋ ์คํ ๋์์ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ด์ด๊ทธ๋จ์ ์์ฑํ๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
ํ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ ์ ์ ๋ถ์๋๊ตฌ๋ ์ฝ๋๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ , ํจ์ ํธ์ถ, ์กฐ๊ฑด๋ฌธ, ์์ธ ๋ธ๋ก์ ์๋ณํ๊ณ , ์ ์ด ํ๋ฆ์ ๋ ๋๋งํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒฐ์ ๋ก ์ ๋ ผ๋ฆฌ์ ์ต์ํ์ ๋ฐํ์ ๋ถ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ์์ ์ ์ ํฉํฉ๋๋ค. 100% ์ ํํ์ง๋ ์์ง๋ง, ์ด๋ฌํ ๋ค์ด์ด๊ทธ๋จ์ ๊ฐ๋ฐํ์ด ๊ตฌ์ถํ ์ ์๋ ๊ธฐ๋ฐ์ ์ ๊ณตํฉ๋๋ค.
๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ถ์ ๊ธฐ๋ฐ ์๊ฐํ์์คํ ์ด ๊ตฌ์กฐํ๋ ๋ก๊ทธ๋ ์ถ์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ, ๋๊ตฌ๋ ์์ ์ ์คํ ๊ทธ๋ํ๋ฅผ ๋์ ์ผ๋ก ์ฌ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{ "event": "job_started", "job_id": "abc123" }
{ "event": "create_profile", "job_id": "abc123" }
{ "event": "send_email", "job_id": "abc123" }
{ "event": "job_complete", "job_id": "abc123" }
์ด ์ํ์ค๋ ๊ฐ ๋จ๊ณ๋ฅผ ๋ ธ๋๋ก ํ์ํ๋๋ก ๊ตฌ์ฑํ ์ ์์ผ๋ฉฐ, ํ์ดํ๋ ํ๋ฆ์ ๋ํ๋ด๊ณ ํ์ด๋ฐ๊ณผ ์ด๋ฒคํธ ์์์ ๋ฐ๋ผ ์ถ๋ก ๋๋ ๋ถ๊ธฐ ๋ ผ๋ฆฌ๋ฅผ ๋ํ๋ ๋๋ค. ์ด๋ฌํ ์๊ฐ์ ํํ์ ์คํ ์ด์ง ๋๋ ํ๋ก๋์ ํ๊ฒฝ์์ ์์ ์ด ์ด๋ป๊ฒ ๋์ํ๋์ง๋ฅผ ๋ ์ ํํ๊ฒ ๋ฐ์ํฉ๋๋ค.
๊ฐ์ฅ ๊ฒฌ๊ณ ํ ์์คํ ์ ๋ ๊ฐ์ง๋ฅผ ๊ฒฐํฉํฉ๋๋ค. ์ฝ๋ ๊ตฌ์กฐ์ ๊ธฐ๋ฐํ ๋ค์ด์ด๊ทธ๋จ์ ๋ฐํ์ ํต์ฐฐ๋ ฅ์ ๋ํ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ํ์ด๋ธ๋ฆฌ๋ ๋ฐฉ์์ ํตํด ํ์ ์ด๋ก ์ ์คํ ๊ฒฝ๋ก์ ์ค์ ์คํ ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ ์๊ฐํํ๊ณ ์ฐจ์ด์ ์ ๊ฐ์กฐํ ์ ์์ต๋๋ค.
CI/CD ๋ฐ ์ฌํ ๋ถ์์์ ์๊ฐ์ ๊ฒ์ฆ์ ์ด์
CI/CD ํ์ดํ๋ผ์ธ์ ์๊ฐ์ ์คํ ๋งต์ ํตํฉํ๋ฉด ์์ ๋์ ๋ณ๊ฒฝ ์ฌํญ์ ์กฐ๊ธฐ์ ํ์ ํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๊ฐ ์๋ก์ด ์กฐ๊ฑด์ ๋์ ํ๊ฑฐ๋ ์ฌ์๋ ๋ก์ง์ ์์ ํ๋ฉด ์ ๋ฐ์ดํธ๋ ๋ค์ด์ด๊ทธ๋จ์ ํตํด ์๋ก์ด ๋ถ๊ธฐ, ๋๋ฌํ ์ ์๋ ๋จ๊ณ ๋๋ ๋๋ฝ๋ ํด๋ฐฑ์ ๊ฐ์กฐ ํ์ํ ์ ์์ต๋๋ค.
์ด๋ฅผ ํตํด ํ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ํ์ฑ๋ฟ๋ง ์๋๋ผ ์์ ์ฑ๊ณผ ๊ฐ์์ฑ๋ ๊ฒํ ํ ์ ์์ต๋๋ค. ๋ค์ด์ด๊ทธ๋จ์ ๋ก๊น ์์ด ์๋ก์ด ์ข ๋ฃ ๊ฒฝ๋ก๊ฐ ํ์๋๊ฑฐ๋ ๋กค๋ฐฑ ๋ก์ง ์์ด ์๋ก์ด ๋ถ์์ฉ์ด ํ์๋๋ ๊ฒฝ์ฐ, ํด๋น ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ์ ์ ๋ฉด๋ฐํ ๊ฒํ ํด์ผ ํฉ๋๋ค.
์ฌํ ๋ถ์์์ ๋ค์ด์ด๊ทธ๋จ์ ๋ฌด์์ด ์๋ชป๋์๋์ง ์ค๋ช ํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์์ ์ด ์๋ฆผ ๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ์๊ฑฐ๋ ์กฐ๊ฑด์ ๋์ณ ์๋ชป ์ฌ์๋๋ ๊ฒฝ์ฐ, ์๊ฐ์ ๋งต์ ํตํด ์์ง๋์ด๊ฐ ์๋ ์ฌ๋๋ ๋ช ์ด ๋ง์ ์ด๋ฅผ ๋ช ํํ๊ฒ ํ์ ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ทผ๋ณธ ์์ธ ๋ถ์ ์๋๊ฐ ๋นจ๋ผ์ง๊ณ ์ํธ ์ดํด๋๊ฐ ๋์์ง๋๋ค.
์ ์ ๋ก์ง์ ๋ฐํ์ ์ถ์ ๋ฐ ๊ตฌ์กฐํ๋ ๋ค์ด์ด๊ทธ๋จ๊ณผ ๊ฒฐํฉํจ์ผ๋ก์จ ํ์ ์์ ์ ์์ ์ํ ๋ด์ฉ๊ณผ ์ค์ ์ํ ๋ด์ฉ ๊ฐ์ ์ฐจ์ด๋ฅผ ์ค์ผ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฒ๊ทธ๋ฅผ ์ค์ผ ๋ฟ๋ง ์๋๋ผ ์ด๋ฌํ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค์ ์์กดํ๋ ์์คํ ์ ์ ๋ขฐ๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
๋ฐ์ฐ ์คํ ๊ฒฝ๋ก ๊ฐ์ง ๋ฐ ์ฒ๋ฆฌ
๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ๊ณ ์ ๋์ด ์์ง ์์ต๋๋ค. ์ ๋ ฅ, ํ์ด๋ฐ, ์ธํ๋ผ ์กฐ๊ฑด ๋๋ ์ต๊ทผ ์ฝ๋ ์ ๋ฐ์ดํธ์ ๋ฐ๋ผ ๋์์ด ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ์คํ ๊ฒฝ๋ก ๋ถ์ผ์น๋ ์์ ์ด ์์ ํ ์คํจํ์ง ์๊ณ ์์ ๋ก์ง์์ ๋ฒ์ด๋ ๋ ๋ฐ์ํฉ๋๋ค. ์ด๋ฌํ ํธ์ฐจ๋ ์ข ์ข ์์ธ๋ฅผ ๋ฐ์์ํค์ง ์๊ณ ์์ ์ํ ๊ด์ ์์๋ "์ฑ๊ณต"์ผ๋ก ๋ณด์ผ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ๊ฒฌํ๊ธฐ ๊ฐ์ฅ ์ด๋ ค์ด ๋ฒ๊ทธ ์ค ํ๋์ ๋๋ค.
์ด๋ฌํ ๋ณํ๋ฅผ ์ฌ์ ์ ๊ฐ์งํ๋ ค๋ฉด ๊ณ์ธก๊ณผ ์ถ๋ก ์ด ๋ชจ๋ ํ์ํฉ๋๋ค. ์ด๋ฌํ ๋ณํ๋ฅผ ์ ์ ํ ์ฒ๋ฆฌํ๋ ค๋ฉด ๋ฌด๊ฒฐ์ฑ์ด๋ ์ ๋ขฐ์ฑ์ ์ ํดํ์ง ์์ผ๋ฉด์ ๋ถ๊ธฐ ํ๋ฆ์ ํ์ฉํ๊ณ ์ ์ํ๋ ์์คํ ์ ์ค๊ณํด์ผ ํฉ๋๋ค.
ํจํด ๋ถ์ผ์น๋ฅผ ํตํ ์ฐจ์ด์ ๋ฐ๊ฒฌ
์์
์ดํ์ ๊ฐ์งํ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ ์ค ํ๋๋ ์์ ํจํด๊ณผ ๊ด์ฐฐ๋ ํจํด์ ๋น๊ตํ๋ ๊ฒ์
๋๋ค. ๋ชจ๋ ์ฑ๊ณต์ ์ธ ์์
์ด ๋ค์๊ณผ ๊ฐ์ ๋ค ๊ฐ์ง ์๊ฒฉ ์ธก์ ์ด๋ฒคํธ๋ฅผ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ start, validation, processing๊ธ๋ ๋ฐ์ผ complete ๊ทธ๋ฌ๋ฉด ๋๋ฝ๋๊ฑฐ๋ ์์๊ฐ ๋ฐ๋ ์ด๋ฒคํธ๋ ํธ์ฐจ๋ฅผ ๋ํ๋ผ ์ ์์ต๋๋ค.
์์๋๋ ํจํด์ ์:
event_sequence: [job_start, validate_payload, update_model, send_result, job_complete]
์์ฐ ๊ณผ์ ์์ ๊ฐ์ง๋จ:
event_sequence: [job_start, validate_payload, job_complete]
์ด ์ฐจ์ด์ ์ ๋ค์์ ๋ํ๋ผ ์ ์์ต๋๋ค. update_model send_result ๊ฑด๋๋ฐ์์ต๋๋ค. ์ด๋ ์กฐ๊ฑด ๋ถ๊ธฐ, ์จ๊ฒจ์ง ์ค๋ฅ ๋๋ ํ๊ฒฝ ๊ตฌ์ฑ ์ค๋ฅ ๋๋ฌธ์ผ ์ ์์ต๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ถ์ธ ๋ถ์์ ํตํด ์ด๋ฌํ ๋ณํ๊ฐ ์ผํ์ฑ์ธ์ง ์๋๋ฉด ์์คํ
์ ์ฒด์ ์ํฅ์ ๋ฏธ์น๋์ง ํ์ธํ ์ ์์ต๋๋ค.
์ด ๋ฐฉ๋ฒ์ ์์ ํ๋ฆ์ด ์ด๋ฒคํธ ํ์๋ผ์ธ์ผ๋ก ๊ธฐ๋ก๋๋ ์ถ์ ๊ธฐ๋ฐ ์์คํ ์์ ํนํ ํจ๊ณผ์ ์ ๋๋ค. ๋จธ์ ๋ฌ๋๊ณผ ํต๊ณ ๊ธฐ๋ฒ์ ์ ์ฉํ์ฌ ์ผ๋ฐ์ ์ธ ์คํ ํจํด์ ํด๋ฌ์คํฐ๋งํ๊ณ ์ด์ ์งํ๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ์ ๊ตํ ๋ถ์ ์์ด๋, ์๋ ค์ง ์ ์ ์ถ์ ๊ณผ ์ต๊ทผ ์ถ์ ์ ๊ฐ๋จํ ๋น๊ตํ๋ ๊ฒ๋ง์ผ๋ก๋ ๋์ ๋์ง ์๋ ๋ก์ง ๋ณํ๋ฅผ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ๋ถ๊ธฐ ์ ํธ๋ ์๊ฐ ๋ถ๊ท์น์ฑ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก 300ms ์์ ์๋ฃ๋๋ ์์ ์ด 2์ด ์ด์ ๊ฑธ๋ฆฌ๊ธฐ ์์ํ๋ฉด ์๋ก์ด ์ฌ์๋ ๋ฃจํ, ๊ธด ์กฐ๊ฑด ๊ฒฝ๋ก ๋๋ ์จ๊ฒจ์ง ์ข ์์ฑ์ ๋ํ๋ผ ์ ์์ต๋๋ค. ์คํ ์๊ฐ ํ์คํ ๊ทธ๋จ์ ์ด๋ฌํ ๋ณํ๋ฅผ ๊ฐ์งํ๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ๋๋ค.
๋น ๋ฅด๊ฒ ์คํจํ ๋, ์ฌ์๋ํ ๋, ๋๋ ํํดํ ๋
๋ถ์ผ์น๊ฐ ๊ฐ์ง๋๋ฉด ์์คํ ์ ์ด๋ป๊ฒ ๋์ํ ์ง ๊ฒฐ์ ํด์ผ ํฉ๋๋ค. ๋ชจ๋ ์์์น ๋ชปํ ๊ฒฝ๋ก๊ฐ ์คํจ๋ฅผ ์๋ฏธํ๋ ๊ฒ์ ์๋๋๋ค. ์ฌ์๋๊ฐ ํ์ํ ๊ฒฝ๋ก๋ ์๊ณ , ๋์ฒด ๋ก์ง์ด ํ์ํ ๊ฒฝ๋ก๋ ์์ผ๋ฉฐ, ์ฐ์์ ์ธ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋น ๋ฅด๊ฒ ์คํจํด์ผ ํ๋ ๊ฒฝ๋ก๋ ์์ต๋๋ค.
๋น ๋ฅธ ์คํจ ๋ถ๋ณ์์ด ์๋ฐ๋ ๋ ์ ๋ต์ด ์ ํฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์์ ์ด ์ฌ์ฉ์ ๋ ์ฝ๋๊ฐ ์กด์ฌํ ๊ฒ์ผ๋ก ์์ํ์ง๋ง ์๋ฌด๊ฒ๋ ์ฐพ์ง ๋ชปํ๋ ๊ฒฝ์ฐ, ๋น ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์์ ์ ์งํํ๋ ๋์ ์ค๋ฅ๋ฅผ ๋ฐ์์์ผ์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ค์ด์คํธ๋ฆผ ์์ ์ ๋ฌด๊ฒฐ์ฑ์ด ์ ์ง๋๊ณ ๋ฌธ์ ๊ฐ์ง๊ฐ ๋ ์ฌ์์ง๋๋ค.
์ฌ์๋ ๋ ผ๋ฆฌ ๋คํธ์ํฌ ์๊ฐ ์ด๊ณผ๋ ์๋น์ค ๋ถ๊ฐ์ ๊ฐ์ ์ผ์์ ์ธ ๋ฌธ์ ๋ก ์์ ์ด ์คํจํ ๋ ์ ์ฉํฉ๋๋ค. ํ์ง๋ง ์ฌ์๋๋ ์ ์คํ๊ฒ ์ค๊ณํด์ผ ํฉ๋๋ค. ์ด์ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ์ง ์๋๋ก ์ต์ํ์ ๋ถ์์ฉ๋ง ๋ฐ์์ํค๋ ๋ก์ง๋ง ํฌํจํด์ผ ํฉ๋๋ค.
์:
def job():
validate_input()
try:
retry(send_invoice) # only retry the external call
except ExternalError:
log_failure()
์ ์ฒด ์์ ๊ธฐ๋ฅ์ ๋ค์ ์๋ํ๋ฉด ์ด์ค ์ฐ๊ธฐ, ์ค๋ณต ์๋ฆผ ๋๋ ์ผ๊ด๋์ง ์์ ์ํ ๋ณ๊ฒฝ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
ํด๋ฐฑ ์ผ๋ถ ๋จ๊ณ๊ฐ ์ ํ ์ฌํญ์ด๊ฑฐ๋ ์์ฐ์ค๋ฝ๊ฒ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ ๊ฒฝ์ฐ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฉํธ๋ฆญ ์๋น์ค๊ฐ ์ค๋จ๋ ๊ฒฝ์ฐ, ํด๋น ์์ ์ ํต์ฌ ๋ก์ง์ ๊ณ์ ์งํํ๋ฉด์ ๋ฉํธ๋ฆญ ์ ์ถ์ ๊ฑด๋๋ธ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ๋ ์ฌ๊ฐํ ๋ฌธ์ ๋ฅผ ๊ฐ๋ฆฌ์ง ์๋๋ก ํญ์ ๋ช ํํ๊ฒ ๊ธฐ๋กํด์ผ ํฉ๋๋ค.
๋น์ฆ๋์ค ๊ท์น์ ๋ํ ๊ฒฝ๋ก ๊ฒ์ฆ
์์ ์๋ฃ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ์์ ์ด ์งํ๋ ๊ฒฝ๋ก๋ ๋น์ฆ๋์ค ์๋์ ์ผ์นํด์ผ ํฉ๋๋ค. ํ๋๊ทธ ๋๋ฝ์ผ๋ก ์ธํด ์กฐ๊ธฐ์ ์ข ๋ฃ๋๋ ์์ ์ ์ค๊ณ๋๋ก ์๋ํ ์ ์์ง๋ง, ์ ์คํธ๋ฆผ ๋ฐ์ดํฐ์ ๊ณต๋ฐฑ์ ๋ ธ์ถ์ํฌ ์๋ ์์ต๋๋ค.
๋น์ฆ๋์ค ๊ท์น์ ์ข ์ข ์๋ฌต์ ์ ๋๋ค. ๋ชจ๋ ์ก์ฅ์ 24์๊ฐ ์ด๋ด์ ์กฐ์ ๋์ด์ผ ํ๊ณ , ๋ชจ๋ ๊ฐ์ ์ ํ์ ์ด๋ฉ์ผ์ ๋ฐ์กํด์ผ ํ๋ฉฐ, ๋ชจ๋ ์ฒญ๊ตฌ ์ฌ์๋๋ ์ถ์ ๋์ด์ผ ํฉ๋๋ค. ์ด๋ฌํ ์ ์ฑ ์ ๋ฐ๋ผ ์์ ๊ฒฝ๋ก๋ฅผ ๊ฒ์ฆํ๋ ค๋ฉด ์๋ฏธ๋ก ์ ์ธ์์ด ํ์ํฉ๋๋ค.
์ด๋ ์์ ๊ฒฐ๊ณผ๋ฅผ ๋๋ฉ์ธ ๋ฉํธ๋ฆญ๊ณผ ์ฐ๊ด์์ผ์ ๋ฌ์ฑํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ชจ๋ ์ ๋ฃ ์ฃผ๋ฌธ์ด ๋ฐฐ์ก ์์ ์ ์์ํฉ๋๊น?
- ๋ชจ๋ ์จ๋ณด๋ฉ ์๋ฃ๋ ๋ค์๊ณผ ๊ด๋ จ์ด ์์ต๋๊น?
welcome_email_sentํ์ฌ? - ๊ณ์ ํ์๋ก ์ธํด ๊ด๋ จ ์๋น์ค๊ฐ ์ง์์ ์ผ๋ก ์ ๋ฆฌ๋๊ณ ์๋์?
๋น์ฆ๋์ค ๊ท์น์ ๊ณ ๋ คํ์ฌ ์์ ์ถ์ ์ ๊ฐ์ฌํ๋ฉด ํ์ ๊ฐ์ ์ ์ผ๋ก ์ ์ฑ ์ ์ ์ฉํ ์ ์์ต๋๋ค. ์๋ํ๊ฐ ์ํฐํฐ, ๊ธฐ๊ฐ ๋๋ ์์ ์ ํ๋ณ๋ก ๊ทธ๋ฃนํํ ์ ์๋ ์ ํธ๋ฅผ ์์ฑํ๋ฉด, ํธ์ฐจ๋ฅผ ๊ฒํ ๋๋ ์์ ์ ์ํด ํ๋๊ทธ๋ก ํ์ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ ํ์ ๊ฒ์ฆ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๊ฐ ๊ท์ ์ค์ ์๊ฑด์ ์ถฉ์กฑํด์ผ ํ๋ ๊ท์ ์ฐ์ ์์ ํนํ ์ ์ฉํฉ๋๋ค. ์คํ ๊ฒฝ๋ก ๊ด์ฐฐ์ ์ํ ๊ด๋ฆฌ์ ์ผ๋ถ๊ฐ ๋ฉ๋๋ค.
ํ ์คํธ ๋ฐ ๋ชจ๋ํฐ๋ง์ ์ํ ๋ชจ๋ธ๋ง ์คํ ๊ธฐ๋์น
๊ธฐ๋์น๋ฅผ ๋ช ์์ ์ผ๋ก ๋ชจ๋ธ๋งํ๋ฉด ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ๋์์ ๊ฒ์ฆํ๋ ๊ฒ์ด ํจ์ฌ ๋ ํจ๊ณผ์ ์ ๋๋ค. ๊ฐ์ ์ด๋ ํ ๋ด๋ถ ์ง์์ ์์กดํ๋ ๋์ , ํ์ ์๋๋ฆฌ์ค ์ ๋ฐ์ ๊ฑธ์ณ ์์ ์ด ์ด๋ป๊ฒ ๋์ํด์ผ ํ๋์ง์ ๋ํ ๊ณต์์ ์ธ ํํ์ ํตํด ์ด์ ์ ์ป์ต๋๋ค. ์ด๋ฌํ ๋ชจ๋ธ์ ํ ์คํธ, ๊ด์ฐฐ ๋ฐ ๋ฐํ์ ๊ฒ์ฆ์ ์ํ ์ฒญ์ฌ์ง ์ญํ ์ ํฉ๋๋ค. ๋ํ ์์ ๊ฒฝ๋ก๋ฅผ ๊ฒํ ํ๊ณ , ์ ์ฉํ๊ณ , ์ค์ ์คํ ์ถ์ ๊ณผ ๋น๊ตํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด์ค๋๋ค.
์์ง๋์ด๋ง ํ์ "์ฌ๋ฐ๋ฅธ" ๊ฒ์ด ๋ฌด์์ธ์ง ๋ฏธ๋ฆฌ ์ ์ํจ์ผ๋ก์จ ๋ชจํธ์ฑ์ ์ค์ด๊ณ , ์ฌ๊ณ ํ ๋ถ์์ ๊ฐ์ํํ๊ณ , ์ด์์ ์กฐ๊ธฐ์ ๊ฐ์งํ๋ ์๋ํ ํด์ ํฅ์์ํต๋๋ค.
ํ ์คํธ ๊ฐ๋ฅํ ๊ตฌ์กฐ์์ ์คํ ๋ ผ๋ฆฌ ํํ
์์ ์ด ์๋๋ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ฅด๋๋ก ํ๋ ๊ฐ์ฅ ์ ๋ขฐํ ์ ์๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ ์คํ ๋ก์ง์ ํ ์คํธ ๊ฐ๋ฅํ ์ํฐํฉํธ๋ก ์ธ์ฝ๋ฉํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ์ํฐํฉํธ๋ ์ํ ๋จธ์ , ํ๋ฆ ๋ช ์ธ, ๊ตฌ์กฐํ๋ ์๋๋ฆฌ์ค ๋๋ ๋์ ๊ณ์ฝ์ ํํ๋ฅผ ์ทจํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์์ ์งํ ์ํฉ์ ๋ํ๋ด๊ธฐ ์ํด ์ํ ์ ํ ํ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํด๋ณด์ธ์.
| ํ์ฌ ์ฃผ | ์ ๋ ฅ ์กฐ๊ฑด | ๋ค์ ์ํ | ๋์ |
|---|---|---|---|
| INIT | ์ ํจํ ํ์ด๋ก๋ | ๊ฒ์ฆ๋จ | validate_payload() |
| ๊ฒ์ฆ๋จ | ์ฌ์ฉ์ ํ์ฑํ | SENT | ์ด๋ฉ์ผ ๋ณด๋ด๊ธฐ() |
| SENT | ์ด๋ฉ์ผ ์ฑ๊ณต | ์๋ฃ ๋จ | ๋ก๊ทธ_์ฑ๊ณต() |
| SENT | ์ด๋ฉ์ผ ์คํจ | ์ฌ์๋ ๋ณด๋ฅ ์ค | ์ค์ผ์ค ์ฌ์๋() |
์ด๋ฌํ ๊ตฌ์กฐ๊ฐ ๊ตฌ์ถ๋๋ฉด ๋จ์ ํ ์คํธ๋ ํตํฉ ํ ์คํธ ์ค์ ์์ ๋ก์ง์ ๊ฒ์ฆํ ์ ์์ต๋๋ค. ๊ฐ ๋ธ๋์น๋ฅผ ์๋ฎฌ๋ ์ด์ ํ์ฌ ์ ์ ํ ์ ํ, ์ค๋ฅ ์ฒ๋ฆฌ ๋ฐ ๋ถ์์ฉ์ ํ์ธํ ์ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ ์ํ๋ ๊ฒ์ ๋๋ค ์๋๋ฆฌ์ค ๊ธฐ๋ฐ ํ ์คํธ ๋น์ฆ๋์ค ํ๋ฆ์ ๋ํ๋ด๋ ์:
def test_inactive_user_exits_early():
user = User(active=False)
result = process_user(user)
assert result == 'skipped'
assert not email_was_sent(user)
์ด ํ ์คํธ๋ ๊ธฐ์ ์ ๋์๋ฟ๋ง ์๋๋ผ ๋น์ฆ๋์ค ๊ธฐ๋์น๋ ํฌํจํฉ๋๋ค. ์ฆ, ๋นํ์ฑ ์ฌ์ฉ์๋ ์งํํด์๋ ์ ๋ฉ๋๋ค. ํ ์คํธ๋ฅผ ํตํด ๊ธฐ๋์น๋ฅผ ๋ชจ๋ธ๋งํ๋ฉด ์๋ํ๋ฅผ ํตํด ํ๊ท ๋ฐ ๋ ผ๋ฆฌ ํธ๋ฅ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
ํ๋ ํ๊ท๋ฅผ ์ํ ํฉ์ฑ ์์ ์ฌ์ฉ
ํ๋ก๋์ ํ๊ฒฝ์์๋ ๊ฐ๋ฐ ๊ณผ์ ์์ ๊ณ ๋ ค๋์ง ์์ ๊ฒฝ๋ก๊ฐ ์ข ์ข ๋ฐ๊ฒฌ๋ฉ๋๋ค. ์ด๋ฌํ ๊ฒฝ๋ก๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ํ์ ํด๋น ๊ฒฝ๋ก๋ฅผ ํฌ์ฐฉํ์ฌ ์ฌํํ ์ ์์ต๋๋ค. ํฉ์ฑ ์์ ์คํ ์ด์ง ๋๋ ์๋๋ฐ์ค ํ๊ฒฝ์์. ์ด๋ฌํ ํฉ์ฑ ์๋๋ฆฌ์ค๋ ์๋์ ์ผ๋ก ๊ฒฝ๊ณ ์กฐ๊ฑด, ๊ฒฝ๊ณ ์กฐ๊ฑด, ๊ทธ๋ฆฌ๊ณ ์ด์ ์๋ ์๋ก ๋ฌ๋๋ ๊ฒฝ๋ก์ ๋์ํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์์ ์ด ๋ถ๋ถ์ ์ผ๋ก ์ ๋ฐ์ดํธ๋ ๊ฐ์ฒด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์คํจํ ๊ฒฝ์ฐ, ๋์ผํ ๋ฐ์ดํฐ ํ๋กํ์ ์ฌ์ฉํ์ฌ ํฉ์ฑ ์์ ์ ์์ฑํ ์ ์์ต๋๋ค. ์ด ์์ ์ ์ ์ด๋ ํ๊ฒฝ์์ ์คํํ๋ฉด ์๋ก์ด ๋ก์ง์ด ๋ฌธ์ ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ํด๊ฒฐํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
์ด๋ฌํ ํฉ์ฑ ์คํ์ ์ ๊ทธ๋ ์ด๋๋ ๋ฆฌํฉํฐ๋ง ์์ ์ค์๋ ์ ์ฉํฉ๋๋ค. ์๋ก์ด ์์ ์ฝ๋๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ ์ ๊ธฐ์กด ๊ฒฝ๋ก ๋ชจ๋ธ์ ์ฌ์ํ์ฌ ์ผ๊ด๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅํ ์ ์์ต๋๋ค. ์ผ๋ถ ํ์ "์ค์ ์คํ ๊ฒฝ๋ก" ์นดํ๋ก๊ทธ๋ฅผ ์ ์งํ๊ณ ๋ชจ๋ ๋ณ๊ฒฝ ํ ์ด๋ฅผ ๊ฒ์ฆํ์ฌ ์ด ๊ณผ์ ์ ์๋ํํฉ๋๋ค.
ํฉ์ฑ ํ
์คํธ๋ ์ ์๋ํฉ๋๋ค. ๊ฒฝ๋ณด ํ๋์์
์ด ๋ฐฉ์ถ๋๋๋ก ๊ณ์ธก๋ ๊ฒฝ์ฐ job_step_skipped ์ด๋ฒคํธ ๋ฐ์ ์, ํฉ์ฑ ์คํ์ ํตํด ํด๋น ๊ฒฝ๊ณ ๊ฐ ์ ํจํ ์กฐ๊ฑด์์๋ง ์คํ๋๋๋ก ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํ๋ก๋์
ํ๊ฒฝ์์ ์คํ(false positive)์ ๋ฐฉ์งํ๊ณ ๊ฒฝ๊ณ ํ์ง์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๊ฒฝ๋ก ์ธ์์ ํ์ฉํ ๋ชจ๋ํฐ๋ง ๋์๋ณด๋ ์ ๋ ฌ
๋ชจ๋ํฐ๋ง์ ๋จ์ํ "์์ ์ด ์คํ๋์๋๊ฐ?"๋ผ๋ ์ง๋ฌธ์ ๋ํ ๋ต๋ฟ ์๋๋ผ "์์ ์ด ์์๋๋ก ๋์ํ๋๊ฐ?"๋ผ๋ ์ง๋ฌธ์ ๋ํ ๋ต๋ ์ ๊ณตํด์ผ ํฉ๋๋ค. ๋์๋ณด๋์ ์๋ฆผ์ ๊ฒฝ๋ก ์ธ์ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์ ๋ ๋์ฑ ๊ฐ์น๊ฐ ์์ต๋๋ค. ์ฆ, ์ด๋ค ๋จ๊ณ๊ฐ ๋ฐ์ํ๊ณ , ์ด๋ค ๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ์๋์ง, ๊ฐ ์ ํ์ ์ผ๋ง๋ ์๊ฐ์ด ๊ฑธ๋ ธ๋์ง ์ถ์ ํ ์ ์์ต๋๋ค.
์ ์ฉํ ์๊ฐํ์ ์:
- ๋ค๋จ๊ณ ์์ ์ ์ค๋จ ์ง์ ์ ๋ณด์ฌ์ฃผ๋ Sankey ๋ค์ด์ด๊ทธ๋จ
- ๋ถ๊ธฐ ๋ ผ๋ฆฌ ์ฃผํ์์ ํํธ๋งต
- ์ฅ๊ธฐ ์คํ ์ํฌํ๋ก์ ์คํ ์ด๋ฒคํธ ํ์๋ผ์ธ
- ๋น์จ ์ฐจํธ ๋น๊ต
job_started์job_completed๋job_skippedorjob_partial
๋์๋ณด๋๋ฅผ ๊ฒฝ๋ก ์์์ ๋ง์ถฐ ์กฐ์ ํ๋ฉด ํ์ ์์คํ
๋ฌธ์ ๋ฅผ ๋ ๋นจ๋ฆฌ ๊ฐ์งํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ์์ค๋ฌ์ด ๊ฐ์ job_step_email_sent ํ ๋ฐฉ์ธ๋ ๋ค์ด๊ฐ์ง ์๊ณ job_started ์ ๋ฐ์ ์ธ ์์
์ฑ๊ณต๋ฅ ์ด ์ํธํด ๋ณด์ด๋๋ผ๋ ์์
ํ๋ฆ ์ค๊ฐ์ ๋ฌธ์ ๊ฐ ์์์ ์์ฌํฉ๋๋ค.
์ด๋ฌํ ๊ฐ์์ฑ์ ๋น์ฆ๋์ค ์ดํด๊ด๊ณ์์๊ฒ๋ ๋์์ด ๋ฉ๋๋ค. ์ด์ํ์ด๋ ์ ํํ์ด ์ง์ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ํ์ ์ด๋ฉ์ผ ๋ฐ์ก์ด ์ค๋จ๋ ๊ฒ์ ํ์ธํ๋ฉด, ๊ณ ๊ฐ์๊ฒ ์ํฅ์ ๋ฏธ์น๊ธฐ ์ ์ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ ์ ์์ต๋๋ค.
์คํ ๊ธฐ๋์น๋ฅผ ๋ช ํํ๊ฒ ๋ชจ๋ธ๋งํ๊ณ ํ ์คํธ์ ๋ชจ๋ํฐ๋ง์ ์ฐ๊ฒฐํ๋ฉด ์์ ๊ฒ์ฆ์ด ๋ฐ์์ ์ด๊ธฐ๋ณด๋ค๋ ์ฒด๊ณ์ ์ผ๋ก ์งํ๋ฉ๋๋ค.
์์ฐ ๊ณผ์ ์์ ํด๋ฅผ ๋ผ์น์ง ์๊ณ ์์ ๋์ ๊ฒ์ฆ
์ด์ ํ๊ฒฝ์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ๋์์ ๊ด์ฐฐํ๊ณ ๊ฒ์ฆํ๋ ๊ฒ์ ์คํ ์ด์ง ๋จ๊ณ์์ ๋๋ฌ๋์ง ์๋ ๋ฌธ์ ๋ฅผ ํฌ์ฐฉํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ถ์ฃผ์ํ ๊ฒ์ฌ๋ ์นจ์ต์ ์ง๋จ์ ์ฑ๋ฅ ์ ํ, ๋ฐ์ดํฐ ์ค๋ณต ๋๋ ์ด์ ์ํ์ ์ด๋ํ ์ ์์ต๋๋ค. ๋ผ์ด๋ธ ์์คํ ์์ ์คํ ๊ฒฝ๋ก๋ฅผ ๊ฒ์ฆํ๋ ค๋ฉด ๋งค์ฐ ์ ๋ฐํด์ผ ํฉ๋๋ค. ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ณ , ๊ณ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๋ฉฐ, ์๋์น ์์ ๋ถ์์ฉ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ์ต์ํํ๋ ๋ฐฉ์์ผ๋ก ์ํํด์ผ ํฉ๋๋ค.
ํ์ ์๋์ ์ด๊ณ , ์ฃผ์ ์ํฌํ๋ก์ฐ์ ๋ถ๋ฆฌ๋์ด ์์ผ๋ฉฐ, ๊ณ ์ฒ๋ฆฌ๋ ์์คํ ์๋ ์์ ํ ์์ฐ ๊ฒ์ฆ ๋ฐฉ๋ฒ์ ์ค๊ณํด์ผ ํฉ๋๋ค. ๋ชฉํ๋ ์ ๋ขฐ์ฑ์ ์ ํดํ์ง ์์ผ๋ฉด์ ํต์ฐฐ๋ ฅ์ ์ป๋ ๊ฒ์ ๋๋ค.
๋ก๊น ๋ฐ ์ถ์ ์ ํตํ ์๋์ ๊ด์ฐฐ
ํ๋ก๋์ ํ๊ฒฝ์์ ๋์์ ๊ฒ์ฆํ๋ ๊ฐ์ฅ ์ ๋ขฐํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๋์ ๊ด์ฐฐ์ ๋๋ค. ์ด๋ ์์ ์ ์์ฌ๊ฒฐ์ ์ง์ , ์ ๋ ฅ, ๊ทธ๋ฆฌ๊ณ ์ ํ์ ํฌ์ฐฉํ๋ ์ฒด๊ณ์ ์ด๊ณ ์ํฅ์ด ์ ์ ์๊ฒฉ ์ธก์ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ์ด๋ฌํ ์ ํธ๋ ๋ถ์์ ์ธ ํจ๊ณผ๋ก ๋ฐ์ํ์ง๋ง ์์ ๋์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ง์ฐ์ ์ ๋ฐํ์ง๋ ์์ต๋๋ค.
์ :
log_event("step_started", step="validate_customer", job_id=job.id)
log_event("decision_branch", condition="is_active_user", result=True)
log_event("action", performed="send_email", status="queued")
์ค์ ์์คํ ์ผ๋ก ์คํธ๋ฆฌ๋ฐ๋๋ ์ด๋ฌํ ๊ฒฝ๋ ๋ก๊ทธ๋ ์คํ ๊ฒฝ๋ก๋ฅผ ์ฌ๊ตฌ์ฑํ๊ณ ์์ ๋จ๊ณ๊ฐ ๋ฐ์ํ๋์ง ํ์ธํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ๋ํ ์์ ์ ํ, ์ฌ์ฉ์ ์ธ๊ทธ๋จผํธ, ์๊ฐ๋ ๋๋ ๋ฐฐํฌ ๋ฒ์ ๋ณ๋ก ์์ธ์ ์์ฑํ์ฌ ๊ณผ๊ฑฐ ๋ถ์์ด๋ ํ๊ท ๋ถ์๊ณผ์ ์๊ด๊ด๊ณ๋ฅผ ๋ถ์ํ ์ ์์ต๋๋ค.
๊ณผ๋ถํ๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ๋ก๊ทธ๋ฅผ ์ง๋ฅ์ ์ผ๋ก ์ ํํ๊ณ ์ํ๋งํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ ์ฒด ์ถ์ ์ 1๊ฐ ์์ ์ค 1,000๊ฐ์ ๋ํด์๋ง ์์งํ ์ ์์ง๋ง, ์ค์ ์ด๋ฒคํธ๋ ํญ์ ๊ธฐ๋ก๋ฉ๋๋ค.
๋ถ์ฐ ์์คํ
์์๋ ๋ค์๊ณผ ๊ฐ์ ์ถ์ ํค๋๊ฐ ์์ต๋๋ค. x-trace-id or x-correlation-id ๋ชจ๋ ์๋น์ค ๊ฐ ํตํ์ ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ํ์ ์ฌ๋ฌ ์๋น์ค ๋๋ ๋๊ธฐ์ด์ ๊ฑธ์ณ ์๋ ํ๋ฆ์ ์ฐ๊ฒฐํ์ฌ ์ฌ๋ฌ ๋จ๊ณ์ ์์
์ ์๋ฒฝํ๊ฒ ํ์
ํ ์ ์์ต๋๋ค.
์๋์ฐ ์ก์ค์ ๋ณ๋ ฌ ์คํ
ํ๋ก๋์ ํ๊ฒฝ์์๋ ์์ ํ๊ฒ ๊ฒ์ฆํ ์ ์๋ ๋ ๋ค๋ฅธ ๊ณ ๊ธ ๊ธฐ๋ฒ์ ์๋์ฐ ์์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์๋์ฐ ์์ ์ ์ค์ ์์ ์ ๋ณต์ ๋ณธ์ผ๋ก, ๋์ผํ ์ ๋ ฅ์ ์ฒ๋ฆฌํ์ง๋ง ๊ฒฐ๊ณผ๋ฅผ ์ค์ํ์ง ์์ ์ฑํฌ๋ก ๋ด๋ณด๋ด๋ ์ญํ ์ ํฉ๋๋ค. ์๋์ฐ ์์ ์ ์ํ ์ ๋ฐ์ดํธ, ์๋ฆผ ์ ์ก ๋๋ ์ก์ ํธ๋ฆฌ๊ฑฐ์ ์ฌ์ฉ๋์ง ์๊ณ , ๋์ ๊ฒ์ฆ์ ์ํด์๋ง ์กด์ฌํฉ๋๋ค.
์๋์ฐ ์ก์ ๋ค์๊ณผ ๊ฐ์ ์ผ์ ํ ์ ์์ต๋๋ค.
- ๋์ผํ ์ ๋ ฅ ์ด๋ฒคํธ๋ฅผ ์ฝ์ต๋๋ค
- ์ ๋ฐ์ดํธ๋ ๋ก์ง์ด๋ ์์ ์ฝ๋์ ์นด๋๋ฆฌ์ ๋ฒ์ ์ ์คํํฉ๋๋ค.
- ๋น๊ต๋ฅผ ์ํ ๊ฒฐ๊ณผ ๋ฐ ๊ฒฐ์ ๊ธฐ๋ก
- ๊ฒฉ๋ฆฌ๋ ๋ฐ์ดํฐ ์ ์ฅ์ ๋๋ ๋ชจ๋ํฐ๋ง ์์คํ ์ ์ถ๋ ฅ์ ์๋๋ค.
์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์์คํ ์ ์ค์ ๋์์ ์ํฅ์ ์ฃผ์ง ์๊ณ ํ์ฌ ์์ ๊ตฌํ๊ณผ ์ฐจ์ธ๋ ์์ ๊ตฌํ์ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํ ์ ์์ต๋๋ค. ์๋์์ ํนํ ์ฌ์์ฑ, ๋ก์ง ๋ง์ด๊ทธ๋ ์ด์ ๋๋ ๋ ์๊ฒฉํ ๊ฒ์ฆ ๊ท์น์ ๋์ ํ ๋ ์ ์ฉํฉ๋๋ค.
์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ์๋ ์์ ์ ์ฝ๊ธฐ ๋ณต์ ๋ณธ์ ์ฌ์ฉํ๊ณ , ์ฌ์๋๋ฅผ ํผํ๋ฉฐ, ๋ฎ์ ์ฐ์ ์์๋ก ์คํํด์ผ ํฉ๋๋ค. ์๋ ์์ ์ ํ๋ก๋์ ํ์ ๋ถ๋ฆฌ๋ ๋น๋๊ธฐ ์์ปค๋ฅผ ํตํด ์คํ๋ ์ ์์ต๋๋ค.
์ธ๋ถ ํจ๊ณผ๋ฅผ ์ ๋ฐํ์ง ์๊ณ ํ์ธ
ํ๋ก๋์ ๊ฒ์ฆ์์ ์ค์ํ ๊ณ ๋ ค ์ฌํญ์ ์ค๋ณต ์ด๋ฉ์ผ, ์ค์๋ก ์ธํ ์ฒญ๊ตฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์๊ณผ ๊ฐ์ ์๋์น ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฉ์งํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ์ํํ๊ธฐ ์ํด ๊ฒ์ฆ ์์คํ ์ ๋ถ์์ฉ์ ์ ๋ฐํ์ง ์๋๋ก ํ๊ฑฐ๋ ํ์ํ ๊ฒฝ์ฐ ๋ถ์์ฉ์ ๋ชจ์(mock)ํด์ผ ํฉ๋๋ค.
์ ๋ต์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
- ์ฐ๊ธฐ ๋๋ ์ธ๋ถ API ํธ์ถ์ ๊ฑด๋๋ฐ๋ ๋๋ผ์ด๋ฐ ํ๋๊ทธ ์ฌ์ฉ
- ๊ฒ์ฆ ์ค ์๋น์ค ํด๋ผ์ด์ธํธ์ ๋ํ ํ ์คํธ ๋๋ธ ์ฃผ์
- ์์๋ฐ์ด๋ ์์ฒญ์ ์บก์ฒํ์ง๋ง ์ ์กํ์ง ์์
- ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ฅ์์ ๋ํด ์ฝ๊ธฐ ์ ์ฉ ๋ชจ๋๋ก ์คํ
์ :
if DRY_RUN:
log.debug("Simulating payment execution")
else:
payment_service.charge(user)
์ด ์ ๊ทผ ๋ฐฉ์์ ํตํด ํ์ ์ค์ ์ํฉ์ ์ํฅ์ ๋ฏธ์น์ง ์๊ณ ์กฐ๊ฑด ๋ถ๊ธฐ ๋ฐ ๋ฐ์ดํฐ ๋ณํ์ ํฌํจํ ์ ์ฒด ์คํ ๊ฒฝ๋ก๋ฅผ ๊ฒ์ฆํ ์ ์์ต๋๋ค. ๊ด์ฐฐ ๊ฐ๋ฅ์ฑ๊ณผ ๊ฒฐํฉ๋์ด ๋ณ๊ฒฝ ์ค ๋ฐ ๋ณ๊ฒฝ ํ ์์ ์ ์ ํ์ฑ์ ๋ํ ํ์ ์ ๊ฐ์ง ์ ์์ต๋๋ค.
ํ๋ก๋์ ํ๊ฒฝ์์๋ ์์ ํ๊ฒ ๊ฒ์ฆํ๋ ๊ฒ์ ํ ์คํธ๋ฅผ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋ผ, ์ค์ ํ๊ฒฝ์์ ์ ํ์ฑ์ ๋ณด์ฅํ๋ ์์ ๋ง์ ๋๋ค. ์ ๋๋ก ๊ตฌํํ๋ฉด, ๋๊ท๋ชจ๋ก ๋ฐ์ํ๊ฑฐ๋, ๋ค์ํ ์ ๋ ฅ์ ๊ฑธ์ณ ๋ฐ์ํ๊ฑฐ๋, ํ๊ฒฝ์ ์์ธ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ์๋ง์ ๋ฌธ์ ๋ฅผ ํฌ์ฐฉํ ์ ์์ต๋๋ค.
์์ ์ค๊ณ์์ ๋ฐ๋ณต์ฑ๊ณผ ๋ฉฑ๋ฑ์ฑ ๋ณด์ฅ
๊ณ ์ฒ๋ฆฌ๋ ์์คํ ์์๋ ๋คํธ์ํฌ ๋ฌธ์ , ์๊ฐ ์ด๊ณผ ๋๋ ์์คํ ์ถฉ๋๋ก ์ธํด ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ด ์คํจํ๊ฑฐ๋ ์ฌ์๋๋๊ฑฐ๋ ์ฌ๋ฌ ๋ฒ ํธ๋ฆฌ๊ฑฐ๋ ์ ์์ต๋๋ค. ์ ์คํ ์ค๊ณ๊ฐ ์์ผ๋ฉด ์ค๋ณต ์์ , ์ํ ์์ ๋๋ ์ผ๊ด๋์ง ์์ ๋ค์ด์คํธ๋ฆผ ํจ๊ณผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ๋ฐ๋ณต์ฑ๊ณผ ๋ฉฑ๋ฑ์ฑ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ด ์คํ ํ์์ ๊ด๊ณ์์ด ์์ธก ๊ฐ๋ฅํ๊ฒ ๋์ํ๋๋ก ๋ณด์ฅํ๋ ๊ธฐ๋ณธ ์์น์ ๋๋ค.
๋ฐ๋ณต ๊ฐ๋ฅํ ์์ ์ ๋์ผํ ์ ๋ ฅ์ผ๋ก ์ฌ๋ฌ ๋ฒ ์คํํด๋ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํฉ๋๋ค. ๋ฉฑ๋ฑ ์์ ์ ๋ฐ๋ณต ์คํ ์ ์ฒซ ๋ฒ์งธ ์ฑ๊ณต ์ดํ์ ์ต์ข ์ํ๊ฐ ๋ณ๊ฒฝ๋์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ด ๋ ๊ฐ์ง ์์ฑ์ ์๋์น ์์ ๋ถ์์ฉ์ ์ํ์ ์ค์ด๊ณ ์ฅ์ ๋ฐ์ ์ ๋ณต๊ตฌ๋ฅผ ๊ฐ์ํํฉ๋๋ค.
๋น๋๊ธฐ ์์คํ ์์ ๋ฉฑ๋ฑ์ฑ์ด ์ค์ํ ์ด์
๋น๋๊ธฐ ์์คํ ์ ๋ณธ์ง์ ์ผ๋ก ์ฌ์๋ ๋ฐ ๋ถ๋ถ ์คํจ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค. ์์ ์ด ์๋ฃ๋์๋๋ผ๋ ์๊ฐ ์ด๊ณผ๋๊ฑฐ๋, ์ฌ๋ฌ ๋ฒ ์๋ํ ํ์์ผ ์ฑ๊ณตํ ์ ์์ต๋๋ค. ํด๋น ์์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฑฐ๋, ์ก์ฅ์ ์ ์กํ๊ฑฐ๋, API์ ์ํธ ์์ฉํ๋ ๊ฒฝ์ฐ, ๋ฉฑ๋ฑ์ฑ ๋ถ์กฑ์ผ๋ก ์ธํด ์ฌ๊ฐํ ๋ฐ์ดํฐ ๋๋ ์ฌ๋ฌด ๋ถ์ผ์น๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๋ฐฐ์ก ํ์ธ์ ๋ณด๋ด๋ ์์ ์ ์๊ฐํด ๋ณด์ธ์. ์ฌ์๋ํ ๊ฒฝ์ฐ, ์์ ์ฅ์น๊ฐ ์๋ ํ ์ฌ๋ฌ ์ด๋ฉ์ผ์ ๋ณด๋ด๊ฑฐ๋ ์ฌ๋ฌ ๊ฑด์ ๋ฐฐ์ก์ ๊ธฐ๋กํ ์ ์์ต๋๋ค. ์์ ์ ๋ฉฑ๋ฑ์ฑ์ผ๋ก ๋ง๋ค๋ฉด ๊ฐ๋ฐ์๋ ์์ ์คํ ํ์์ ๊ด๊ณ์์ด ๋จ ํ๋์ ํ์ธ๋ง ์ฒ๋ฆฌ๋๋๋ก ํ ์ ์์ต๋๋ค.
์์ ์ด ์ฒด์ธ์ผ๋ก ์ฐ๊ฒฐ๋๊ฑฐ๋ ๋ค์ด์คํธ๋ฆผ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ ๊ฒฝ์ฐ ์ด๋ ๋์ฑ ์ค์ํด์ง๋๋ค. ๋ฉฑ๋ฑ์ฑ์ด ์์ผ๋ฉด ์ ์คํธ๋ฆผ ์์ ์์ ํ ๋ฒ์ ์ฌ์๋๊ฐ ๋์ผํ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๋ ์ฌ๋ฌ ๋ค์ด์คํธ๋ฆผ ์์ ์ ํธ๋ฆฌ๊ฑฐํ์ฌ ์ค๋ณต์ด ๊ธ์ฆํ ์ ์์ต๋๋ค.
๋ฉฑ๋ฑ์ฑ์ ์ค๋ฅ ์ฒ๋ฆฌ ๋ฐ ๋ชจ๋ํฐ๋ง์ ๊ฐ์ํํฉ๋๋ค. ์์ ์ ์์ ํ๊ฒ ์ฌ์๋ํ ์ ์๋ค๋ฉด, ์๋ฆผ์์ ์ฒซ ๋ฒ์งธ ์คํ๊ณผ ๋ฐ๋ณต์ ๊ตฌ๋ถํ ํ์๊ฐ ์์ต๋๋ค. ๋ณต๊ตฌ ๊ฒฝ๋ก์์ ์์ ์ "์คํ ์ทจ์"ํ๊ฑฐ๋ ๊ฑด๋๋ฐ๊ธฐ ์ํ ๋ณต์กํ ์กฐ๊ฑด ๋ ผ๋ฆฌ๋ฅผ ๊ณ ๋ คํ ํ์๊ฐ ์์ผ๋ฏ๋ก ์์คํ ์ ๋ณต์๋ ฅ์ด ํฅ์๋ฉ๋๋ค.
์์ ๋จ๊ณ๋ฅผ ๋ฐ๋ณต ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๊ธฐ์
๋ฐ๋ณต ๊ฐ๋ฅํ ์์ ์ ์์ฑํ๋ ค๋ฉด ๋ถ์์ฉ์ ๋ถ๋ฆฌํ๊ณ , ๋ช ์์ ์ธ ์ฒดํฌํฌ์ธํธ๋ฅผ ์ฌ์ฉํ๊ณ , ์งํ ์ ์ ์์คํ ์ํ๋ฅผ ๊ฒ์ฆํด์ผ ํฉ๋๋ค. ํจ๊ณผ์ ์ธ ๊ธฐ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ฉฑ๋ฑ์ฑ ํค๋ฅผ ์ฌ์ฉํ์ธ์: ๊ฐ ์คํ ๋จ์์ ๋ํ ํด์ ๋๋ UUID๋ฅผ ์ ์ฅํฉ๋๋ค. ์ฐ๊ธฐ ๋๋ ์ธ๋ถ ์์ ์ ์ํํ๊ธฐ ์ ์ ํค๊ฐ ์ด๋ฏธ ์ฒ๋ฆฌ๋์๋์ง ํ์ธํ์ธ์.
if is_processed(job_id):
return
mark_processed(job_id)
- ์ฒดํฌํฌ์ธํ : ์์ ์ ๊ฐ ๋จ๊ณ์์ ์งํ ์ํฉ์ ์ ์งํฉ๋๋ค. ์์ ๋์ค์ ์ถฉ๋์ด ๋ฐ์ํ๋๋ผ๋ ์ฒ์๋ถํฐ ๋ค์ ์์ํ๋ ๋์ ๋ง์ง๋ง์ผ๋ก ์๋ ค์ง ์ ์ ์ํ๋ถํฐ ๋ค์ ์์ํ ์ ์์ต๋๋ค. ์ด๋ ํนํ ์ฅ๊ธฐ ์คํ ์์ ์ด๋ ์ฌ๋ฌ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋ ์์ ์ ์ ์ฉํฉ๋๋ค.
- ์ํ ๋น์ ์ฅ ๋จ๊ณ: ๋จ๊ณ๊ฐ ๋ถ์์ฉ ์์ด ์ฌ์คํ๋ ์ ์๋๋ก ์์ ๋ก์ง์ ์ค๊ณํ์ธ์. ์๋ฅผ ๋ค์ด, ๊ณต์ ์ํ์ ์ฐ์ง ์๊ณ ์ ๋ ฅ์ ์ฝ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ ๋ณํ ๋จ๊ณ๋ ์์ ํ๊ฒ ๋ฐ๋ณต๋ ์ ์์ต๋๋ค.
- ๋น๊ฒฐ์ ์ ์ ๋ ฅ์ ํผํ์ธ์. ํ์ฌ ํ์์คํฌํ, ๋ฌด์์ ๊ฐ ๋๋ ๋ณ๋์ฑ์ด ํฐ ์ธ๋ถ ๋ฐ์ดํฐ์ ์์กดํ๋ ์์ ์ ์์ ์ ํด๋น ์ ๋ ฅ์ ์ค๋ ์ท์ ์์ฑํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฌ์๋ ์ ์ผ๊ด์ฑ์ด ๋ณด์ฅ๋ฉ๋๋ค.
- ๋ถ์์ฉ์ ์บก์ํํ์ธ์: ๋ชจ๋ ์ํ ๋ณ๊ฒฝ ์ฐ์ฐ์ ํ์ฌ ์ํ๊ฐ ์ ํจํ์ง ํ์ธํ๋ ์กฐ๊ฑด๋ฌธ์ผ๋ก ๋ํํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์์ ๋ฎ์ด์ฐ๊ธฐ๋ ์ค๋ณต์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
if not email_already_sent(user.id):
send_email(user)
๋ฉฑ๋ฑ์ฑ์ ๊ณ ๋ คํ ์ค๊ณ๋ ์ฝ๊ฐ์ ์ค๋ฒํค๋๋ฅผ ์ ๋ฐํ ์ ์์ง๋ง, ์์ ์ฑ, ๋๋ฒ๊น ๊ฐ๋ฅ์ฑ, ํ์ฅ์ฑ ์ธก๋ฉด์์ ์ป์ ์ ์๋ ์ฅ๊ธฐ์ ์ธ ์ด์ ์ ๋น์ฉ์ ํจ์ฌ ์ํํฉ๋๋ค. ๋ฉฑ๋ฑ์ฑ์ ์์ ๋ก์ง์ ์ผํ์ฑ, ์ต์ ๋ ธ๋ ฅ ๋ชจ๋ธ์์ ์ ์คํ๊ณ ์ฑ ์ ์๋ ํ๋ก์ธ์ค๋ก ์ ํํฉ๋๋ค.
์ฌ์ฉ SMART TS XL ์์ ์คํ ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ธ๋งํ๊ณ ๊ฒ์ฆํ๊ธฐ
๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ๋ก์ง์ด ๋์ฑ ๋ณต์กํด์ง์ ๋ฐ๋ผ ์คํ ๊ฒฝ๋ก๊ฐ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ผ ์ด๋ป๊ฒ ๋ณํํ๋์ง ์ดํดํ๋ ๊ฒ๋ ์ด๋ ค์์ง๋๋ค. ๋ก๊ทธ, ์ถ์ , ๋ฉํธ๋ฆญ์ ๋์์ด ๋์ง๋ง, ์๋์ผ๋ก ์๊ด๊ด๊ณ๋ฅผ ๋ถ์ํด์ผ ํ๋ฉฐ ์์ฌ ๊ฒฐ์ ํธ๋ฆฌ์ ์ ์ด ํ๋ฆ์ ์ ์ฒด์ ์ธ ๋ชจ์ต์ ๋ณด์ฌ์ฃผ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. SMART TS XL ์ฝ๋, ์์ ์ถ์ , ๋ฐํ์ ๋์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ด ๋ฌด์์ ํ๋์ง, ์ด๋ป๊ฒ ๋ฌ๋ผ์ง๋์ง, ์ด๋์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ๋ณด์ฌ์ฃผ๋ ์๊ฐํ๋ ๋ชจ๋ธ๋ก ๋ณํํ์ฌ ์ด๋ฌํ ์ฐจ์ด๋ฅผ ๋ฉ์๋๋ค.
SMART TS XL ๊ฐ๋ฐํ์ด ๋ฐฑ์๋ ์ํฌํ๋ก์ ๋น๋๊ธฐ ์์คํ ์ ์ ๋ฐํ๊ฒ ๋ถ์ํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ์๋น์ค ๋ฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์ค์ ์คํ ๋ก์ง์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์กฐ ๋ฐ ๋์ ๋ค์ด์ด๊ทธ๋จ์ ์์ฑํฉ๋๋ค. ์ด๋ฌํ ๋ค์ด์ด๊ทธ๋จ์ ์๋์ผ๋ก ์์ฑ๋์ง ์๊ณ ์์ค ์ฝ๋, ์คํ ์ถ์ ๋๋ ์๊ฒฉ ๋ถ์ ์คํธ๋ฆผ์์ ์ง์ ํ์๋ฉ๋๋ค.
์ฝ๋์์ ๋ํํ ์คํ ๋ค์ด์ด๊ทธ๋จ์ผ๋ก
SMART TS XL ์์ค ํ์ผ์ด๋ ๊ด์ฐฐ๋ ์คํ ํจํด์ ์์งํ์ฌ ํ์ ๊ฐ๋ฅํ ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ๋ณํํฉ๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ๊ฒฝ์ฐ, ๋ชจ๋ ์กฐ๊ฑด ๊ฒฝ๋ก, ๋ฃจํ ๋๋ API ์ํธ์์ฉ์ด ์๊ฐ์ ๋ ธ๋๋ก ๋ณํ๋ฉ๋๋ค. ์ ์ฒด ํ๋ฆ์ ์ถ์ ๊ฐ๋ฅํ ์คํ ํธ๋ฆฌ๋ก ํํ๋๋ฉฐ, ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ผ ๊ฒํ , ์ฃผ์ ๋ฌ๊ธฐ ๋ฐ ๋น๊ต๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
์์ ์์คํ ๊ณผ ํตํฉํ๋ฉด, SMART TS XL ์ง์ :
- ์ฌ์๋ ๋์ ๋ฐ ์ข ๋ฃ ์กฐ๊ฑด ์๊ฐํ
- ์กฐ๊ฑด๋ถ ํ์ด๋ก๋ ๋๋ ๊ธฐ๋ฅ ํ๋๊ทธ๋ก ์ธํด ๋ฐ์ํ๋ ๋ถ๊ธฐ ๋ ผ๋ฆฌ ๋งคํ
- ๊ฑด๋๋ด ๋จ๊ณ ๋๋ ๋๋ฌํ ์ ์๋ ์ฝ๋ ๋ธ๋ก ์บก์ฒ
- ์ค์ ์คํ์ ์๋๋ ๊ฒฝ๋ก์ ๋น๊ตํ์ฌ ์ด์์ ๊ฐ์กฐํฉ๋๋ค.
์ด๋ฌํ ์๊ฐํ๋ ๋ฌธ์๊ฐ ๋๋ฝ๋์๊ฑฐ๋ ์ ์ฐจ์ ์ฝ๋์ ๋ก์ง์ด ๊น์ด ๋ด์ฌ๋ ๋ ๊ฑฐ์ ์์ ์ ํนํ ์ ์ฉํฉ๋๋ค. ์์ง๋์ด๋ ์์ฒ ์ค์ ์ฝ๋๋ฅผ ์ฝ์ง ์๊ณ ๋ ์์ธ์ ์ธ ์ํฉ์ ํ์ ํ ์ ์์ต๋๋ค.
์์ ์ถ์ ์ ๋ฐํ์ ๊ฒ์ฆ
SMART TS XL ์ ์ ๋ถ์ ์ด์์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ค์๊ฐ ์์ ์คํ์ ์์ ๋ชจ๋ธ๊ณผ ์ง์์ ์ผ๋ก ๋น๊ตํฉ๋๋ค. ๊ฐ ์์ ์คํ์ ๊ฒฝ๋ก ์ ํฉ์ฑ, ํ์ด๋ฐ ๋ฐ ๋จ๊ณ ๋ฌด๊ฒฐ์ฑ์ ๊ธฐ์ค์ผ๋ก ํ๊ฐ๋ฉ๋๋ค. ๋๋ฝ๋ ๊ฒฐ์ ๋จ๊ณ๋ ์์์น ๋ชปํ ์ข ๋ฃ์ ๊ฐ์ ๋ถ์ผ์น๊ฐ ๊ฐ์ง๋๋ฉด ํ๋๊ทธ๊ฐ ์ง์ ๋๊ณ ๋ฐฐํฌ ๋๋ ํ๊ฒฝ ์ปจํ ์คํธ์ ์๊ด ๊ด๊ณ๊ฐ ๋ถ์๋ฉ๋๋ค.
์ด๋ฅผ ํตํด ํ์ ๋ค์์ ๊ฐ์งํ ์ ์์ต๋๋ค.
- ์๋ชป๋ ํ์ด๋ก๋๋ก ์ธํด ์๋์ผ๋ก ์ข ๋ฃ๋๋ ์์
- ๋ถํ๋ก ์ธํด ์๊ธฐ์น ์๊ฒ ํธ๋ฆฌ๊ฑฐ๋๋ ๋ถ๊ธฐ
- ์์ฐ ๋ฐ์ดํฐ์๋ง ๋ํ๋๋ ๋กฑํ ์ผ ๊ฒฝ๋ก
์ดํ SMART TS XL ๊ณผ๊ฑฐ ๋ฐ ์ค์๊ฐ ์คํ ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ ์ ์ฅํ๋ฏ๋ก ์์ ๋ฒ์ ๊ฐ ์ฐจ๋ฑ ๋ถ์์ด ๊ฐ๋ฅํฉ๋๋ค. ์์ง๋์ด๋ ์๋ก์ด ๋ฐฐํฌ๊ฐ ์ ์ด ํ๋ฆ์ ์ด๋ป๊ฒ ๋ณ๊ฒฝํ๋์ง, ๊ทธ๋ฆฌ๊ณ ๋๋ฌํ ์ ์๋ ๋ถ๊ธฐ ๋๋ ํ๊ท๊ฐ ๋ฐ์ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
์ฌํ ๋ถ์ ๋ฐ ๊ท์ ์ค์ ๊ฐ์ฌ ์ง์
์ฌ๊ณ ๊ฐ ๋ฐ์ํ๋ฉด, SMART TS XL ๊ฒํ ๋ฐ ์ค๋ช ์ด ๊ฐ๋ฅํ ํํ๋ก ์คํ ์ด๋ ฅ์ ์ ๊ณตํฉ๋๋ค. ์ฌํ ๋ถ์์ ์ํด ์์ง๋์ด๋ ์์ ํ๋ฆ์ ์ฌ์ํ์ฌ ์ด๋ค ๋ถ๊ธฐ๊ฐ ์์ฑ๋์๋์ง, ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์ฒ๋ฆฌ๋์๋์ง, ๊ทธ๋ฆฌ๊ณ ๋ก์ง์ด ์์๊ณผ ๋ค๋ฅธ ๋ถ๋ถ์ ์ ํํ ํ์ ํ ์ ์์ต๋๋ค.
์ด๋ฅผ ํตํด ๊ทผ๋ณธ ์์ธ์ ๋น ๋ฅด๊ฒ ๋ถ์ํ๊ณ ํฅํ ์ฌ๋ฐ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
๊ท์ ๋ ํ๊ฒฝ์ด๋ ๊ณ์ฝ ์ํฌํ๋ก์ ๊ฒฝ์ฐ SMART TS XL์ ๋ค์ด์ด๊ทธ๋จ๊ณผ ๋ก๊ทธ๋ ๊ท์ ์ค์ ์ฆ๊ฑฐ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์์ ๊ฒฝ๋ก๋ฅผ ๋ด๋ณด๋ด๊ณ , ์ฃผ์์ ๋ฌ๊ณ , ๊ฒํ ํ์ฌ ๋ชจ๋ ํ์ ์์ ์ด ์ํ๋์๋์ง, ๋์ฒด ์กฐ์น๊ฐ ์ ๋๋ก ์๋ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ธ๋ถ ์์คํ ์ด ์ค๊ณ๋ ๋๋ก ์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
์ง์์ ์ธ ์ ๋ขฐ๋ฅผ ์ํ CI/CD ํตํฉ
SMART TS XL ์ ๋ฒ์ ์ ์์ ์ฝ๋๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ ์ ์คํ ๊ฒฝ๋ก ์ผ๊ด์ฑ์ ๊ฒ์ฆํ๊ธฐ ์ํด ๋น๋ ํ์ดํ๋ผ์ธ์ ํตํฉํ ์ ์์ต๋๋ค. ์๋ก ์์ฑ๋ ํ๋ฆ๋๋ฅผ ์ด์ ์ ์น์ธ๋ ๋ชจ๋ธ๊ณผ ๋น๊ตํ๊ณ ๊ตฌ์กฐ์ ์ฐจ์ด์ ์ ํ์ํฉ๋๋ค.
์ด๋ฅผ ํตํด ๋ค์์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๋ ผ๋ฆฌ ํ๊ท์ ์กฐ๊ธฐ ๊ฐ์ง
- ํ ์คํธ๋์ง ์์ ๊ฒฝ๋ก๊ฐ ์์ฐ์ ๋๋ฌํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
- ์ง๋ฌด ๊ตฌ์กฐ ํ์ค ์ํ(์: ํญ์ ๊ฐ์ฌ ๋ก๊ทธ๋ฅผ ๋ด๋ณด๋ด๊ฑฐ๋ ์ต์ข ํ ๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ์ง ์์)
ํฉ์ฑ ์์ ํ ์คํธ ๋๋ ์๋ ํ๊ฒฝ๊ณผ ๊ฒฐํฉํ๋ฉด SMART TS XL ์ค๊ณ, ๊ตฌํ, ๋ฐํ์ ๋์ ๊ฐ์ ๋ฃจํ๋ฅผ ๋ซ์ต๋๋ค.
์คํ ๋ชจ๋ธ์ ์ฌ์ฉํ ์ฌํ ๋ถ์, ๊ท์ ์ค์ ๋ฐ ์ง์ ์ ๋ฌ
ํ๋ ์์ง๋์ด๋ง ์กฐ์ง์์๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ด API๋ ํ๋ฐํธ์๋ ๊ตฌ์ฑ ์์๋งํผ์ ๊ด์ฌ์ ๋ฐ์ง ๋ชปํ๋ฉด์๋ ๋ฏธ์ ํฌ๋ฆฌํฐ์ปฌํ ์์ ์ด ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ๋น๋๊ธฐ ๊ณ์ธต์์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ํ์ ๊ธด ๋ณต๊ตฌ ์๊ฐ๊ณผ ๋ฌธ์ ๋ฐ์ ์์ธ์ ๋ํ ๋ถํ์ค์ฑ์ ์ง๋ฉดํ๊ฒ ๋ฉ๋๋ค. ๋ ์ฌ๊ฐํ ๊ฒ์ ์์ ๋์์ ๋ํ ์ง์์ด ๋ฌธ์ํ๋์ง ์๊ฑฐ๋ ๊ณ ๋ฆฝ๋์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค๋ ๊ฒ์ ๋๋ค. ์คํ ๊ฒฝ๋ก๋ฅผ ๋ช ํํ๊ฒ ๋ชจ๋ธ๋งํจ์ผ๋ก์จ ํ์ ์ฌํ ๋ถ์ ์ํ ๋ฐฉ์์ ๊ฐ์ ํ๊ณ , ๊ท์ ์ค์ ์๊ฑด์ ์ถฉ์กฑํ๋ฉฐ, ํ ๊ฒฝ๊ณ๋ฅผ ๋์ด ๋๋ฉ์ธ ์ง์์ ํจ์จ์ ์ผ๋ก ์ ๋ฌํ ์ ์์ต๋๋ค.
๋ค์ด์ด๊ทธ๋จ๊ณผ ์ถ์ ๊ฐ๋ฅํ ๋ชจ๋ธ์ ๋จ์ํ ๊ฐ๋ฐ ๋๊ตฌ๊ฐ ์๋๋๋ค. ํ, ์ํฉ, ๊ทธ๋ฆฌ๊ณ ์๊ฐ์ ์์ฐ๋ฅด๋ ์ปค๋ฎค๋์ผ์ด์ ์ํฐํฉํธ์ ๋๋ค. ๋ณด์ด์ง ์๋ ๋ ผ๋ฆฌ๋ฅผ ๊ฐ์ํํ๋ ๊ฒ์ ์ ๋ขฐ, ์์ ์ฑ ๋๋ ๋ณด์์ด ์ํ๋ก์ธ ๋ ํ์์ ์ ๋๋ค.
์คํ ๊ฐ๋ฅํ ๋งต์ ํตํ ์ฌํ ๋ถ์ ๊ฐํ
์ด์ ํ๊ฒฝ์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ด ์ ๋๋ก ์๋ํ์ง ์์ ๊ฒฝ์ฐ, ์ฌ๊ณ ๋์์ ์ข ์ข ๋ก๊ทธ ๊ฒํ ์ ์ถ์ธก์ผ๋ก ์์๋ฉ๋๋ค. ์์ ์ด ์ด๋ค ๊ฒฝ๋ก๋ฅผ ๊ฑฐ์ณค๋๊ฐ? ์์๋ ๊ฒฐ๊ณผ์๋๊ฐ? ์ด๋ค ์กฐ๊ฑด ๋๋ฌธ์ ํด๋ฐฑ์ด ๋ฐ์ํ๋๊ฐ? ์คํ ๋ก์ง์ด ์ฌ๋ฌ ๊ธฐ๋ฅ์ด๋ ์๋น์ค์ ๋ถ์ฐ๋์ด ์์ ๋ ์ด๋ฌํ ์ง๋ฌธ์ ๋ตํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค.
์คํ ๋ชจ๋ธ์ด ๊ตฌ์ถ๋๋ฉด ๋์ ๋ด๋น์๋ ์์ ์ ์์ ์ ์ด ํ๋ฆ์ ์ฆ์ ํ์ ํ ์ ์์ต๋๋ค. ์ด๋ค ๋จ๊ณ๊ฐ ์ํ๋์ด์ผ ํ๋์ง ์ ํํ ์ถ์ ํ๊ณ , ์ง์ ์ ๊ณผ ์ข ๋ฃ์ ์ ํ์ ํ๋ฉฐ, ์คํจํ ์คํ์ ์๊ฒฉ ๋ถ์ ๋ฐ์ดํฐ์ ๋น๊ตํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์กฐ์ ์์ ์์ ๊ฒ์ฆ ๋จ๊ณ๋ฅผ ๊ฑด๋๋ด ๊ฒฝ์ฐ, ๋ชจ๋ธ์ ํด๋น ๋ถ๊ธฐ๊ฐ ์กฐ๊ฑด๋ถ์ธ์ง, ์๋ชป ๊ฑด๋๋ด ๊ฒ์ธ์ง, ๋๋ ๋ฐฐํฌ๋ ๋ฒ์ ์์ ์์ ํ ์๋ต๋์๋์ง ๋ณด์ฌ์ค๋๋ค. ์ด๋ฅผ ํตํด ์ถ์ธก์ด ์ฆ๊ฑฐ๋ก ์ ํ๋ฉ๋๋ค.
์คํ ๋ชจ๋ธ์ ์ถ๊ฐ์ ์ธ ๊ด์ฐฐ์ด ํ์ํ ๋ถ๋ถ์ ํ์ ํ๋ ๋ฐ์๋ ๋์์ด ๋ฉ๋๋ค. ์ฌํ ๋ถ์ ๊ฒฐ๊ณผ ๋ค์ด์ด๊ทธ๋จ์ ๊ฒฝ๋ก๊ฐ ๋๋ฝ๋์๊ฑฐ๋ ์ค์ ๋ถ๊ธฐ์ ๊ณ์ธก ๋๊ตฌ๊ฐ ๋ถ์กฑํ๋ค๋ ์ฌ์ค์ด ๋๋ฌ๋ ๊ฒฝ์ฐ, ํด๋น ํผ๋๋ฐฑ์ ์์ ์ค๊ณ์ ๋ฐ์ํ์ฌ ํฅํ ๋ณต์๋ ฅ์ ๊ฐํํ ์ ์์ต๋๋ค.
ํ๋ ์ถ์ ์ ํตํ ๊ท์ ์ค์ ์ง์
๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์์กดํ๋ ๋ง์ ์์คํ ์ ๊ท์ ๋๋ ๊ณ์ฝ ์ค์์ ๋์์ด ๋ฉ๋๋ค. ์ด๋ฌํ ์์ ์ ๊ธ์ต ๊ฑฐ๋, ๊ฐ์ฌ ๋ก๊ทธ, ์ ๊ทผ ์ ์ด ์ ํ ๋๋ ๊ณ ๊ฐ ์๋ฆผ ๋ฑ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ๊ฐ์ฌ ๊ณผ์ ์์ ์ด๋ฌํ ์์ ์ด ์์๋๋ก ์ํ๋์์์ ์ ์ฆํ๋ ๊ฒ์ด ์ข ์ข ์๊ตฌ๋ฉ๋๋ค.
์์ ๋์์ ์๊ฐ์ ๋ชจ๋ธ์ ์ ์งํ๊ณ ์คํ ์ถ์ ๊ธฐ๋ก์ ๊ณผ๊ฑฐ ๊ธฐ๋ก์ ์ ์ฅํจ์ผ๋ก์จ ํ์ ๋ชจ๋ ํ์ ๊ฒฝ๋ก๊ฐ ์กฐ๊ฑด ์ถฉ์กฑ ์ ์คํ๋์์์ ์ ์ฆํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ชจ๋ธ์ ๋ด๋ณด๋ด๊ณ , ํ์์คํฌํ๋ฅผ ์ง์ ํ๊ณ , ๋ฐฐํฌ ๊ธฐ๋ก๊ณผ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด :
- ๊ท์ ๊ธฐ๊ด์ ๋ชจ๋ ์คํจํ ๋ก๊ทธ์ธ ์๋๊ฐ ์ ์ ํ ๋ก๊น ์ํฌํ๋ก๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ค๋ ์ฆ๊ฑฐ๋ฅผ ์์ฒญํ ์ ์์ต๋๋ค.
- ํํธ๋๋ ์ฒญ๊ตฌ ์์ ์์ ์๊ธ์ ์ฒญ๊ตฌํ๊ธฐ ์ ์ ๊ณ ๊ฐ์ ์๊ธ์ ๊ณ์ธต์ด ํ์ธ๋์๋์ง ํ์ธํด์ผ ํ ์๋ ์์ต๋๋ค.
- ๋ด๋ถ ๊ฐ์ฌ์์๋ ์ ํ์ ๋์ฒด ๋จ๊ณ๋ฅผ ๊ฑด๋๋ด ์์ ์์ ๊ทธ ์ด์ ์ ๋ํ ๋ณด๊ณ ์๊ฐ ํ์ํ ์ ์์ต๋๋ค.
ํ๋ ์ถ์ ์ฑ์ ํตํด ์์ ๋ก๊ทธ๋ ์์ค ์ฝ๋์์ ๋ก์ง์ ์ฌ๊ตฌ์ฑํ์ง ์๊ณ ๋ ์ด๋ฌํ ์ง๋ฌธ์ ๋ตํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ์, ์ค๋ช , ๊ทธ๋ฆฌ๊ณ ์ง์์ ์ธ ์์ฐ์ด ๋ฉ๋๋ค.
ํ ๋ฐ ์ญํ ๊ฐ ์ง์ ์ ๋ฌ ํ์ฑํ
ํ์ด ์ฑ์ฅํ๊ฑฐ๋ ๊ตฌ์กฐ ์กฐ์ ๋จ์ ๋ฐ๋ผ ์ ๋ฌด ์ค๊ณ์ ๋ํ ์ง์์ด ์ ํ๋๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์์ง๋์ด๋ ๋ ๋๊ณ , ๋๋ฉ์ธ ์ ๋ฌธ๊ฐ๋ ์ํํ๋ฉฐ, ์ ๋ฌด ๋ก์ง์ ์ฝ๋๋ ํ ์ง์์ ๋ฌปํ ์์ต๋๋ค. ์ด๋ก ์ธํด ์จ๋ณด๋ฉ ์๊ฐ์ด ๊ธธ์ด์ง๊ณ , ๊ฐ์ ์ ์ผ๊ด์ฑ์ด ๋จ์ด์ง๋ฉฐ, ๊ธฐ์กด ์ํฌํ๋ก๋ฅผ ์ ๋ฐ์ดํธํ ๋ ์ํ์ด ๋ฐ์ํฉ๋๋ค.
์คํ ๋ชจ๋ธ์ ์ด๋ฌํ ์ง์ ๊ฒฉ์ฐจ๋ฅผ ํด์ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์๋ก์ด ํ์์ ์์ ๋ค์ด์ด๊ทธ๋จ์ ๋ณด๊ณ ๋ช ์๊ฐ์ฉ ๊ฑธ๋ฆฌ๋ ์ฝ๋ ๊ฒํ ๊ณผ์ ์ ๋ช ๋ถ ๋ง์ ์ดํดํ ์ ์์ต๋๋ค. ์ด ๋ชจ๋ธ์ ์๊ฐ์ ์ธ ํน์ง์ ์ ํ ๊ด๋ฆฌ์, QA ์์ง๋์ด, ์ง์ ๋ด๋น์ ๋ฑ ๊ฐ๋ฐ์๊ฐ ์๋ ์ฌ๋๋ค๋ ํด๋น ์์ ์ด ๋ฌด์์ ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ๋ค์ํ ์๋๋ฆฌ์ค์์ ์ด๋ป๊ฒ ๋์ํ๋์ง ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๊ธฐ๋ฅ ๊ฐ ํ์์๋ ์ด๋ฅผ ํตํด "์ ๋ฌด ์ ๋ฌธ๊ฐ"์ ๋ํ ์์กด๋๊ฐ ๋ฎ์์ง๊ณ ๋น๋๊ธฐ ๋ ผ๋ฆฌ๊ฐ ๊ณต์ ์์คํ ์ดํด์ ์ผ๋ถ๊ฐ ๋ฉ๋๋ค.
์คํ ๋ชจ๋ธ์ ๋ํ ํ๋ฅํ์ง ์๋ ๋ฌธ์ ์ญํ ์ ํฉ๋๋ค. ์ํค์ ๋๊ธ์ ์๋์ ๋ค๋จ์ด์ง๋ ๊ฒฝํฅ์ด ์์ง๋ง, ์์ค ์ฝ๋๋ ์ถ์ ๋ฐ์ดํฐ์์ ์์ฑ๋ ๋ชจ๋ธ์ ์์คํ ์์ฒด์ ํจ๊ป ๋ฐ์ ํฉ๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ๋ขฐ์ฑ์ ๊ฒฉ์ฐจ ๋ฉ์ฐ๊ธฐ
๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์๋ง์ ๋น์ฆ๋์ค ํต์ฌ ์ํฌํ๋ก์ ์๋๋ ฅ์ด์ง๋ง, ๋ํํ ์์คํ ๊ณผ ๊ฐ์ ์ฒ ์ ํ ๊ฒ์ฆ์ด๋ ์์ ์ฅ์น ์์ด ์ด์๋๋ ๊ฒฝ์ฐ๊ฐ ๋๋ฌด ๋ง์ต๋๋ค. ์ด๋ฌํ ์์ ์ด ์กฐ์ฉํ ์คํจํ๊ฑฐ๋ ์์์น ๋ชปํ ์คํ ๊ฒฝ๋ก๋ฅผ ๊ฑฐ์น๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์งํ๊ธฐ ์ด๋ ต๊ณ ์ถ์ ํ๊ธฐ๋ ๋์ฑ ์ด๋ ค์์ง ์ ์์ต๋๋ค. ์จ๊ฒจ์ง ๋ถ๊ธฐ, ๊ฑด๋๋ฐ๋ ๋จ๊ณ, ๊ทธ๋ฆฌ๊ณ ํต์ ๋์ง ์์ ์ฌ์๋๋ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ, ๊ณ ๊ฐ ์ ๋ขฐ, ๊ทธ๋ฆฌ๊ณ ์์คํ ์์ ์ฑ์ ์ ํดํ๋ ์ํ์ ์ด๋ํฉ๋๋ค.
์ด๋ฌํ ๊ฒฉ์ฐจ๋ฅผ ํด์ํ๋ ค๋ฉด ๋จ์ํ ๋ฐ์ํ ๋๋ฒ๊น ์ด์์ ๊ฒ์ด ํ์ํฉ๋๋ค. ํ์๋ ์์ ๋ก์ง์ด ์ค์๊ฐ์ผ๋ก, ์ฌ๋ฌ ํ๊ฒฝ๊ณผ ์๊ฐ์ ๋ฐ๋ผ ์ด๋ป๊ฒ ์ ๊ฐ๋๋์ง ์ดํดํ๋ ๋ฐ ๋์์ด ๋๋ ์ ์ ์ ๋๊ตฌ์ ์ ๋ต์ด ํ์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์คํ ๊ฒฝ๋ก ๋ชจ๋ธ๋ง, ์์ฌ ๊ฒฐ์ ๋ก์ง ์ถ์ , ๋ฐํ์ ๋์ ๊ฒ์ฆ, ๊ทธ๋ฆฌ๊ณ ๋ถ์์ฉ์ด ์์๋ ์์ ๊ณผ ์์น์์๋ง ๋ฐ์ํ๋๋ก ๋ณด์ฅํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค.
์ด๋ฌํ ์ํฌํ๋ก๋ฅผ ์๊ฐํํ๋ฉด ์์ ์ฑ์ด ํฅ์๋ ๋ฟ๋ง ์๋๋ผ ์จ๋ณด๋ฉ ์๋๊ฐ ๋นจ๋ผ์ง๊ณ , ๊ท์ ์ค์๊ฐ ์ง์๋๋ฉฐ, ์์ง๋์ด๋ง ํ์ ์ธ์ง ๋ถํ๊ฐ ์ค์ด๋ญ๋๋ค. ์คํ ๊ฒฝ๋ก ๋ชจ๋ธ๋ง์ ๊ฐ๋ฐ์, ํ ์คํฐ, ์ดํด๊ด๊ณ์ ๊ฐ์ ๊ณต์ ์ธ์ด๊ฐ ๋ฉ๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ๋ถํฌ๋ช ํ ํ๋ก์ธ์ค์์ ํฌ๋ช ํ๊ณ ๊ฐ์ฌ ๊ฐ๋ฅํ ํ๋ฆ์ผ๋ก ์ ํํฉ๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์ ๋ขฐ์ฑ์ ๋จ์ํ ์ด์์ ์ฌํ ๊ณ ๋ ค ์ฌํญ์ด ์๋ ์ค๊ณ ์์น์ผ๋ก ์ ๊ทผํจ์ผ๋ก์จ ํ์ ๋ช ํ์ฑ๊ณผ ๋ณต์๋ ฅ์ ๊ฐ์ถ ํ์ฅ ๊ฐ๋ฅํ ์์คํ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ๋น๋๊ธฐ ์ํฌํ๋ก์ ๋ํ ์ ๋ขฐ๋ ๊ทธ ๋์์ด ๊ด์ฐฐ ๊ฐ๋ฅํ๊ณ ๋ฐ๋ณต ๊ฐ๋ฅํ๋ฉฐ ๋น์ฆ๋์ค ์๋์ ์ผ์นํ ๋ ๋์ฑ ์ปค์ง๋๋ค.
๋ค์ด๋ก๋ ๊ฐ๋ฅํ ํ์์ผ๋ก ํจํค์งํ๊ฑฐ๋, ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ฑฐ๋, ๋ฐฐํฌ๋ฅผ ์ํด ์ฝํ ์ธ ๋ฅผ ์ค๋นํ๊ณ ์ถ์์ง ์๋ ค์ฃผ์ธ์.