Ana içeriğe atla
AWS
Veri Mühendisliği

SQS ve SNS: AWS Mesajlaşma Hizmetlerini Anlama

Amazon SQS ve SNS arasındaki farkları öğrenin ve ölçeklenebilir bulut mimarileri kurarken her bir hizmeti ne zaman kullanmanız gerektiğini keşfedin.
Aashish Nair's photo
Aashish Nair
Güncel · 15 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Ücretsiz Hesabınızı Oluşturun

Alıştırma and program your progress.

Google Ile Devam Edin
Devam ederek Kullanım Şartlarımızı, Gizlilik Politikamızı ve verilerinizin ABD’de saklandığını kabul etmiş olursunuz.

AWS’i ustalıkla kullanmak zor olabilir; özellikle de iki temel hizmetini anlamak söz konusu olduğunda: Amazon Simple Queue Service (SQS) ve Amazon Simple Notification Service (SNS). 

Her iki hizmet de bulut çözümlerinin ayrılmaz parçaları olsa da sıkça yanlış anlaşılır ve yanlış kullanılır.

Bu yazıda SQS ve SNS’in rollerini ele alacak, benzerlik ve farklarını ortaya koyacak ve bu hizmetlerin birlikte kullanılarak yüksek performanslı bulut mimarileri nasıl kurulabileceğini göstereceğim.

SQS vs SNS: Kısa Cevap

Acele ediyorsanız, işte temel farklar:

  • SQS, hizmetleri ayrıştırmak için kullanılan, A2A iletişimini ve mesaj saklamayı destekleyen, yoklama (poll) tabanlı bir mesaj kuyruğu hizmetidir.
  • SNS, gerçek zamanlı mesajlaşma için A2A ve A2P iletişimini destekleyen, itme (push) tabanlı bir bildirim hizmetidir.

Kullanım örnekleri, mimari diyagramlar ve en iyi uygulamalar dahil daha ayrıntılı açıklama için okumaya devam edin!

Amazon SQS nedir?

Amazon Simple Queue Service (SQS), yazılım bileşenleri arasındaki iletişimi kolaylaştıran, tamamen yönetilen bir mesaj kuyruklama hizmetidir. SQS, mikro hizmetleri ayrıştırmak için kuyruklar kullanır ve uygulamalarınızda eşzamansız iş akışları oluşturmanızı sağlar. 

SQS üç temel bileşenden oluşur:

  • Üreticiler (Producers): Kuyruğa mesaj gönderen uygulamalardır.
  • Kuyruklar (Queues): Mesajları işlenene kadar depolar. Mesajların saklama süresi 60 saniyeden 14 güne kadar ayarlanabilir. 
  • Tüketiciler (Consumers): Kuyruktan mesajları alan hizmetlerdir. 

Amazon SQS mimari diyagramı

Ana bileşenleri içeren Amazon SQS mimari diyagramı. Görsel: Yazar.

SQS iki tür mesaj kuyruğu sunar:

  • Standart kuyruklar sınırsız iş hacmi, en az bir kez teslimat (yani bir mesajın mutlaka teslim edilmesi) ve çaba gösteren sıralama (best-effort ordering) sunar. 
  • FIFO kuyruklar yüksek iş hacmi, tam olarak bir kez işleme ve ilk giren ilk çıkar (first-in-first-out) teslimat sunar (yani mesajlar gönderildikleri sırayla alınır). 

Bu kuyruklar hakkında daha fazla bilgi için lütfen AWS dokümantasyonunu ziyaret edin.

Amazon SQS, tüm mesajlar işlenene kadar güvenle saklamak üzere mesaj kalıcılığıyla tasarlanmıştır; böylece mesaj kaybı yaşanmaz. SQS, belirli bir mesajı işlemek için önce birkaç kez yeniden deneme yapar. Tüm denemeler tükendikten sonra bir mesaj işlenemezse, işlenemeyen mesajları incelenip yeniden işlenebilecekleri bir dead-letter queue içinde saklayabilirsiniz. 

Uygulamaları ayrıştırarak Amazon SQS bir dizi fayda sağlar. Yüksek mesaj iş hacmini karşılayarak yüksek trafik yüklerinde dahi yüksek performans sunar. Ayrıca bağımsız ölçekleme imkânı sağlayarak her hizmetin kendi ihtiyacına göre yeterli kaynağa ulaşmasını garanti eder. Mesajları şifreleyip birden fazla sunucuda depolayarak güvenliği ve dayanıklılığı da artırır.

Bu kuyruklama sistemi hakkında daha fazla bilgi edinmek için kapsamlı SQS eğitimimize göz atabilirsiniz.

Amazon SNS nedir?

Amazon Simple Notification Service (SNS), uygulamadan uygulamaya (A2A) ve uygulamadan kişiye (A2P) iletişimi destekleyen, tamamen yönetilen bir mesajlaşma hizmetidir. Gerçek zamanlı bildirimler için tasarlanmıştır ve mesajları uygulamalara ve son kullanıcılara ölçeklenebilir ve verimli bir şekilde iletir. 

SQS’e benzer şekilde Amazon SNS de, kullanıcıların işlenemeyen mesajları saklamak için dead-letter queue oluşturmalarına izin vererek mesaj kalıcılığını destekler. 

Amazon SNS, yayınla/abone ol (pub/sub) mesajlaşma modelini kullanır ve 3 bölümden oluşur:

  • Yayıncı (Publisher): Bir yayıncı, bir SNS başlığına (topic) mesaj oluşturan ve gönderen sistemdir.
  • Konu (Topic): Birden çok uç noktaya mesaj iletimini sağlayan bir erişim noktasıdır.
  • Abone (Subscriber): Abone ya da tüketici, konudan mesaj alan uç noktadır.

Yayınla-abone ol sistem mimarisi diyagramı

SNS mesajlaşma modeli mimari diyagramı. Görsel kaynağı: AWS

SNS yüksek performanslıdır ve aynı anda birden çok aboneye mesaj gönderebilir. A2A iletişimi için SNS, AWS Lambda, Amazon Kinesis Firehose ve hatta Amazon SQS’ye mesaj iletebilir. A2P iletişimi için ise SNS, kullanıcılara SMS, e-posta veya anlık bildirimler yoluyla doğrudan mesaj gönderebilir. 

AWS’i ustalaşarak birçok hizmetini entegre edip en uygun çözümleri üretebilmek isterseniz, AWS Cloud Technology and Services kursunu düşünebilirsiniz. 

Uyarı sistemleri, fan-out mimarileri ve gerçek zamanlı bildirimler gibi özellikler, Amazon SNS’in yüksek sağlamlık ve güvenilirliğine katkıda bulunur. Yüksek mesaj iş hacmi ve A2A ile A2P iletişimini destekleme kapasitesi nedeniyle SNS, olay güdümlü mimarilerin sıklıkla ayrılmaz bir parçasıdır.

SQS ve SNS Arasındaki Temel Farklar

SQS ile SNS arasında seçim yapmak, bu mesajlaşma hizmetleri arasındaki farkları sağlam şekilde anlamayı gerektirir. Bu bölüm, ikisini ayırt eden başlıca ölçütleri özetler. 

İtme (push) vs. yoklama (poll) tabanlı

Amazon SQS, tüketicilerin yeni mesajları kontrol etmek için kuyruğu periyodik olarak yokladığı bir sistem kullanır.

Amazon SNS ise, bir konuya yayınlanır yayınlanmaz mesajları abonelere otomatik olarak ileten itme tabanlı bir sistemdir.

Alıcı türleri

Amazon SQS yalnızca A2A iletişimini destekler; AWS EC2, AWS Lambda, AWS RDS ve AWS Redshift gibi diğer AWS hizmetlerine mesaj gönderilmesini sağlar. 

Amazon SNS, A2A ve A2P iletişimini destekler; AWS hizmetlerine (örn. AWS S3, AWS EC2) ve kullanıcı kişi kanallarına (örn. SMS ve e-posta) abone olarak mesaj gönderir.

Mesaj saklama

Amazon SQS, mesajları tüketicilerin işlemeleri için 14 güne kadar saklayabilir. Öte yandan Amazon SNS mesajları saklamaz; mesajlar yayınlanır yayınlanmaz abonelere iletilir.

Mesaj teslim modeli

Amazon SQS, her mesajın yalnızca bir tüketici tarafından işlendiği bire bir (one-to-one) modeli kullanır. Birden çok tüketici aynı anda mesajları yoklasa bile belirli bir mesajı yalnızca bir tüketici alır. İlgili tüketici bir mesajı işlerken SQS, söz konusu mesajı diğer tüketicilere görünmez kılmak için visibility timeout özelliğini kullanır. 

Amazon SNS, aynı konudaki aynı mesajın eşzamanlı olarak tüm abonelere gönderildiği bir fan-out desenini destekler. Bu aboneler aldıkları mesajı birbirinden bağımsız olarak işler.

Toplu işleme (Batching)

Amazon SQS, mesajların gruplar halinde tüketicilere gönderilmesini ifade eden toplu işlemeyi destekler. Toplu iş boyutu AWS’de yapılandırılabilir. 

Amazon SNS toplu işlemeyi desteklemez; yalnızca bir seferde bir mesajın işlenmesine izin verir. 

Aşağıdaki tablo bu temel farkları özetler:

Kriter

Amazon SQS

Amazon SNS

İtme ve yoklama tabanlı

Yoklama tabanlı: Tüketiciler yeni mesajlar için kuyruğu yoklar

İtme tabanlı: Mesajları abonelere otomatik olarak iletir 

Alıcı türleri

A2A iletişimini destekler

A2A ve A2P iletişimini destekler

Mesaj saklama

Mesajları 14 güne kadar saklar

Mesajları saklamaz

Mesaj teslim modeli

Bire bir mesajlaşmayı destekler

Fan-out (bire-çok) mesajlaşmayı destekler

Toplu işleme

Mesajların toplu işlenmesini destekler

Mesajların toplu işlenmesini desteklemez

SQS Ne Zaman Kullanılır

Mesaj iletim sisteminin aşağıdakileri gerektirdiği bir bulut mimarisinde SQS tercih edilir:

  • Yoklama sistemi - tüketiciler mesajları ne zaman yoklayacaklarını seçebilir.
  • Eşzamansız işleme - hizmetler mesajları bağımsız olarak işleyebilir.
  • Mesaj saklama - mesajlar 14 güne kadar saklanabilir.
  • Garantili mesaj teslimi - kuyruktaki hiçbir mesaj kaybolmaz.
  • Toplu işleme - hizmetler mesajları gruplar halinde işler.

Şu gerçek yaşam örneğini düşünün: Bir e-ticaret platformu, müşterilerin siparişlerini işlemek istiyor; bu da siparişle ilgili verilerin bir RDS veritabanında saklanmasını gerektiriyor. 

Amazon SQS kullanarak veriyi işleyen bir sistemin mimari diyagramı

Amazon SQS kullanarak veriyi işleyen bir sistemin mimari diyagramı—Görsel: Yazar.

Bu iş akışında, müşteriler siparişleri verir ve bu siparişler SQS kuyruğuna girer. Lambda fonksiyonu (yani tüketici) kuyruğu yoklar, mesajları alır ve verileri RDS veritabanına yazar.

Bu kullanım senaryosunda SQS kullanmanın çeşitli faydaları vardır. Süreç ayrıştırıldığı için veritabanı çalışmıyor olsa bile müşteriler sipariş verebilir. SQS en az bir kez teslim sunduğundan tüm siparişler mesaj kaybı riski olmadan işlenecektir. Son olarak SQS, mesajların gruplar halinde işlenmesine olanak tanıyan toplu işlemeyi destekler; bu da verimliliği artırır.

Amazon SNS burada uygun olmaz; çünkü mesajları saklamaz ve veritabanının durumundan bağımsız olarak mesajları hemen lambda fonksiyonuna iletir. Dolayısıyla veritabanı kullanılamaz hale gelirse mesajlar kaybolabilir. Ayrıca SNS toplu işlemeyi desteklemediğinden mesajları tek tek işler; bu da daha az optimal bir çözümdür. 

SNS Ne Zaman Kullanılır

Mesaj iletim sisteminin aşağıdakileri gerektirdiği bir bulut mimarisinde SNS tercih edilir:

  • Gerçek zamanlı bildirimler - mesajlar düşük gecikmeyle abonelere anında iletilir.
  • Fan-out dağıtımı - birden çok abone aynı mesajı eşzamanlı alabilir.
  • Çoklu bildirim aboneleri - mesajlar uygulamalara (örn. AWS Lambda) ve son kullanıcılara (örn. e-posta) gönderilebilir.

Bir geliştiricinin EC2 örneğinin CPU kullanımını izlediği bir senaryoyu düşünün. Kullanımın düşük kalmasını sağlamak için CloudWatch üzerindeki CPU kullanım metriğini izlemek ve belirli bir eşiği aştığında bildirim almak istiyor.

Amazon SNS, gerçek zamanlı bildirimler iletip hem A2A hem A2P süreçlerini desteklediği için geliştiricinin çözüm oluşturmasına büyük katkı sağlar. Fan-out desenini kullanarak SNS, sorunu hafifletebilecek lambda fonksiyonlarına ve tetiklenen alarm hakkında geliştiriciyi bilgilendirmek için e-posta yoluyla hemen bildirim gönderebilir. 

İzleme için Amazon SNS kullanan bir sistemin mimari diyagramı

İzleme için Amazon SNS kullanan bir sistemin mimari diyagramı—Görsel: Yazar. 

Amazon SQS, mesaj saklama özelliği nedeniyle bu iş için daha az etkilidir. Geliştiriciler eşik aşımlarına yanıt vermek istiyorsa, kuyruklarda saklanan mesajlarla mümkün olmayacak gerçek zamanlı uyarılar almaları gerekir. Ayrıca SQS bir yoklama sistemi kullandığından, mesajlara yalnızca tüketiciler yoklama yaptığında erişilir; bu da gecikmeyi artırır. 

SQS ve SNS’i Birlikte Kullanma: İki Dünyanın En İyisi

Amazon SQS ve Amazon SNS farklı özellik ve niteliklere sahiptir; ancak AWS kullanıcıları bu iki hizmeti birleştirerek verimli, ölçeklenebilir ve hataya dayanıklı bir mesajlaşma sistemi kurarak her ikisinden de en iyi şekilde yararlanabilir. 

İki hizmeti entegre etmek kolaydır; zira SQS kuyrukları, SNS konularına abone olabilir. Böylece SNS, gerçek zamanlı bildirimleri SQS kuyruklarına gönderebilir; ardından SQS tüm süreçleri ayrıştırırken mesaj teslimini garanti eder. 

Şu örneği düşünün: Bir AWS geliştiricisi, son kullanıcıların gönderdiği belgelerden içerik çıkaran bir belge gönderim sistemi oluşturuyor. Bu sistem, gönderilen her belge için iki görevi yerine getirmelidir:

  1. Belgeyi bir metin işleme uygulamasıyla işlemek.
  2. Son kullanıcıya bir onay e-postası göndermek.

Geliştirici, verimli bir çözüm oluşturmak için SQS ve SNS’i birleştirebilir:

SNS’in SQS ile birlikte kullanıldığı bir sistemin mimari diyagramı

SNS’in SQS ile birlikte kullanıldığı bir sistemin mimari diyagramı—Görsel: Yazar.

Bu iş akışında, bir kullanıcı belge gönderdiğinde SNS konusuna bir mesaj gönderilir; bu mesaj hemen lambda fonksiyonuna ve SQS kuyruğuna iletilir. Lambda fonksiyonu onay e-postasını göndermekle ilgilenirken, SQS kuyruğu mesajları ele alır ve metin işleme uygulamasını barındıran EC2 örneği bu mesajları yoklar. 

Sonuç

Amazon SQS ve SNS, AWS ekosisteminin temel hizmetleridir ve her biri farklı avantajlar sunar. SNS gerçek zamanlı bildirimler sağlarken, SQS güvenilir mesaj işleme sunar. 

Belirli bir soruna yönelik ideal mesajlaşma çözümü SNS’i, SQS’i veya her ikisini birden içerebilir. Her iki hizmetin inceliklerini anlayarak AWS geliştiricileri, benzersiz iş ihtiyaçlarına hitap eden; verimliliği, ölçeklenebilirliği ve dayanıklılığı garanti eden bir mesajlaşma çözümü oluşturabilir.

AWS bilginizi bir üst seviyeye taşımak isterseniz şu iki ileri seviye kursu düşünebilirsiniz:

Ya da beceri yolumuzla AWS Cloud Practitioner sertifikasına hazırlanabilirsiniz:

SSS

Amazon SQS ve SNS’i diğer AWS hizmetleriyle entegre edebilir miyim?

Evet, hem SQS hem de SNS çeşitli AWS hizmetleriyle sorunsuz entegre olur. Örneğin, SQS veya SNS mesajlarıyla AWS Lambda fonksiyonlarını tetikleyebilir, yeni dosyalar yüklendiğinde Amazon S3’e bildirim gönderebilir veya SQS ve SNS performansınızı izlemek için Amazon CloudWatch’u kullanabilirsiniz.

SQS ve SNS ile mesaj tesliminin güvenilirliğini nasıl sağlarım?

SQS ile, birden fazla denemeden sonra işlenemeyen mesajları yakalamak için dead-letter queue’ları (DLQ) kullanabilir, böylece veri kaybını önleyebilirsiniz. SNS için ise, mesaj teslimi başarısız olduğunda yeniden deneme veya geri dönüş (fallback) mekanizmaları yapılandırabilir; örneğin bir SNS konusuna SQS’i yedek abone olarak kullanabilirsiniz.

SQS ve SNS’i tek bir mimaride birleştirebilir miyim?

Evet, SQS ve SNS tek bir mimaride birleştirilebilir. Örneğin, SNS gerçek zamanlı bildirimleri SQS kuyrukları dahil birden fazla tüketiciye iletebilir. Bu sayede gerçek zamanlı bildirimlerin (SNS) ve güvenilir, gecikmeli işlemenin (SQS) avantajlarından yararlanabilirsiniz.

SQS ve SNS’in fiyatlandırma modelleri nelerdir?

Hem SQS hem de SNS, kullandıkça öde (pay-per-use) fiyatlandırma modeli uygular. SQS, istek sayısı, veri aktarımı ve uzun yoklama gibi ek özelliklere göre ücretlendirir. SNS’de ise ücretler yayınlanan mesaj sayısına ve teslim yöntemine (örn. e-posta, SMS veya HTTP uç noktaları) göre belirlenir. Özellikle yüksek frekanslı uygulamalarda maliyetleri kontrol etmek için kullanımınızı izlemek önemlidir.

SQS ve SNS kullanırken performansı nasıl optimize edebilirim?

Performansı optimize etmek için SQS ile toplu işlemeyi kullanarak bir seferde birden fazla mesajı gönderip işleyebilir; böylece API isteklerini ve maliyetleri azaltabilirsiniz. SNS ile ise abonelerinizin yüksek iş hacmini kaldırabildiğinden emin olmak için, işleme servisleriniz (Lambda veya EC2 gibi) için otomatik ölçeklendirme kurarak trafikteki ani artışları verimli şekilde yönetebilirsiniz.


Aashish Nair's photo
Author
Aashish Nair
LinkedIn

Gelişmekte olan bir veri bilimci olarak, ham veriyi eyleme dönüştürülebilir stratejilere çevirmede başarılıyım. Veri analizinde etkili çözümler üretmek ve büyük miktarda veriyi alan ve işleyen sağlam ETL hatları tasarlamak için Python, SQL ve makine öğrenmesi tekniklerinden yararlanma konusunda uzmanım.

Konular
AWS
Veri Mühendisliği

Bu kurslarla AWS hakkında daha fazla bilgi edinin!

Kurs

AWS Kavramları

2 sa
53.5K
Amazon Web Services (AWS) dünyasını keşfedin ve neden bulut bilişimin öncüsü olduğunu anlayın.
Ayrıntıları GörüntüleKursa Başla

Ücretsiz Hesabınızı Oluşturun

Alıştırma and program your progress.

Google Ile Devam Edin
Devam ederek Kullanım Şartlarımızı, Gizlilik Politikamızı ve verilerinizin ABD’de saklandığını kabul etmiş olursunuz.
Devamını Gör
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını Gör