๋ค์ค ์ฑ๋ ์๋ฆผ ์์คํ : ํ ํ๋ฆฟ, ์ฌ์๋, ์ ํธ ์ค์
์ด๋ฉ์ผ, SMS, Telegram์ ํ ๊ณณ์์ ํ ํ๋ฆฟยท์ ์ก ์ํยท์ฌ์๋ยท์ฌ์ฉ์ ์ ํธ์ ๋ง์ถฐ ์ผ๊ด๋๊ฒ ์ฒ๋ฆฌํ๋ ๋ค์ค ์ฑ๋ ์๋ฆผ ์์คํ ์ค๊ณ ๊ฐ์ด๋.

๋จ์ผ ์๋ฆผ ์์คํ ์ด ํด๊ฒฐํ๋ ๋ฌธ์
์ด๋ฉ์ผ, SMS, Telegram์ ๋ณ๋ ๊ธฐ๋ฅ์ผ๋ก ๋ง๋ค๋ฉด ๊ธ๋ฐฉ ๊ท ์ด์ด ์๊น๋๋ค. ๊ฐ์ ์๋ฆผ์ด ๋ค๋ฅธ ๋ฌธ๊ตฌ, ๋ค๋ฅธ ์์ , ๊ทธ๋ฆฌ๊ณ ๋๊ฐ ๋ฐ๋์ง์ ๋ํ ์๋ก ๋ค๋ฅธ ๊ท์น์ ๊ฐ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด์ํ์ ์ด๋ฉ์ผ ์ ๊ณต์, SMS ๊ฒ์ดํธ์จ์ด, ๋ด ๋ก๊ทธ์ ๊ฐ๊ฐ ๋ค๋ฅธ ์ง์ค์ ์ซ์์ผ ํฉ๋๋ค.
๋ค์ค ์ฑ๋ ์๋ฆผ ์์คํ ์ ์๋ฆผ์ ์ธ ๊ฐ์ ํตํฉ์ด ์๋๋ผ ํ๋์ ์ ํ์ผ๋ก ์ทจ๊ธํจ์ผ๋ก์จ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ํ๋์ ์ด๋ฒคํธ(๋น๋ฐ๋ฒํธ ์ฌ์ค์ , ๊ฒฐ์ ์๋ฃ, ์๋ฒ ์ฅ์ )๊ฐ ๋ฐ์ํ๋ฉด ์์คํ ์ ํ ํ๋ฆฟ, ์ฌ์ฉ์ ์ ํธ, ์ ์ก ๊ท์น์ ๋ฐํ์ผ๋ก ์ฑ๋๋ณ ์ ๋ฌ ๋ฐฉ์์ ๊ฒฐ์ ํฉ๋๋ค. ์ฑ๋๋ง๋ค ํ์์ ๋ฌ๋ผ์ง ์ ์์ง๋ง ์๋ฏธ, ๋ฐ์ดํฐ, ์ถ์ ์ ์ผ๊ด๋๊ฒ ์ ์ง๋ฉ๋๋ค.
๋๋ถ๋ถ ํ์ ์ด๋ค ์ฑ๋๋ก ์์ํ๋ ๋์ผํ ๊ธฐ๋ฐ์ด ํ์ํฉ๋๋ค: ๋ณ์์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ถ ํ ํ๋ฆฟ, ์ ์ก ์ํ ์ถ์ (โ๋ณด๋, ์ ๋ฌ, ์คํจ, ์ด์ โ), ํฉ๋ฆฌ์ ์ธ ์ฌ์๋์ ํด๋ฐฑ, ๋์์ ์กฐ์ฉ ์๊ฐ(quiet hours)์ ๋ฐ์ํ ์ฌ์ฉ์ ์ ํธ, ๊ทธ๋ฆฌ๊ณ ์ด์ํ์ด ์ถ์ ํ์ง ์๊ณ ๋ฌด์จ ์ผ์ด ์์๋์ง ๋ณผ ์ ์๋ ๊ฐ์ฌ ๊ธฐ๋ก์ ๋๋ค.
์ฑ๊ณต์ ์ข์ ์๋ฏธ๋ก ์ง๋ฃจํฉ๋๋ค. ๋ฉ์์ง๋ ์์ธก ๊ฐ๋ฅํ๊ณ : ์ ์ ํ ์ฌ๋์ด ์ ์ ํ ๋ด์ฉ์ ์ ์ ํ ์๊ฐ์, ํ์ฉํ ์ฑ๋์ ํตํด ๋ฐ์ต๋๋ค. ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๋ชจ๋ ์๋๊ฐ ๋ช ํํ ์ํ์ ์ด์ ์ฝ๋๋ก ๊ธฐ๋ก๋์ด ์์ด ๋ฌธ์ ํด๊ฒฐ์ด ๋จ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด "์ ๋ก๊ทธ์ธ" ์๋ฆผ์ ์๊ฐํด๋ณด์ธ์. ํ ๋ฒ ๋ง๋ค๊ณ ๋์ผํ ์ฌ์ฉ์, ๋๋ฐ์ด์ค, ์์น ๋ฐ์ดํฐ๋ฅผ ์ฑ์ ์ด๋ฉ์ผ๋ก๋ ์์ธ๋ฅผ, SMS๋ก๋ ๊ธด๊ธ์ฑ์, Telegram์ผ๋ก๋ ๋น ๋ฅธ ํ์ธ์ ์ ์กํฉ๋๋ค. SMS ์ ๊ณต์๊ฐ ํ์์์์ ๋ด๋ฉด ์์คํ ์ ์ผ์ ์ ๋ฐ๋ผ ์ฌ์๋ํ๊ณ ํ์์์์ ๊ธฐ๋กํ๋ฉฐ ์๋ฆผ์ ๋ฒ๋ฆฌ์ง ์๊ณ ๋ค๋ฅธ ์ฑ๋๋ก ํด๋ฐฑํ ์ ์์ต๋๋ค.
ํต์ฌ ๊ฐ๋ ๊ณผ ๊ฐ๋จํ ๋ฐ์ดํฐ ๋ชจ๋ธ
๋ค์ค ์ฑ๋ ์๋ฆผ ์์คํ ์ "์ ์๋ฆฌ๋๊ฐ"์ "์ด๋ป๊ฒ ์ ๋ฌํ๋๊ฐ"๋ฅผ ๋ถ๋ฆฌํ๋ฉด ๊ด๋ฆฌํ๊ธฐ ์ฌ์์ง๋๋ค. ์ฆ, ๊ณตํต ๊ฐ์ฒด ์งํฉ๊ณผ ์ค์ ๋ก ๋ค๋ฅผ ๋๋ง ์ฑ๋๋ณ ์ธ๋ถ๋ฅผ ๋์ธ์.
๋จผ์ **์ด๋ฒคํธ(event)**๋ก ์์ํ์ธ์. ์ด๋ฒคํธ๋ order_shipped๋ password_reset ๊ฐ์ ์ด๋ฆ ์๋ ํธ๋ฆฌ๊ฑฐ์
๋๋ค. ์ด๋ฆ์ ์ผ๊ด๋๊ฒ: ์๋ฌธ์, ์ธ๋์ค์ฝ์ด, ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๊ณผ๊ฑฐํ์ ์ฌ์ฉํ์ธ์. ์ด๋ฒคํธ๋ ํ
ํ๋ฆฟ๊ณผ ์ ํธ ๊ท์น์ด ์์กดํ๋ ์์ ๋ ๊ณ์ฝ์ผ๋ก ๋ค๋ฃจ์ธ์.
ํ๋์ ์ด๋ฒคํธ์์ ์๋ฆผ(notification) ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ ์ฌ์ฉ์์๊ฒ ๋ณด์ด๋ ์๋: ๋๊ตฌ์๊ฒ, ๋ฌด์จ ์ผ์ด ์์๋์ง, ์ฝํ ์ธ ๋ฅผ ๋ ๋๋งํ๋ ๋ฐ ํ์ํ ๋ฐ์ดํฐ(์ฃผ๋ฌธ ๋ฒํธ, ๋ฐฐ์ก์ผ, ์ฌ์ค์ ์ฝ๋)์ ๋๋ค. ์ฌ๊ธฐ์๋ user_id, event_name, locale, priority, scheduled_at ๊ฐ์ ๊ณตํต ํ๋๋ฅผ ์ ์ฅํ์ธ์.
๊ทธ๋ค์ ์ฑ๋๋ณ๋ก **๋ฉ์์ง(message)**๋ก ๋๋๋๋ค. ํ๋์ ์๋ฆผ์ ์ฑ๋๋ณ๋ก 0~3๊ฐ์ ๋ฉ์์ง๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค(์ด๋ฉ์ผ, SMS, Telegram). ๋ฉ์์ง๋ ๋ชฉ์ ์ง(์ด๋ฉ์ผ ์ฃผ์, ์ ํ๋ฒํธ, Telegram chat_id), template_id, ๋ ๋๋ ๋ด์ฉ(์ด๋ฉ์ผ์ ์ ๋ชฉ/๋ณธ๋ฌธ, SMS์ ์งง์ ํ ์คํธ) ๊ฐ์ ์ฑ๋๋ณ ํ๋๋ฅผ ๋ด์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ๊ฐ ์ ์ก์ **์ ์ก ์๋(DeliveryAttempt)**๋ก ์ถ์ ํฉ๋๋ค. ์๋์๋ provider request_id, ํ์์คํฌํ, ์๋ต ์ฝ๋, ์ ๊ทํ๋ ์ํ๊ฐ ํฌํจ๋ฉ๋๋ค. ์ฌ์ฉ์๊ฐ "๋ฐ์ง ๋ชปํ์ด์"๋ผ๊ณ ๋งํ ๋ ํ์ธํ๋ ๋ถ๋ถ์ ๋๋ค.
๊ฐ๋จํ ๋ชจ๋ธ์ ๋ณดํต ๋ค ๊ฐ์ ํ ์ด๋ธ ๋๋ ์ปฌ๋ ์ ์ ๋ง์ต๋๋ค:
- Event (ํ์ฉ๋ ์ด๋ฒคํธ ์ด๋ฆ๊ณผ ๊ธฐ๋ณธ๊ฐ ์นดํ๋ก๊ทธ)
- Notification (์ฌ์ฉ์ ์๋๋ณ ํ๋)
- Message (์ฑ๋๋ณ ํ๋)
- DeliveryAttempt (์๋๋ณ ํ๋)
์ด๊ธฐ์ ๋ฉฑ๋ฑ์ฑ(idempotency)์ ๊ณํํ์ธ์. ๊ฐ ์๋ฆผ์ (event_name, user_id, external_ref) ๊ฐ์ ๊ฒฐ์ ๋ก ์ ํค๋ฅผ ์ฃผ์ด ์
์คํธ๋ฆผ ์์คํ
์ ์ฌ์๋๊ฐ ์ค๋ณต์ ๋ง๋ค์ง ์๊ฒ ํ์ธ์. ์ํฌํ๋ก ๋จ๊ณ๊ฐ ์ฌ์คํ๋๋ฉด ๋ฉฑ๋ฑ์ฑ ํค๊ฐ ๋ ๋ฒ SMS๊ฐ ๊ฐ๋ ๊ฒ์ ๋ง์์ค๋๋ค.
๊ฐ์ฌ์ ํ์ํ ๊ฒ๋ง ์ฅ๊ธฐ ๋ณด๊ดํ์ธ์(์ด๋ฒคํธ, ์๋ฆผ, ์ต์ข ์ํ, ํ์์คํฌํ). ๋จ๊ธฐ ์ ์ก ํ์ ์์ ์ ๊ณต์ ํ์ด๋ก๋๋ ์ด์๊ณผ ๋ฌธ์ ํด๊ฒฐ์ ํ์ํ ๊ธฐ๊ฐ๋ง ๋ณด๊ดํ์ธ์.
์ค์ฉ์ ์ธ ์๋ํฌ์๋ ํ๋ก์ฐ(๋จ๊ณ๋ณ)
๋ค์ค ์ฑ๋ ์๋ฆผ ์์คํ ์ "๋ฌด์์ ๋ณด๋ผ์ง ๊ฒฐ์ ํ๋ ๊ฒ"์ "์ ์กํ๋ ๊ฒ"๊ณผ ๋ถ๋ฆฌํ ๋ ๊ฐ์ฅ ์ ๋์ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์๋๊ฐ ๋น ๋ฅด๊ณ ์คํจ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ฌ์์ง๋๋ค.
์ค์ฉ์ ์ธ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
-
์ด๋ฒคํธ ์์ฐ์๊ฐ ์๋ฆผ ์์ฒญ์ ์์ฑํฉ๋๋ค. ์ด๋
password_reset,invoice_paid,ticket_updated๊ฐ์ ์์ฒญ์ผ ์ ์์ต๋๋ค. ์์ฒญ์๋ ์ฌ์ฉ์ ID, ๋ฉ์์ง ์ ํ, ์ปจํ ์คํธ ๋ฐ์ดํฐ(์ฃผ๋ฌธ ๋ฒํธ, ๊ธ์ก, ๋ด๋น์ ์ด๋ฆ)๊ฐ ํฌํจ๋ฉ๋๋ค. ๊ฐ์ฌ ์ถ์ ์ ์ํด ์์ฒญ์ ์ฆ์ ์ ์ฅํ์ธ์. -
๋ผ์ฐํฐ๊ฐ ์ฌ์ฉ์ ๋ฐ ๋ฉ์์ง ๊ท์น์ ๋ก๋ํฉ๋๋ค. ์ฌ์ฉ์ ์ ํธ(ํ์ฉ ์ฑ๋, ์ตํธ์ธ, ์กฐ์ฉ ์๊ฐ)์ ๋ฉ์์ง ๊ท์น(์: ๋ณด์ ์๋ฆผ์ ์ด๋ฉ์ผ ๋จผ์ ์๋)์ ์กฐํํฉ๋๋ค. ๋ผ์ฐํฐ๊ฐ Telegram, ๊ทธ๋ค์ SMS, ๊ทธ๋ค์ ์ด๋ฉ์ผ ๊ฐ์ ์ฑ๋ ๊ณํ์ ๊ฒฐ์ ํฉ๋๋ค.
-
์์คํ ์ด ์ฑ๋๋ณ ์ ์ก ์์ ์ ํ์ ๋ฃ์ต๋๋ค. ๊ฐ ์์ ์๋ ํ ํ๋ฆฟ ํค, ์ฑ๋, ๋ณ์๋ค์ด ํฌํจ๋ฉ๋๋ค. ์์ ์ ํ์ ๋ฃ์ด ์ฌ์ฉ์ ๋์์ด ์ ์ก์ ์ํด ์ฐจ๋จ๋์ง ์๊ฒ ํฉ๋๋ค.
-
์ฑ๋ ์์ปค๊ฐ ์ ๊ณต์ ํตํด ์ ๋ฌํฉ๋๋ค. ์ด๋ฉ์ผ์ SMTP๋ ์ด๋ฉ์ผ API๋ก, SMS๋ SMS ๊ฒ์ดํธ์จ์ด๋ก, Telegram์ ๋ด์ ํตํด ์ ๋ฌ๋ฉ๋๋ค. ์์ปค๋ ๋ฉฑ๋ฑ์ฑ ์๊ฒ ์ค๊ณ๋์ด ๋์ผ ์์ ์ ์ฌ์๋ํด๋ ์ค๋ณต ์ ์ก์ด ๋ฐ์ํ์ง ์์์ผ ํฉ๋๋ค.
-
์ํ ์ ๋ฐ์ดํธ๋ ํ๊ณณ์ผ๋ก ํ๋ฌ ๋ค์ด์ต๋๋ค. ์์ปค๋ queued, sent, failed, ๊ฐ๋ฅํ๋ฉด delivered ์ํ๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ์ ๊ณต์๊ฐ "accepted"๋ง ์๋ตํ๋ฉด ๊ทธ ๋ํ ๊ธฐ๋กํ๊ณ delivered์ ๊ตฌ๋ถํด ๋ค๋ฃจ์ธ์.
-
ํด๋ฐฑ๊ณผ ์ฌ์๋๋ ๊ฐ์ ์ํ์์ ์คํ๋ฉ๋๋ค. Telegram์ด ์คํจํ๋ฉด ๋ผ์ฐํฐ(๋๋ ์ฌ์๋ ์์ปค)๊ฐ ์ปจํ ์คํธ๋ฅผ ์์ง ์๊ณ ๋ค์์ SMS๋ฅผ ์์ฝํ ์ ์์ต๋๋ค.
์: ์ฌ์ฉ์๊ฐ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ๋ฐฑ์๋๊ฐ ์ฌ์ฉ์์ IP ์ฃผ์๋ฅผ ํฌํจํ ํ๋์ ์์ฒญ์ ๋ฐํํฉ๋๋ค. ๋ผ์ฐํฐ๋ ์ฌ์ฉ์๊ฐ Telegram์ ์ ํธํ์ง๋ง ์กฐ์ฉ ์๊ฐ์ผ๋ก ์ธํด ๋ฐค์๋ ์ฐจ๋จ๋์ด ์ด๋ฉ์ผ์ ์ง๊ธ, Telegram์ ์์นจ์ ์์ ํ๊ณ ๋์ ๋์ผํ ์๋ฆผ ๋ ์ฝ๋ ์๋์์ ์ถ์ ํฉ๋๋ค.
AppMaster์ ๊ตฌํํ๋ค๋ฉด ์์ฒญ, ์์ , ์ํ ํ ์ด๋ธ์ Data Designer์ ๋๊ณ ๋ผ์ฐํ ๊ณผ ์ฌ์๋ ๋ก์ง์ Business Process Editor์์ ํํํ๋ฉฐ ์ ์ก์ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํด UI๊ฐ ๋ฐ์์ฑ์ ์ ์งํ๊ฒ ํ์ธ์.
์ฑ๋ ๊ฐ์ ์๋ํ๋ ํ ํ๋ฆฟ ๊ตฌ์กฐ
์ข์ ํ ํ๋ฆฟ ์์คํ ์ ํ ๊ฐ์ง ์์ด๋์ด์์ ์์ํฉ๋๋ค: ๋น์ ์ ์ด๋ฒคํธ์ ๋ํด ์๋ฆฌ๋ ๊ฒ์ด์ง "์ด๋ฉ์ผ์ ๋ณด๋ด๋ ๊ฒ"์ด๋ "SMS๋ฅผ ๋ณด๋ด๋ ๊ฒ"์ด ์๋๋๋ค. ์ด๋ฒคํธ๋น ํ๋์ ํ ํ๋ฆฟ์ ๋ง๋ค๊ณ ๊ทธ ์๋์ ์ฑ๋๋ณ ๋ณํ์ ์ ์ฅํ์ธ์(Password reset, Order shipped, Payment failed ๋ฑ).
๋ชจ๋ ์ฑ๋ ๋ณํ์์ ๋์ผํ ๋ณ์๋ฅผ ์ ์งํ์ธ์. ์ด๋ฉ์ผ์ด first_name๊ณผ order_id๋ฅผ ์ฌ์ฉํ๋ฉด SMS์ Telegram๋ ์ ํํ ๊ฐ์ ์ด๋ฆ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ทธ๋์ผ ํ ์ฑ๋์ ์ ์์ธ๋ฐ ๋ค๋ฅธ ์ฑ๋์ ๋น์นธ์ด ๋๋ ๋ฏธ๋ฌํ ๋ฒ๊ทธ๋ฅผ ํผํ ์ ์์ต๋๋ค.
๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ๋จํ ํ ํ๋ฆฟ ํํ
๊ฐ ์ด๋ฒคํธ์ ๋ํด ์ฑ๋๋ณ๋ก ์๊ท๋ชจ ํ๋ ์งํฉ์ ์ ์ํ์ธ์:
- ์ด๋ฉ์ผ: subject, preheader(์ ํ), HTML ๋ณธ๋ฌธ, ํ ์คํธ ๋์ฒด
- SMS: ์ผ๋ฐ ํ ์คํธ ๋ณธ๋ฌธ
- Telegram: ์ผ๋ฐ ํ ์คํธ ๋ณธ๋ฌธ, ์ ํ์ ๋ฒํผ ๋๋ ์งง์ ๋ฉํ๋ฐ์ดํฐ
์ฑ๋๋ง๋ค ๋ฐ๋๋ ๊ฒ์ ํฌ๋งท๋ฟ์ด๋ฉฐ ์๋ฏธ๋ ๊ฐ์์ผ ํฉ๋๋ค.
SMS๋ ์งง๊ธฐ ๋๋ฌธ์ ํน๋ณ ๊ท์น์ด ํ์ํฉ๋๋ค. ๋ด์ฉ์ด ๋๋ฌด ๊ธธ ๋ ์ด๋ป๊ฒ ํ ์ง ๋ฏธ๋ฆฌ ๊ฒฐ์ ํ์ธ์: ๋ฌธ์ ์ ์ ํ์ ์ ํ๊ณ ์๋ผ๋ด๊ธฐ ๊ท์น(์๋ผ๋ด๊ณ ... ์ถ๊ฐํ๊ฑฐ๋ ์ ํ์ ์ค์ ๋จผ์ ์ ๊ฑฐ)์ ์ ํํ๊ณ ๊ธด URL๊ณผ ๋ถํ์ํ ๋ฌธ์ฅ ๋ถํธ๋ฅผ ํผํ๋ฉฐ ํต์ฌ ํ๋(์ฝ๋, ๋ง๊ฐ, ๋ค์ ๋จ๊ณ)์ ์์ ๋ฐฐ์นํ์ธ์.
๋น์ฆ๋์ค ๋ก์ง์ ๋ณต์ฌํ์ง ์๋ ๋ก์ผ์ผ ์ฒ๋ฆฌ
์ธ์ด๋ ๋ณ๋ ์ํฌํ๋ก๊ฐ ์๋๋ผ ๋งค๊ฐ๋ณ์๋ก ๋ค๋ฃจ์ธ์. ์ด๋ฒคํธ์ ์ฑ๋๋ณ๋ก ๋ฒ์ญ์ ์ ์ฅํ๊ณ ๋์ผํ ๋ณ์๋ก ๋ ๋๋งํ์ธ์. "Order shipped" ๋ก์ง์ ๊ทธ๋๋ก ๋๊ณ ์ ๋ชฉ๊ณผ ๋ณธ๋ฌธ๋ง ๋ก์ผ์ผ๋ณ๋ก ๋ฐ๋๋๋ค.
๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ชจ๋๋ ํฐ ๊ฐ์น๋ฅผ ์ค๋๋ค. ์ํ ๋ฐ์ดํฐ(๊ธด ์ด๋ฆ ๊ฐ์ ์ฃ์ง ์ผ์ด์ค ํฌํจ)๋ก ํ ํ๋ฆฟ์ ๋ ๋๋งํด ์ง์ํ์ด ์ด๋ฉ์ผ, SMS, Telegram ๋ณํ์ ์ค์ ๋ก ๊ฒ์ฆํ ์ ์๊ฒ ํ์ธ์.
์ ๋ขฐํ ์ ์๊ณ ๋๋ฒ๊ทธ ๊ฐ๋ฅํ ์ ์ก ์ํ
๋์ค์ ํ ์ง๋ฌธ์ ๋ตํ ์ ์์ด์ผ ํฉ๋๋ค: ์ด ์๋ฆผ์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋๊ฐ? ์ข์ ๋ค์ค ์ฑ๋ ์๋ฆผ ์์คํ ์ ์๋ํ ๋ฉ์์ง์ ๊ฐ ์ ์ก ์๋๋ฅผ ๋ถ๋ฆฌํฉ๋๋ค.
์ด๋ฉ์ผ, SMS, Telegram ์ ๋ฐ์์ ๊ฐ์ ์๋ฏธ๋ฅผ ๊ฐ๋ ์์์ ๊ณตํต ์ํ๋ถํฐ ์์ํ์ธ์:
- queued: ์์คํ ์ ์๋ฝ๋์ด ์์ปค๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
- sending: ์ ์ก ์๋๊ฐ ์งํ ์ค์ธ ์ํ
- sent: ์ ๊ณต์ API์ ์ฑ๊ณต์ ์ผ๋ก ์ ๋ฌ๋ ์ํ
- failed: ์กฐ์น ๊ฐ๋ฅํ ์ค๋ฅ๋ก ์๋๊ฐ ์ข ๋ฃ๋ ์ํ
- delivered: ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ๋๋ฌํ๋ค๋ ์ฆ๊ฑฐ๊ฐ ์๋ ์ํ
์ด ์ํ๋ค์ ๋ฉ์์ง ๋ฉ์ธ ๋ ์ฝ๋์ ์ ์งํ๋ ๋ชจ๋ ์๋๋ฅผ ํ์คํ ๋ฆฌ ํ ์ด๋ธ์ ๊ธฐ๋กํ์ธ์. ๊ทธ ํ์คํ ๋ฆฌ๊ฐ ๋๋ฒ๊น ์ ์ฝ๊ฒ ๋ง๋ญ๋๋ค: ์๋ #1์ ํ์์์์ผ๋ก ์คํจํ๊ณ ์๋ #2๋ ์ฑ๊ณตํ๊ฑฐ๋, SMS๋ ์ ์ ์ก๋์ง๋ง ์ด๋ฉ์ผ์ ๊ณ์ ๋ฐ์ด์ค๋์๋ค๋ ์์ผ๋ก์.
์๋๋ณ๋ก ์ ์ฅํ ํญ๋ชฉ
์ ๊ณต์ ์๋ต์ ์ ๊ทํํด ์ ๊ณต์๋ค์ด ๋ค๋ฅธ ๋จ์ด๋ฅผ ์จ๋ ๊ฒ์ํ๊ณ ์ด์๋ฅผ ๊ทธ๋ฃนํํ ์ ์๊ฒ ํ์ธ์.
- provider_name๊ณผ provider_message_id
- response_code(์: TIMEOUT, INVALID_NUMBER, BOUNCED ๊ฐ์ ์ ๊ทํ ์ฝ๋)
- raw_provider_code์ raw_error_text(์ง์ ์ผ์ด์ค์ฉ)
- started_at, finished_at, duration_ms
- channel(email, sms, telegram)๊ณผ destination(๋ง์คํน๋ ํํ)
๋ถ๋ถ์ ์ฑ๊ณต์ ๋๋นํ์ธ์. ํ๋์ ์๋ฆผ์ด ์ธ ์ฑ๋ ๋ฉ์์ง๋ฅผ ๋ง๋ค๊ณ ๊ณตํต์ parent_id์ ๋น์ฆ๋์ค ์ปจํ ์คํธ(order_id, ticket_id, alert_type)๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. SMS๋ ์ ์ก๋์ง๋ง ์ด๋ฉ์ผ์ด ์คํจํ๋ฉด ์ธ ๊ฐ์ ๋ฌด๊ดํ ์ธ์๋ํธ๊ฐ ์๋๋ผ ํ ์ฅ์์์ ์ ์ฒด ์ด์ผ๊ธฐ๋ฅผ ๋ณด๊ธธ ์ํฉ๋๋ค.
"delivered"์ ์ค์ ์๋ฏธ
"Sent"๋ "delivered"๊ฐ ์๋๋๋ค. Telegram์ API๊ฐ ๋ฉ์์ง๋ฅผ ์์ฉํ๋์ง๋ง ์ ์ ์์ ์ ์์ต๋๋ค. SMS์ ์ด๋ฉ์ผ์ ์ข ์ข ์นํํฌ๋ ์ ๊ณต์ ์ฝ๋ฐฑ์ ๋ฐ๋ผ ์ ๋ฌ ์ฌ๋ถ๊ฐ ๊ฒฐ์ ๋๋ฉฐ ๋ชจ๋ ์ ๊ณต์๊ฐ ๋์ผํ๊ฒ ์ ๋ขฐํ ์๋ ์์ต๋๋ค.
์ฑ๋๋ณ๋ก delivered์ ์ ์๋ฅผ ๋ฏธ๋ฆฌ ์ ํ์ธ์. ๊ฐ๋ฅํ๋ฉด ์นํํฌ๋ก ํ์ธ๋ ์ ๋ฌ์ ์ฌ์ฉํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด delivered๋ฅผ ์ ์ ์์์ผ๋ก ์ฒ๋ฆฌํ๊ณ sent๋ก ๋ณด๊ณ ํ์ธ์. ๊ทธ๋์ผ ๋ณด๊ณ ๊ฐ ์ ์งํ๊ณ ์ง์ ๋ต๋ณ์ด ์ผ๊ด๋ฉ๋๋ค.
์ฌ์๋, ํด๋ฐฑ, ์ค๋จ ์์
์ฌ์๋๋ ์๋ฆผ ์์คํ ์์ ์์ฃผ ์ค์ํ๋ ๋ถ๋ถ์ ๋๋ค. ๋๋ฌด ๋นจ๋ฆฌ ์ฌ์๋ํ๋ฉด ํญํ์ด ์๊ธฐ๊ณ , ์์ํ ์ฌ์๋ํ๋ฉด ์ค๋ณต๊ณผ ์ง์ ๋ฌธ์ ๋ฅผ ๋ง๋ญ๋๋ค. ๋ชฉํ๋ ๊ฐ๋จํฉ๋๋ค: ์ค์ ๋ก ์ฑ๊ณต ๊ฐ๋ฅ์ฑ์ด ์์ ๋๋ง ๋ค์ ์๋ํ๊ณ , ์๋ฏธ ์์ ๋๋ ์ค๋จํ์ธ์.
์คํจ๋ฅผ ๋ถ๋ฅํ๋ ๊ฒ๋ถํฐ ์์ํ์ธ์. ์ด๋ฉ์ผ ์ ๊ณต์์ ํ์์์, SMS ๊ฒ์ดํธ์จ์ด์ 502, ์ผ์์ Telegram API ์ค๋ฅ๋ ๋ณดํต ์ฌ์๋ ๊ฐ๋ฅํ ์ค๋ฅ์ ๋๋ค. ์๋ชป๋ ์ด๋ฉ์ผ ์ฃผ์, ์ ํจ์ฑ ๊ฒ์ฆ์ ์คํจํ ์ ํ๋ฒํธ, ๋ด์ ์ฐจ๋จํ Telegram ์ฑํ ์ ์ฌ์๋ํด๋ ์์ฉ์ด ์์ต๋๋ค. ์ด๋ค์ ๋์ผํ๊ฒ ๋ค๋ฃจ๋ฉด ๋น์ฉ์ ๋ญ๋นํ๊ณ ๋ก๊ทธ๋ฅผ ์ฑ์๋๋ค.
์ค์ฉ์ ์ธ ์ฌ์๋ ๊ณํ์ ์ํ์ด ์๊ณ ๋ฐฑ์คํ๋ฅผ ์ฌ์ฉํฉ๋๋ค:
- ์๋ 1: ์ฆ์ ์ ์ก
- ์๋ 2: 30์ด ํ
- ์๋ 3: 2๋ถ ํ
- ์๋ 4: 10๋ถ ํ
- ๊ฒฝ๋ณด์ ๊ฒฝ์ฐ ์ต๋ ์ ํจ๊ธฐ๊ฐ(์: 30~60๋ถ) ์ง๋๋ฉด ์ค์ง
์ค๋จ์ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋ช ํํ ๋ฐ์๋์ด์ผ ํฉ๋๋ค. ์ฌ์๋ ํ๋๋ฅผ ๋์ผ๋ฉด ๋ฉ์์ง๋ฅผ dead-letter(๋๋ failed-permanently)๋ก ํ์ํ์ธ์. ๋ง์ง๋ง ์ค๋ฅ ์ฝ๋์ ์งง์ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ์งํด ์ง์ํ์ด ์ถ์ ์์ด ์กฐ์นํ ์ ์๊ฒ ํ์ธ์.
์ฑ๊ณต ํ ๋ฐ๋ณต ์ ์ก์ ๋ง์ผ๋ ค๋ฉด ๋ฉฑ๋ฑ์ฑ์ ๊ตฌํํ์ธ์. ๋ ผ๋ฆฌ์ ๋ฉ์์ง๋น(๋ณดํต notification_id + user_id + channel) ๋ฉฑ๋ฑ์ฑ ํค๋ฅผ ๋ง๋ค์ด ์ ๊ณต์๊ฐ ๋ฆ๊ฒ ์๋ตํด๋ ๋ ๋ฒ์งธ ์๋๋ ์ค๋ณต์ผ๋ก ์ธ์๋์ด ๊ฑด๋๋ฐ๊ฒ ํ์ธ์.
ํด๋ฐฑ์ ์๋ ๊ณตํฉ ์ํ๊ฐ ์๋๋ผ ์๋์ ์ผ๋ก ์ค๊ณ๋์ด์ผ ํฉ๋๋ค. ์ฌ๊ฐ๋์ ์๊ฐ์ ๋ฐ๋ผ ์์ค์ปฌ๋ ์ด์ ๊ท์น์ ์ ์ํ์ธ์. ์: ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ์ ๊ฐ์ธ์ ๋ณด ์ํ ๋๋ฌธ์ ๋ค๋ฅธ ์ฑ๋๋ก ํด๋ฐฑํ๋ฉด ์ ๋์ง๋ง, ์ด์ ์ธ์๋ํธ ๊ฒฝ๊ณ ๋ ๋ ๋ฒ์ Telegram ์คํจ ํ SMS๋ฅผ ์๋ํ๊ณ 10๋ถ ํ ์ด๋ฉ์ผ์ ์๋ํ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์ ํธ, ๋์, ์กฐ์ฉ ์๊ฐ
์ฌ๋์ ์กด์คํ ๋ ์์คํ ์ด "์ค๋งํธ"ํ๊ฒ ๋๊ปด์ง๋๋ค. ๊ฐ์ฅ ๋จ์ํ ๋ฐฉ๋ฒ์ ์ฌ์ฉ์๊ฐ ์๋ฆผ ์ ํ๋ณ๋ก ์ฑ๋์ ์ ํํ๊ฒ ํ๋ ๊ฒ์ ๋๋ค. ๋ง์ ํ์ ๋ณด์, ๊ณ์ , ์ ํ, ๋ง์ผํ ์ฒ๋ผ ์ ํ์ ๋ฌถ์ด ๊ท์น๊ณผ ๋ฒ์ ์๊ตฌ์ฌํญ์ ๊ตฌ๋ถํฉ๋๋ค.
์ฑ๋์ด ์์ ๋๋ ์๋ํ๋ ์ ํธ ๋ชจ๋ธ๋ก ์์ํ์ธ์. ์ฌ์ฉ์๋ ์ด๋ฉ์ผ์ ์์ง๋ง ์ ํ๋ฒํธ๊ฐ ์์ ์ ์๊ณ , Telegram์ ์์ง ์ฐ๊ฒฐํ์ง ์์์ ์๋ ์์ต๋๋ค. ๊ทธ๋ฐ ์ํฉ์ ์ค๋ฅ๋ก ์ฒ๋ฆฌํ์ง ๋ง๊ณ ์ ์์ผ๋ก ๋ค๋ฃจ์ธ์.
๋๋ถ๋ถ ์์คํ ์ ์ปดํฉํธํ ํ๋ ์งํฉ์ด ํ์ํฉ๋๋ค: ์๋ฆผ ์ ํ(๋ณด์, ๋ง์ผํ , ์ฒญ๊ตฌ), ์ ํ๋ณ ํ์ฉ ์ฑ๋(์ด๋ฉ์ผ, SMS, Telegram), ์ฑ๋๋ณ ๋์(๋ ์ง/์๊ฐ, ์ถ์ฒ, ์ฆ๊ฑฐ ํ์ ์), ์ฑ๋๋ณ ์ตํธ์์ ์ฌ์ (์ฌ์ฉ์ ์ ํ, ์ด๋ฉ์ผ ๋ฐ์ก, "STOP" ํ์ ), ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์์ ์๊ฐ๋ ํฌํจ ์กฐ์ฉ ์๊ฐ ๊ท์น(์์/์ข ๋ฃ).
์กฐ์ฉ ์๊ฐ์ ์์คํ ์ด ์์ฃผ ์คํจํ๋ ์ง์ ์ ๋๋ค. ์ฌ์ฉ์์ ์๊ฐ๋(๋จ์ ์คํ์ ์ด ์๋)๋ฅผ ์ ์ฅํด ์ฌ๋จธํ์ ๋ณํ๋ก ๋๋ผ์ง ์๊ฒ ํ์ธ์. ๋ฉ์์ง๊ฐ ์กฐ์ฉ ์๊ฐ์ ์์ฝ๋๋ฉด ์คํจ ์ฒ๋ฆฌํ์ง ๋ง๊ณ ์ฐ๊ธฐ(deferred)๋ก ํ์ํ๊ณ ๋ค์ ํ์ฉ ๋ฐ์ก ์๊ฐ์ ์ ํํ์ธ์.
๊ธฐ๋ณธ๊ฐ์ ์ค์ํฉ๋๋ค, ํนํ ์ค์ํ ์๋ฆผ์ ๊ฒฝ์ฐ. ์ผ๋ฐ์ ์ธ ์ ๊ทผ์: ๋ณด์ ์๋ฆผ์ ์กฐ์ฉ ์๊ฐ์ ๋ฌด์(๊ทธ๋ฌ๋ ํ์ํ ๋ฒ์ ํ๋ ์ตํธ์์์ ์กด์ค), ๋นํต์ฌ ์ ๋ฐ์ดํธ๋ ์กฐ์ฉ ์๊ฐ๊ณผ ์ฑ๋ ์ ํ์ ๋ฐ๋ฆ ๋๋ค.
์: ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ์ ํ์ฉ๋ ๊ฐ์ฅ ๋น ๋ฅธ ์ฑ๋๋ก ์ฆ์ ๋ฐ์ก๋์ด์ผ ํฉ๋๋ค. ์ฃผ๊ฐ ์์ฝ์ ์์นจ๊น์ง ๊ธฐ๋ค๋ฆฌ๊ณ SMS๋ ์ฌ์ฉ์๊ฐ ๋ช ์์ ์ผ๋ก ํ์ฑํํ์ง ์์ผ๋ฉด ๊ฑด๋๋๋๋ค.
์ด์: ๋ชจ๋ํฐ๋ง, ๋ก๊ทธ, ์ง์ ์ํฌํ๋ก
์๋ฆผ์ด ์ด๋ฉ์ผ, SMS, Telegram์ ์ค๊ฐ๋ฉด ์ง์ํ์ ๋น ๋ฅด๊ฒ ๋ต์ ํ์๋ก ํฉ๋๋ค: ๋ณด๋๋, ๋๋ฌํ๋, ๋ฌด์์ด ์คํจํ๋? ๋ค์ค ์ฑ๋ ์๋ฆผ ์์คํ ์ ์ฌ๋ฌ ์ ๊ณต์๋ฅผ ์จ๋ ์กฐ์ฌํ ์ ์๋ ํ ๊ณณ์ฒ๋ผ ๋๊ปด์ ธ์ผ ํฉ๋๋ค.
๋๊ตฌ๋ ์ฌ์ฉํ ์ ์๋ ๊ฐ๋จํ ๊ด๋ฆฌ์ ๋ทฐ๋ก ์์ํ์ธ์. ์ฌ์ฉ์, ์ด๋ฒคํธ ์ ํ, ์ํ, ์๊ฐ ์ฐฝ์ผ๋ก ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํ๊ณ ์ต์ ์๋๋ฅผ ๋จผ์ ๋ณด์ฌ์ฃผ์ธ์. ๊ฐ ํ์ ์ฑ๋, ์ ๊ณต์ ์๋ต, ๋ค์ ์์ ๋ ์์ (์ฌ์๋, ํด๋ฐฑ, ์ค์ง)์ ๋ณด์ฌ์ค์ผ ํฉ๋๋ค.
๋ฌธ์ ๋ฅผ ์ด๊ธฐ์ ์ก์๋ด๋ ์งํ
์ฅ์ ๋ ํํ ํ๋์ ๊น๋ํ ์ค๋ฅ๋ก ๋ํ๋์ง ์์ต๋๋ค. ์์์ ์์น๋ฅผ ์ถ์ ํ๊ณ ์ ๊ธฐ์ ์ผ๋ก ๊ฒํ ํ์ธ์:
- ์ฑ๋๋ณ ์ ์ก๋ฅ (๋ถ๋น ๋ฉ์์ง)
- ์ ๊ณต์ ๋ฐ ์ค๋ฅ ์ฝ๋๋ณ ์คํจ์จ
- ์ฌ์๋์จ(๋ช ๊ฑด์ด ๋ ๋ฒ์งธ ์๋๋ฅผ ํ์๋ก ํ๋์ง)
- ์ ๋ฌ ์๊ฐ(queued์์ delivered๊น์ง, p50 ๋ฐ p95)
- ๋๋กญ๋ฅ (์ฌ์ฉ์ ์ ํธ, ๋์ ๊ฒฐ์ฌ, ์ต๋ ์ฌ์๋๋ก ์ค์ง๋ ๋น์จ)
๋ชจ๋ ๊ฒ์ ์ฐ๊ด์ง์ด ๋ณด์ธ์. ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ correlation ID๋ฅผ ์์ฑํ๊ณ ํ ํ๋ฆฟ, ํ์, ์ ๊ณต์ ํธ์ถ, ์ํ ์ ๋ฐ์ดํธ ์ ๋ฐ์ ์ ๋ฌํ์ธ์. ๋ก๊ทธ์์ ๊ทธ ID๋ ์ฌ๋ฌ ์ฑ๋๋ก ํผ์ง ์ด๋ฒคํธ๋ฅผ ์ถ์ ํ๋ ์ค(thread)์ด ๋ฉ๋๋ค.
์ง์ ์นํ์ ์ฌ์ ์ก(replay) ๊ฐ์ด๋
์ฌ์ ์ก์ ํ์์ง๋ง ์ฌ๋์๊ฒ ์คํธ์ ๋ณด๋ด๊ฑฐ๋ ์ด์ค ์ฒญ๊ตฌ๋ฅผ ํ์ง ์๋๋ก ๊ฐ๋๋ ์ผ์ด ํ์ํฉ๋๋ค. ์์ ํ ์ฌ์ ์ก ํ๋ฆ์ ๋ณดํต ๋ค์์ ์๋ฏธํฉ๋๋ค: ์ ์ฒด ์ด๋ฒคํธ ๋ฐฐ์น๊ฐ ์๋ ํน์ ๋ฉ์์ง ID๋ง ์ฌ์ ์ก, ์ ์ก ์ ์ ์ ํํ ํ ํ๋ฆฟ ๋ฒ์ ๊ณผ ๋ ๋๋ ์ฝํ ์ธ ๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ, ์ฌ์ ์ก ์ฌ์ ์ ์คํ์ ๊ธฐ๋ก, ์ด๋ฏธ ์ ๋ฌ๋ ๋ฉ์์ง๋ ๋ช ์์ ์ผ๋ก ๊ฐ์ ๋ก ํ์ง ์๋ ํ ์ฐจ๋จ, ์ฌ์ฉ์ ๋ฐ ์ฑ๋๋ณ ์๋ ์ ํ ์ ์ฉ.
์๋ฆผ์ ๋ณด์ ๋ฐ ๊ฐ์ธ์ ๋ณด ๊ธฐ๋ณธ
๋ค์ค ์ฑ๋ ์๋ฆผ ์์คํ ์ ๊ฐ์ธ ๋ฐ์ดํฐ(์ด๋ฉ์ผ, ์ ํ๋ฒํธ, ์ฑํ ID)๋ฅผ ๋ค๋ฃจ๊ณ ๋ก๊ทธ์ธ, ๊ฒฐ์ , ์ง์ ๊ฐ์ ๋ฏผ๊ฐํ ์๊ฐ์ ํฌํจํฉ๋๋ค. ๋ชจ๋ ๋ฉ์์ง ๋ณธ๋ฌธ๊ณผ ๋ก๊ทธ ๋ผ์ธ์ด ๋์ค์ ๋ณด์ผ ์ ์๋ค๊ณ ๊ฐ์ ํ๊ณ ์ ์ฅ ๋ฒ์์ ๋ณผ ์ ์๋ ์ฌ๋์ ์ ํํ์ธ์.
๊ฐ๋ฅํ๋ฉด ํ ํ๋ฆฟ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ง ๋ง์ธ์. ํ ํ๋ฆฟ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ ๋จ์ํด์ผ ํฉ๋๋ค: "Your code is {{code}}" ๊ฐ์ ํํ๋ ๊ด์ฐฎ์ง๋ง ์ ์ฒด ๊ณ์ ์์ธ, ๊ธด ํ ํฐ, ๊ณ์ ์ ํ์ทจํ ์ ์๋ ์ ๋ณด๋ ํผํ์ธ์. ์ผํ์ฉ ์ฝ๋๋ ์ฌ์ค์ ํ ํฐ์ด ๊ผญ ํ์ํ๋ฉด ์์๊ฐ์ด ์๋(์: ํด์์ ๋ง๋ฃ ์๊ฐ) ๊ฒ์ฆ์ ํ์ํ ์ ๋ณด๋ง ์ ์ฅํ์ธ์.
์๋ฆผ ์ด๋ฒคํธ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ๋ก๊ทธํ ๋๋ ์ ๊ทน์ ์ผ๋ก ๋ง์คํนํ์ธ์. ์ง์ ๋ด๋น์๋ ๋ณดํต ์ฝ๋ ์์ฒด๊ฐ ์๋๋ผ ์ฝ๋๊ฐ ์ ์ก๋์๋์ง๋ฅผ ์๋ฉด ๋ฉ๋๋ค. ์ ํ๋ฒํธ์ ์ด๋ฉ์ผ๋ ์ ์ก์๋ ์ ์ฒด ๊ฐ์ด ํ์ํ์ง๋ง ๋๋ถ๋ถ ํ๋ฉด์์๋ ๋ง์คํน๋ ๋ฒ์ ์ ๋ณด์ฌ์ฃผ์ธ์.
๋๋ถ๋ถ ์ฌ๊ณ ๋ฅผ ๋ง๋ ์ต์ํ์ ํต์
- ์ญํ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด: ๋ฉ์์ง ๋ณธ๋ฌธ๊ณผ ์ ์ฒด ์์ ์ ์ ๋ณด๋ฅผ ๋ณผ ์ ์๋ ์ญํ ์ ์ ํ
- ๋๋ฒ๊ทธ ์ ๊ทผ๊ณผ ์ง์ ์ ๊ทผ ๋ถ๋ฆฌ: ๋ฌธ์ ํด๊ฒฐ์ด ๊ฐ์ธ์ ๋ณด ์ ์ถ๋ก ์ด์ด์ง์ง ์๊ฒ
- ์นํ ๋ณดํธ: ์๋ช ๋ ์ฝ๋ฐฑ์ด๋ ๊ณต์ ๋น๋ฐ ์ฌ์ฉ, ํ์์คํฌํ ๊ฒ์ฆ, ์ ์ ์๋ ์ถ์ฒ ๊ฑฐ๋ถ
- ์ ์ฅ ์ ๋ฏผ๊ฐ ํ๋ ์ํธํ, ์ ์ก ์ TLS ์ฌ์ฉ
- ๋ณด์กด ์ ์ฑ ์ ์: ์์ธ ๋ก๊ทธ๋ ์งง๊ฒ, ์ดํ์๋ ์ง๊ณ๋ ํด์๋ ์๋ณ์๋ง ๋ณด๊ด
์ค์ฉ์ ์: ๋น๋ฐ๋ฒํธ ์ฌ์ค์ SMS๊ฐ ์คํจํด Telegram์ผ๋ก ํด๋ฐฑํ ๋๋ ์๋, ์ ๊ณต์ ์ํ, ๋ง์คํน๋ ์์ ์๋ง ์ ์ฅํ๋ ์ฌ์ค์ ๋งํฌ ์๋ฌธ์ DB๋ ๋ก๊ทธ์ ์ ์ฅํ์ง ๋ง์ธ์.
์์ ์๋๋ฆฌ์ค: ํ ์๋ฆผ, ์ธ ์ฑ๋, ์ค์ ๊ฒฐ๊ณผ
๊ณ ๊ฐ ๋ง์ผ(Maya)๋ Password reset๊ณผ New login ๋ ์๋ฆผ ์ ํ์ ์ฌ์ฉํ๋๋ก ์ค์ ํ๊ณ Telegram์ ์ฐ์ , ๊ทธ๋ค์ ์ด๋ฉ์ผ์ ์ ํธํฉ๋๋ค. SMS๋ ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ์๋ง ํด๋ฐฑ์ผ๋ก ํ์ฉํฉ๋๋ค.
์ด๋ ์ ๋ ๋ง์ผ๊ฐ ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ์ ์์ฒญํฉ๋๋ค. ์์คํ ์ ์์ ๋ ID๋ฅผ ๊ฐ์ง ๋จ์ผ ์๋ฆผ ๋ ์ฝ๋๋ฅผ ๋ง๋ค๊ณ ํ์ฌ ์ ํธ์ ๋ฐ๋ผ ์ฑ๋ ์๋๋ฅผ ํ์ฅํฉ๋๋ค.
๋ง์ผ๊ฐ ๋ณด๋ ๊ฒ์ ๋จ์ํฉ๋๋ค: Telegram ๋ฉ์์ง๊ฐ ๋ช ์ด ๋ด์ ๋์ฐฉํด ์งง์ ์ฌ์ค์ ์ฝ๋์ ๋ง๋ฃ ์๊ฐ์ ์ค๋๋ค. Telegram์ด ์ฑ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๊ฒ์ ๋์ฐฉํ์ง ์์ต๋๋ค.
์์คํ ์ด ๊ธฐ๋กํ๋ ๊ฒ์ ๋ ์์ธํฉ๋๋ค:
- Notification: type=PASSWORD_RESET, user_id=Maya, template_version=v4
- Attempt #1: channel=TELEGRAM, status=SENT then DELIVERED
- ์ ์ฑ ์(์ฒซ ์ฑ๊ณต ํ ์ค์ง) ์ด๋ฉ์ผ์ด๋ SMS ์๋๋ ์์ฑ๋์ง ์์
๊ทธ ์ฃผ ํ์ ์๋ก์ด ๋๋ฐ์ด์ค์์ New login ์๋ฆผ์ด ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค. ๋ง์ผ๋ ๋ก๊ทธ์ธ ์๋ฆผ์ Telegram๋ง ํ์ฉํด ๋์์ต๋๋ค. ์์คํ ์ Telegram์ ๋ณด๋ด์ง๋ง ์ ๊ณต์๊ฐ ์ผ์์ ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค. ์์คํ ์ ๋ฐฑ์คํ๋ฅผ ๋๊ณ ๋ ๋ฒ ์ฌ์๋ํ ๋ค FAILED๋ก ํ์ํ๊ณ ์ค์งํฉ๋๋ค(์ด ์๋ฆผ ์ ํ์ ํด๋ฐฑ ๋ถํ).
์ง์ง ์คํจ ์ฌ๋ก: ๋ง์ผ๊ฐ ์ฌํ ์ค ๋ ๋ค๋ฅธ ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ์ ์์ฒญํ์ต๋๋ค. Telegram์ ๋ณด๋์ง๋ง 60์ด ๋ด์ ์ ๋ฌ์ด ํ์ธ๋์ง ์์ผ๋ฉด SMS ํด๋ฐฑ์ด ์ค์ ๋์ด ์์ต๋๋ค. SMS ์ ๊ณต์๊ฐ ํ์์์์ ๊ธฐ๋กํ์ต๋๋ค. ์์คํ ์ ํ์์์์ ๊ธฐ๋กํ๊ณ ํ ๋ฒ ์ฌ์๋ํ์ผ๋ฉฐ ๋ ๋ฒ์งธ ์๋๊ฐ ์ฑ๊ณตํ์ต๋๋ค. ๋ง์ผ๋ 1๋ถ ํ SMS ์ฝ๋๋ฅผ ๋ฐ์์ต๋๋ค.
๋ง์ผ๊ฐ ์ง์์ ์ฐ๋ฝํ๋ฉด ์ง์ํ์ ์ฌ์ฉ์์ ์๊ฐ ์ฐฝ์ผ๋ก ๊ฒ์ํด ์๋ ์ด๋ ฅ: ํ์์คํฌํ, ์ ๊ณต์ ์๋ต ์ฝ๋, ์ฌ์๋ ํ์, ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์ฆ์ ๋ณผ ์ ์์ต๋๋ค.
๋น ๋ฅธ ์ฒดํฌ๋ฆฌ์คํธ, ํํ ์ค์, ๋ค์ ๋จ๊ณ
๋ค์ค ์ฑ๋ ์๋ฆผ ์์คํ ์ ๋ ๊ฐ์ง ์ง๋ฌธ์ ๋น ๋ฅด๊ฒ ๋ตํ ์ ์์ ๋ ์ด์ํ๊ธฐ ์ฝ์ต๋๋ค: "์ ํํ ๋ฌด์์ ๋ณด๋ด๋ ค๊ณ ํ๋๊ฐ?"์ "๊ทธ ๋ค์ ๋ฌด์จ ์ผ์ด ์์๋๊ฐ?" ์ฑ๋์ด๋ ์ด๋ฒคํธ๋ฅผ ์ถ๊ฐํ๊ธฐ ์ ์ ์ด ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ธ์.
๋น ๋ฅธ ์ฒดํฌ๋ฆฌ์คํธ
- ๋ช
ํํ ์ด๋ฒคํธ ์ด๋ฆ๊ณผ ์์ ์(์:
invoice.overdue๋ billing ์์ ) - ํ ํ๋ฆฟ ๋ณ์๋ ํ ๋ฒ ์ ์(ํ์ vs ์ ํ, ๊ธฐ๋ณธ๊ฐ, ํ์ ๊ท์น)
- ์ํ ์ฌ์ ํฉ์(created, queued, sent, delivered, failed, suppressed) ๋ฐ ๊ฐ ์ํ์ ์๋ฏธ
- ์ฌ์๋ ํ๋์ ๋ฐฑ์คํ(์ต๋ ์๋, ๊ฐ๊ฒฉ, ์ค์ง ๊ท์น)
- ๋ณด์กด ๊ท์น(๋ฉ์์ง ๋ณธ๋ฌธ, ์ ๊ณต์ ์๋ต, ์ํ ์ด๋ ฅ์ ์ผ๋ง๋ ๋ณด๊ดํ ์ง)
ํ ๊ฐ์ง๋ง ํ๋ ค๋ฉด, sent์ delivered์ ์ฐจ์ด๋ฅผ ๋ฌธ์ฅ์ผ๋ก ์ ์ด๋์ธ์. Sent๋ ์์คํ ์ด ํ ํ๋์ ๋๋ค. Delivered๋ ์ ๊ณต์๊ฐ ๋ณด๊ณ ํ ๊ฒ(์ง์ฐ๋๊ฑฐ๋ ๋๋ฝ๋ ์ ์์)์ ๋๋ค. ์ด ๋์ ์์ผ๋ฉด ์ง์ํ๊ณผ ์ดํด๊ด๊ณ์๊ฐ ํผ๋์ค๋ฌ์์ง๋๋ค.
ํผํด์ผ ํ ํํ ์ค์
- sent๋ฅผ ์ฑ๊ณต์ผ๋ก ์ฒ๋ฆฌํด ๊ณผ์ฅ๋ ์ ๋ฌ๋ฅ ์ ๋ณด๊ณ ํ๋ ๊ฒ
- ์ฑ๋๋ณ ํ ํ๋ฆฟ์ ๋ฐฉ์นํด ์ด๋ฉ์ผ, SMS, Telegram์ด ์๋ก ๋ชจ์๋๊ฒ ๋๋ ๊ฒ
- ์ ๊ณต์๊ฐ ํ์์์ํ์ง๋ง ๋์ค์ ์๋ฝํ ๊ฒฝ์ฐ ๋ฉฑ๋ฑ์ฑ ์์ด ์ฌ์๋ํด ์ค๋ณต์ ๋ง๋๋ ๊ฒ
- ์์ํ ์ฌ์๋ํด ์ผ์์ ์ฅ์ ๋ฅผ ์์์ผ๋ก ๋ง๋๋ ๊ฒ
- "ํน์ ๋ชฐ๋ผ"๋ผ๋ ์ด์ ๋ก ๋ก๊ทธ์ ์ํ ๊ธฐ๋ก์ ๊ณผ๋ํ ๊ฐ์ธ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ
ํ๋์ ์ด๋ฒคํธ์ ํ๋์ ๊ธฐ๋ณธ ์ฑ๋๋ก ์์ํ๊ณ ๋ ๋ฒ์งธ ์ฑ๋์ ํด๋ฐฑ์ผ๋ก ์ถ๊ฐํ์ธ์(๋ณ๋ ฌ ๋ฐ์ก์ผ๋ก ์์ํ์ง ๋ง์ธ์). ํ๋ฆ์ด ์์ ๋๋ฉด ์ด๋ฒคํธ๋ณ๋ก ํ์ฅํ๊ณ ํ ํ๋ฆฟ๊ณผ ๋ณ์๋ฅผ ๊ณต์ ํด ๋ฉ์์ง ์ผ๊ด์ฑ์ ์ ์งํ์ธ์.
ํธ๋์ฝ๋ฉ ์์ด ์ด๊ฑธ ๊ตฌ์ถํ๊ณ ์ถ๋ค๋ฉด AppMaster (appmaster.io)์ ํต์ฌ ๋ถ๋ถ์ ์ค์ฉ์ ์ ๋๋ค: Data Designer์์ ์ด๋ฒคํธ, ํ ํ๋ฆฟ, ์ ์ก ์๋๋ฅผ ๋ชจ๋ธ๋งํ๊ณ Business Process Editor์์ ๋ผ์ฐํ ๊ณผ ์ฌ์๋๋ฅผ ๊ตฌํํ๋ฉฐ ์ด๋ฉ์ผ, SMS, Telegram์ ํตํฉํด ์ํ ์ถ์ ์ ํ ๊ณณ์ ์ ์งํ์ธ์.


