SNS
ส่งข้อความแบบกระจาย (pub/sub) ไปหลายปลายทาง
ผู้ใหญ่บ้านประกาศครั้งเดียว (Publish) ลูกบ้านทุกคนที่ลงทะเบียนฟังไว้ (Subscribe) จะได้ยินพร้อมกันทันที ไม่ต้องเดินไปบอกทีละบ้าน
พื้นฐานที่ควรรู้: บางครั้งระบบของเราต้องการส่งข้อมูลเรื่องเดียวไปให้หลายๆ ระบบทำงานพร้อมกัน (เช่น แจ้งเตือนลูกค้าผ่านอีเมล, ส่งต่อให้ระบบบัญชี, ส่งให้โกดังแพ็กของ) การเขียนโค้ดยิงแยกทีละระบบนั้นช้าและจัดการยาก
SNS (Simple Notification Service - บริการแจ้งเตือนแบบเรียบง่าย) เป็นระบบที่ใช้รูปแบบ Pub/Sub (Publisher/Subscriber - ผู้ประกาศและผู้ติดตาม) — ผู้ส่ง (Publisher) ส่งข้อความไปที่หัวข้อ (Topic) เดียว จากนั้น SNS จะกระจายข้อความไปยังผู้ติดตาม (Subscriber) หลายรายพร้อมๆ กัน เช่น Lambda, SQS, Email, หรือ HTTP
สรุป Key Takeaways
- SNS = pub/sub กระจาย 1 ข้อความไปหลาย subscriber
- Fan-out: SNS → หลาย SQS ให้หลายระบบรับ event เดียวกัน
- SQS=queue ดึงไปทำ, SNS=push กระจาย
คำถามที่พบบ่อย
SNS ต่างจาก SQS ยังไงในประโยคเดียว
SNS = ประกาศ (push, 1 ข้อความถึงผู้ติดตามหลายรายพร้อมกัน, ไม่เก็บถ้าไม่มีใครรับ) ส่วน SQS = คิวงาน (pull, ผู้รับหยิบไปทำทีละชิ้น, เก็บรอได้) — ใช้คู่กันในแบบแผน fan-out ที่ออกสอบบ่อยสุดของ module นี้
Fan-out pattern คืออะไร
SNS topic เดียวส่งเข้า SQS หลายคิวพร้อมกัน — event เดียว (เช่น มีออเดอร์ใหม่) ให้หลายระบบทำงานอิสระ (คิวใบเสร็จ, คิวคลังสินค้า, คิว analytics) ระบบหนึ่งพังไม่ฉุดระบบอื่น — โจทย์ "ส่ง event เดียวให้หลาย consumer ประมวลผลแยกกัน" = SNS + SQS fan-out
Message filtering ของ SNS ช่วยอะไร
ตั้ง filter policy ที่ตัว subscription ให้แต่ละผู้รับได้เฉพาะข้อความที่ตรงเงื่อนไข (เช่น คิวคลังรับเฉพาะ event ประเภท order) — ตัด logic กรองออกจากโค้ด consumer และลดข้อความขยะ
ลองทำ Quiz ท้ายบท
คำถามแนวข้อสอบของโมดูลนี้ 5 ข้อ · เฉลยทันที

