Scalable Email Delivery Service
Architecture queue-driven hai: API request turant accept karke queue mein daal do (202 Accepted), aur workers async bhejein. Ye isliye ki SMTP slow hai aur caller ko usse block nahi karna chahiye. Priority queues rakho — transactional email (OTP, password reset) bulk marketing se pehle jaani chahiye.
Asli complexity DELIVERABILITY hai, throughput nahi. Har receiving provider (Gmail, Outlook) ki apni rate limits hain, isliye per-domain throttling chahiye. Bounces aur complaints track karo aur bad addresses ko suppression list mein daalo — warna sender reputation girti hai aur saari emails spam mein jaane lagti hain.
// Async accept, priority-based send
POST /send → validate → queue → 202 Accepted (turant)
Priority queues:
transactional (OTP, reset) -> highest
notification -> medium
bulk marketing -> lowest, throttled
// Per-domain rate limit + bounce handling
gmail.com -> 100/sec | bounce -> suppression list (dobara mat bhejo)- Async queue-driven, API turant 202 lautaye
- Priority queues — OTP marketing ke peeche kabhi nahi
- Per-domain throttling + bounce/suppression se reputation bachti hai
Templates alag service mein rehte hain, versioned. Email bhejte waqt template + variables se HTML render hota hai. Ye isliye ki marketing team bina deploy ke content badal sake.
Bulk sends ke liye rendering bottleneck ban sakti hai — 10 lakh personalized emails matlab 10 lakh renders. Isliye rendering workers mein parallel hoti hai, aur jahan possible ho template compile karke cache kiya jaata hai.
// Render workers mein parallel, send se pehle
Campaign (10L recipients)
→ chunk into batches (10K each)
→ render workers (parallel)
→ send queue (per-domain throttled)HARD BOUNCE (address exist nahi karta) par address turant suppression list mein daalo — dobara bhejna reputation kharab karta hai. SOFT BOUNCE (mailbox full, temporary) par retry karo, par limited attempts ke saath.
Providers complaint rate (spam button) bhi track karte hain. 0.1% se upar jaane par delivery girne lagti hai. Isliye unsubscribe link prominent rakhna aur suppression honour karna technical requirement hai, legal formality nahi.