ข้ามไปเนื้อหาหลัก
เชื่อมต่อแอป· ~12 นาที· อัปเดตล่าสุด

SNS

ส่งข้อความแบบกระจาย (pub/sub) ไปหลายปลายทาง

เปรียบเทียบ: SNS เหมือนหอกระจายข่าวในหมู่บ้าน

ผู้ใหญ่บ้านประกาศครั้งเดียว (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 ข้อ · เฉลยทันที

อ่านจบแล้วอย่าลืมทำเครื่องหมาย