GUIDE

What is Simple Notification Service (SNS)?

Introduction

Amazon Simple Notification Service (SNS) messaging lets you send notifications to various endpoints or distributed systems. In this guide, we will explore the key features of SNS, its architecture, and how it can be integrated into your applications.

What is SNS?

Simple Notification Service (SNS) is a fully managed messaging service provided by Amazon Web Services (AWS) that enables developers to build real-time chat and messaging applications.

SNS allows developers to send messages to many subscribers through communication channels such as email, SMS (text messages), mobile push notifications, and HTTP/HTTPS endpoints.

SNS supports publish-subscribe (Pub/Sub) messaging, where messages are published to topics and then delivered to subscribers who have expressed interest in those topics. This decoupling of publishers and subscribers allows for a highly scalable and flexible messaging architecture, as publishers do not need direct knowledge of the subscribers. In addition, SNS provides filtering capabilities, allowing users subscribing to certain channels to receive only messages that match their specific criteria, further enhancing the efficiency of message delivery.

Using SNS to send notifications

1. Create an SNS topic: Create an SNS topic in the AWS Management Console or using the AWS SDKs. A topic is essentially a communication channel to which you can subscribe endpoints.

2. Set up endpoints: Once you have created a topic, you need to configure the endpoints to which you want to send notifications. Endpoints can be devices, emails, or other functions. For example, to send notifications to mobile devices, you must set up endpoints using platforms like Apple Push Notification Service (APNS) or Firebase Cloud Messaging (FCM).

3. Subscribe endpoints to the topic: After setting up the endpoints, you must subscribe to them. This allows the endpoints to receive notifications sent to the topic.

4. Publish notifications: Once you have subscribed endpoints to the topic, you can start publishing notifications to the topic. Notifications can be sent using the AWS Management Console, AWS SDKs, or the AWS Command Line Interface (CLI). When publishing a notification, you need to specify the topic to which the notification should be sent, the message content, and any additional attributes.

5. Handle notifications: Finally, you need to handle the notifications received by the endpoints. This can be done by implementing the necessary logic in your application to process and display the notifications to the users.

What types of notifications can I send using SNS?

With SNS, you can send notifications with different types of content, including:

1. Text Messages (SMS): SNS allows you to send text messages directly to mobile phones. This feature can be useful for sending important alerts, updates, or notifications to users who may not have access to the internet or a smartphone.

2. Email: SNS provides the ability to send notifications via email. You can send text-based or even HTML-formatted emails with rich content, such as images or links. This feature is particularly useful when you want to send notifications to users who prefer to receive updates via email.

3. Mobile Push Notifications: SNS supports sending push notifications to mobile devices running iOS, Android, and Fire OS. You can deliver real-time updates and engage users directly on their mobile devices by leveraging platform-specific push notification services like Apple Push Notification Service (APNS) and Firebase Cloud Messaging (FCM).

SNS vs. SMS

SNS (Simple Notification Service) and SMS (Short Message Service) are both communication services, but they serve different purposes and have distinct characteristics. Understanding their differences is crucial for developers building real-time chat and messaging applications.

1. Communication Protocol:

SNS is an AWS (Amazon Web Services) service that leverages the publish-subscribe messaging pattern. It allows developers to simultaneously send multiple subscribers messages or notifications through protocols such as HTTP, email, or SMS. In contrast, SMS is a cellular network-based messaging service that enables sending short text messages to mobile devices.

2. Delivery Channels:

SNS supports delivery through methods such as email and mobile push notifications. In contrast, SMS exclusively relies on the cellular network infrastructure for message delivery.

3. Pricing Model:

The pricing model for SNS and SMS also differs significantly. SNS pricing is based on usage, meaning you only pay for the number of notifications sent and the number of mobile push notifications delivered. This allows you to start small and scale as your application grows without worrying about upfront costs or over-provisioning. On the other hand, SMS pricing is typically based on the number of text messages sent, with additional charges for features like multimedia or international messaging.

SQS vs. SNS

When comparing Amazon SNS and Amazon SQS (Simple Queue Service), it's important to note that AWS offers both messaging services. Still, they serve different purposes and have distinct features. Here are the key differences between Amazon SNS and Amazon SQS:

1. Messaging Model:

  • Amazon SNS (Simple Notification Service) follows the publish/subscribe messaging model. Publishers send messages to topics, and subscribers receive those messages.

  • Amazon SQS (Simple Queue Service) follows the message queueing model. Messages are sent to a queue and then retrieved by consumers.

2. Message Delivery:

  • Amazon SNS: It delivers messages to multiple subscribers simultaneously. When a message is published to a topic, it is sent to all subscribers who have expressed interest in it.

  • Amazon SQS: It delivers messages to a single consumer simultaneously. Each message is retrieved and processed by a consumer, and once the message is acknowledged or deleted, it becomes available for another consumer to retrieve.

3. Message Structure and Durability:

  • Amazon SNS: It supports messages in multiple formats, including JSON, XML, and plain text. However, it does not retain messages after delivery. If a subscriber is unavailable at the time of message publication, it will not receive the message.

  • Amazon SQS: It supports messages in any form but retains them in the queue until the consumer explicitly deletes them. This ensures that messages are not lost even if the consumer is not immediately available.

4. Scalability:

  • Amazon SNS: It can handle a high volume of messages and can scale to accommodate large numbers of topics and subscribers.

  • Amazon SQS: It can handle a high volume of messages and can scale to accommodate large numbers of messages in the queue. It can also support multiple queues.

5. Ordering of Messages:

  • Amazon SNS: It does not guarantee the order in which messages are delivered to subscribers. Messages can be delivered out of order or duplicated in certain scenarios.

  • Amazon SQS: It supports ordered message processing. Messages in a queue are processed in the order they are received.

6. Retry Mechanism:

  • Amazon SNS: It does not have built-in retry mechanisms. If a message delivery fails, it is not automatically retried.

  • Amazon SQS: It has built-in retry mechanisms. If a message delivery fails, it can be automatically retried based on the specified retry policy.

7. Message Visibility:

  • Amazon SNS: It does not have a visibility timeout. Once a message is delivered to subscribers, it is immediately removed from the topic.

  • Amazon SQS: It has a visibility timeout. When a consumer retrieves a message, it becomes temporarily invisible to other consumers for the duration of the visibility timeout. This ensures that only one consumer processes the message at a time.

8. Dead Letter Queue:

  • Amazon SNS: It does not have a dead letter queue. If a message fails to be delivered to a subscriber, it is not automatically moved to a separate queue for further analysis.

  • Amazon SQS: It has a dead letter queue feature. If a message repeatedly fails to be processed, it can be automatically moved to a dead letter queue for troubleshooting and analysis.

PubNub vs. SNS

When comparing Amazon SNS and PubNub, there are several differences to consider. Let's explore some of the key distinctions between these two messaging platforms:

1. Infrastructure: Amazon SNS is built on the Amazon Web Services (AWS) infrastructure, known for its scalability and reliability. PubNub, on the other hand, has its global data stream network designed to provide real-time messaging at scale.

2. Scalability: Amazon SNS and PubNub offer scalability but have different approaches. Amazon SNS allows you to scale your infrastructure by increasing the number of topics and subscriptions. PubNub handles the scaling for you with built-in global data centers and load balancing.

3. Integration: PubNub and Amazon SNS seamlessly integrate with other third-party services, allowing you to extend the platform's functionality.

4. Message Ordering: If message ordering is crucial for your application, Amazon SNS FIFO topics ensure strict message ordering. PubNub also supports ordered message delivery but uses a different mechanism called "sequence numbers" to maintain order.

5. Security: Both Amazon SNS and PubNub prioritize security. Amazon SNS offers encryption in transit and at rest, access control policies, and auditing capabilities. PubNub provides end-to-end encryption, access management, and data protection features to ensure the security of your messages.

Conclusion

Implementing a scalable and secure messaging infrastructure is crucial for developers building real-time chat and messaging applications. By following the best practices mentioned in this post, you can make the right decision for your application and ensure reliable message delivery, proper and consistent error handling, and maintain the security of your infrastructure.

Due to PubNub's 15 points of presence worldwide, supporting 800 million monthly active users with 99.999% reliability, you’ll never have to worry about outages, concurrency limits, or any latency issues caused by traffic spikes. It’s perfect for any application that requires enterprise-level security when delivering real-time data.

Check out our GitHub, Developer docs, and sign up for a free trial and get up to 200 MAUs or 1M total transactions per month included.