1. Apa itu AWS SNS?
Amazon Simple Notification Service (SNS) adalah layanan pub/sub messaging dari AWS yang memungkinkan aplikasi mengirim notifikasi atau pesan ke banyak subscriber secara real-time, scalable, dan serverless.

SNS mendukung berbagai jenis subscriber seperti:
- HTTP/HTTPS endpoint
- SMS
- SQS (Amazon Simple Queue Service)
- Lambda Function
- Mobile push notification
- Kinesis Firehose
SNS adalah core service yang banyak digunakan pada microservices, event-driven architecture, dan automation di AWS.
2. Fungsi Utama AWS SNS
Beberapa fungsi penting SNS di dalam arsitektur modern:
a. Broadcast Message (Publish-Subscribe)
Satu producer (publisher) dapat mengirim pesan ke banyak subscriber sekaligus.
b. Notification System
Untuk mengirim notifikasi penting seperti:
- Error alert
- Billing alert
- System status alert
- Application events
c. Event Distribution
SNS digunakan sebagai event bus sederhana yang mendistribusikan event ke beberapa layanan downstream.
3. Konsep Dasar AWS SNS
A. Topic
Objek utama SNS tempat publisher mengirim pesan.
B. Publisher
Aplikasi atau layanan yang mengirim pesan ke SNS topic.
C. Subscriber
Endpoint atau layanan yang menerima pesan, misalnya:
- SQS queue
- Lambda function
- SMS
- Webhook (HTTP/HTTPS)
D. Message Filtering
Subscriber bisa menerima hanya pesan tertentu berdasarkan atribut.
E. Delivery Retry
Jika endpoint gagal menerima pesan (misal HTTP error), SNS akan retry otomatis.
4. Tipe Pesan yang Didukung AWS SNS
SNS mendukung berbagai format:
- JSON
- Text
- Mobile notification payload (APNS, FCM)
- Custom structured message per protocol
5. Kelebihan AWS SNS
✔ Real-time
Pesan dikirim ke subscriber seketika.
✔ Scalability tak terbatas
SNS dapat menangani jutaan message per detik.
✔ Reliable
SNS menyimpan beberapa salinan pesan untuk redundancy.
✔ Managed & Serverless
Tidak perlu maintenance server atau broker.
✔ Integrasi Mendalam dengan AWS
SNS terhubung langsung dengan Lambda, SQS, S3 events, Kinesis, CloudWatch, dll.
6. Arsitektur Kerja AWS SNS
Urutannya sebagai berikut:
- Publisher mengirim pesan ke SNS Topic.
- SNS memproses atribut dan kebijakan filter.
- SNS mendistribusikan pesan ke semua subscriber terdaftar.
- Jika subscriber adalah SQS, pesan akan disimpan.
- Jika subscriber adalah Lambda, fungsi langsung dieksekusi.
- Jika subscriber adalah HTTP, SNS mengirim POST request.
- SNS melakukan retry jika gagal.
7. Integrasi Paling Populer AWS SNS
1. SNS → Email
Untuk alert server, aplikasi, atau invoice.
2. SNS → SMS
Untuk notifikasi segera.
3. SNS → SQS
Arsitektur ini biasa disebut fan-out pattern:
Satu event → banyak queue → banyak microservices.
4. SNS → Lambda
Untuk otomatisasi serverless.
5. SNS → Webhook
Mengirim pesan ke aplikasi pihak ketiga seperti:
- Discord webhook
- Slack webhook
- Custom REST API
8. Fan-Out Pattern (SNS + SQS)
Ini adalah pola arsitektur paling umum:
Publisher → SNS Topic → Banyak SQS queue → banyak worker
Kelebihan:
- Tidak ada pesan hilang.
- Setiap layanan mendapatkan salinan pesan.
- Sangat scalable.
9. Fitur Penting AWS SNS
A. Message Filtering
Memungkinkan subscriber menerima pesan berdasarkan atribut.
Contoh attribute:
{
"eventType": "order_created"
}
B. FIFO Topic
SNS juga menyediakan FIFO Topic:
- Mendukung ordering
- Mendukung exactly-once message delivery
- Cocok untuk transaksi / financial data
C. Delivery Status Logging
Log ke CloudWatch tentang keberhasilan/kegagalan pengiriman.
D. Encryption (KMS)
Untuk pesan yang membutuhkan keamanan tinggi.
10. Use Case AWS SNS (Dunia Nyata)
1. Alerting System
- Notifikasi CPU EC2 tinggi
- Error di Lambda
- Kegagalan backup
- Invoice AWS ke email/SMS
2. Push Notification Mobile Apps
Facebook, Twitter, TikTok menggunakan pola Pub/Sub seperti ini.
3. Distributed System Messaging
Mengalirkan event ke banyak backend services.
4. E-commerce Event Handling
Setiap transaksi order → SNS broadcast ke:
- Payment service
- Shipping service
- Notification service
- Audit service
5. IoT Messaging
Mengirim update IoT device ke cloud.
11. Cara Membuat SNS Topic (Step by Step)
1. Buka AWS Console → SNS
Klik Create Topic.
2. Pilih jenis topic
- Standard
- FIFO
3. Isi konfigurasi
- Nama topic
- Encryption
- Delivery policy
4. Tambahkan Subscriber
Misalnya:
- Email → masuk email konfirmasi
- SQS → langsung terhubung
- Lambda → pilih function
5. Publish Message
Gunakan menu “Publish message”.
12. Contoh Implementasi AWS SNS (Node.js)
A. Publish Pesan
import { SNSClient, PublishCommand } from "@aws-sdk/client-sns";
const sns = new SNSClient({ region: "ap-southeast-1" });
const params = {
TopicArn: "arn:aws:sns:ap-southeast-1:123456789012:myTopic",
Message: JSON.stringify({ message: "Hello from SNS!" }),
Subject: "Test Notification"
};
await sns.send(new PublishCommand(params));
13. Filtering Subscriber
Contoh filter untuk menerima pesan hanya jika type = order:
{
"type": ["order"]
}
Subscriber lain bisa menerima filter berbeda.
14. SNS vs SQS: Apa Bedanya?
| Fitur | SNS | SQS |
|---|---|---|
| Model | Publish/Subscribe broadcast | Queue (FIFO/Standard) |
| Arah Pesan | 1 → Banyak | 1 → 1 |
| Penyimpanan | Tidak menyimpan lama | Menyimpan pesan |
| Penggunaan | Notifikasi, fan-out | Job queue, worker |
Gabungan terbaik:
SNS + SQS = scalable distributed system
15. Harga AWS SNS
Meskipun tergantung region, secara umum:
- Publish pertama 1 juta request gratis (dalam batas free tier).
- SMS harga berbeda tiap negara.
- Email via SNS sangat murah.
- Push notification mobile murah.
SNS tetap salah satu layanan paling murah di AWS.
16. Best Practice AWS SNS
✔ Gunakan SNS + SQS untuk reliability tinggi
✔ Aktifkan delivery status logging
✔ Gunakan IAM Policy yang ketat untuk akses SNS
✔ Untuk ordering gunakan SNS FIFO
✔ Aktifkan encryption KMS
✔ Gunakan Message Attributes untuk filtering
17. Kesimpulan
AWS SNS adalah solusi notifikasi dan distribusi pesan yang scalable, murah, dan mudah digunakan. Dengan konsep publish-subscribe, SNS sangat cocok untuk arsitektur microservices modern, event-driven system, automation, dan real-time notification.
SNS menjadi tulang punggung untuk banyak use case seperti alerting, billing notification, push messaging, IoT communication, hingga integrasi dengan SQS dan Lambda.
