1. Apa itu AWS SQS?
Amazon Simple Queue Service (SQS) adalah layanan antrian pesan fully managed dari AWS yang memungkinkan aplikasi mengirim, menyimpan, dan menerima pesan antar-komponen secara asynchronous. Dengan SQS, Anda bisa membangun sistem terdistribusi, highly scalable, dan fault-tolerant tanpa perlu mengelola infrastruktur messaging server.

SQS merupakan layanan serverless, sehingga Anda tidak perlu memikirkan patching, scaling, high availability, atau maintenance.
2. Mengapa AWS SQS Penting dalam Arsitektur Modern?
SQS sering digunakan dalam arsitektur:
- Microservices
- Distributed systems
- Event-driven architecture
- Serverless architecture
Keunggulan SQS:
- Memisahkan (decoupling) antar-komponen.
- Mencegah bottleneck.
- Menyerap lonjakan traffic.
- Menjadikan sistem lebih resilient dan reliable.
3. Tipe Antrian di AWS SQS
AWS menyediakan dua jenis queue utama:
A. Standard Queue
Cocok untuk sebagian besar kasus.
- High throughput
- At-least-once delivery (pesan mungkin terkirim lebih dari sekali)
- Best-effort ordering (tidak menjamin urutan)
B. FIFO Queue (First-In-First-Out)
Digunakan jika urutan sangat penting.
- Exactly-once processing
- Menjamin pesan diproses sesuai urutan
- throughput terbatas (hingga 3000 msg/s dengan batching)
4. Arsitektur dan Cara Kerja AWS SQS
Arus kerja SQS terdiri dari:
- Producer mengirim pesan ke queue.
- Pesan disimpan dengan durasi tertentu (default 4 hari, max 14 hari).
- Consumer/Worker menarik pesan.
- Pesan masuk Visibility Timeout → tidak terlihat oleh worker lain.
- Consumer memproses pesan.
- Consumer melakukan DeleteMessage.
Jika tidak dihapus → pesan akan muncul lagi setelah visibility timeout.
5. Konsep-Kunci pada AWS SQS
Message Retention
Lama penyimpanan pesan (1 menit – 14 hari).
Visibility Timeout
Waktu “lock” agar pesan tidak diproses dua kali.
Dead-Letter Queue (DLQ)
Menampung pesan gagal agar tidak mengganggu queue utama.
Long Polling
Mengurangi biaya dan meningkatkan efisiensi dengan menunggu pesan hingga tersedia.
Message Size
Max 256 KB (atau lebih dengan S3 Extended Client Library).
6. Manfaat AWS SQS
A. Scalable & High Throughput
Ideal untuk sistem besar dengan traffic tinggi.
B. Decoupling
Microservices tidak saling tergantung.
C. Fault Tolerant
Jika backend down, pesan tetap aman di antrian.
D. Hemat Biaya
Bayar per request; tidak ada server.
E. Integrasi Luas
Terhubung erat dengan:
- AWS Lambda
- SNS
- Step Functions
- EC2
- ECS/Fargate
- S3 Events
7. Use Case AWS SQS di Dunia Nyata
1. Proses Asynchronous
Contoh:
- Upload gambar → proses resize di background.
2. Job Queue / Worker Queue
Worker mengambil pesan dan memproses job seperti:
- Generate PDF
- Kirim email masal
- Proses video
3. Buffering untuk Lonjakan Traffic
Melindungi backend yang lambat.
4. E-commerce Order Processing
Setiap order dimasukkan ke queue → diproses oleh beberapa layanan.
5. Integrasi Sistem Lama dengan Microservices Baru
Menggunakan SQS sebagai jembatan.
8. Integrasi Populer AWS SQS
A. SQS + Lambda
Serverless worker tanpa server:
- Lambda otomatis trigger saat pesan masuk.
B. SQS + SNS
SNS broadcast → SQS menerima sebagai subscriber.
C. SQS + ECS/Fargate
Worker cluster otomatis scale berdasarkan panjang queue.
9. Cara Membuat Antrian SQS (Tutorial Step-by-Step)
1. Masuk AWS Management Console
Cari layanan SQS.
2. Create Queue
Pilih:
- Standard / FIFO
- Nama queue
- Visibility timeout
- Message retention
- Encryption (boleh default)
3. Kirim Pesan
Klik Send and receive messages → Send message.
4. Konsumsi Pesan
Gunakan salah satu:
- AWS CLI
- AWS SDK (Node.js, Python, Go, Java)
- AWS Lambda
10. Contoh Implementasi AWS SQS (Node.js)
A. Mengirim Pesan
import { SQSClient, SendMessageCommand } from "@aws-sdk/client-sqs";
const client = new SQSClient({ region: "ap-southeast-1" });
const params = {
QueueUrl: "https://sqs.ap-southeast-1.amazonaws.com/123456789/my-queue",
MessageBody: JSON.stringify({ order_id: 123, amount: 200000 }),
};
await client.send(new SendMessageCommand(params));
B. Menerima dan Menghapus Pesan
import { ReceiveMessageCommand, DeleteMessageCommand } from "@aws-sdk/client-sqs";
const receive = new ReceiveMessageCommand({
QueueUrl: "https://sqs.ap-southeast-1.amazonaws.com/123456789/my-queue",
MaxNumberOfMessages: 10,
WaitTimeSeconds: 20
});
const result = await client.send(receive);
for (const msg of result.Messages) {
console.log("Processing:", msg.Body);
await client.send(
new DeleteMessageCommand({
QueueUrl: params.QueueUrl,
ReceiptHandle: msg.ReceiptHandle
})
);
}
11. Pricing AWS SQS
Harga SQS cukup murah:
- 1 juta request pertama gratis setiap bulan.
- Setelah itu sekitar $0.40 per 1 juta request.
FIFO Queue sedikit lebih mahal.
12. Best Practice AWS SQS
✔ gunakan DLQ
✔ gunakan long polling (20s)
✔ sesuaikan visibility timeout
✔ hindari payload besar → gunakan S3 pointer
✔ aktifkan enkripsi (KMS)
✔ monitoring dengan CloudWatch Metrics
✔ gunakan auto-scaling berdasarkan panjang queue
13. Kelebihan & Kekurangan AWS SQS
Kelebihan
- Murah
- Aman
- Managed
- Reliable
- Integrasi dengan AWS ekosistem
Kekurangan
- Tidak mendukung broadcast (harus pakai SNS)
- Tidak real-time seperti WebSocket/MQTT
- FIFO throughput lebih rendah
14. Ringkasan
AWS SQS adalah layanan antrian pesan yang aman, scalable, dan mudah digunakan untuk sistem apa saja yang membutuhkan pemrosesan asynchronous. Dengan integrasi ke AWS Lambda, ECS, dan SNS, SQS menjadi tulang punggung di banyak arsitektur microservices modern.
