Amazon Web Services offers the Amazon Simple Notification Service (SNS) which provides pub/sub messaging and push notifications to iOS and Android devices. It is meant to operate in a microservices architecture and which can support event-driven contingencies and support the decoupling of applications.
$0.01
per 1 million
Apache Kafka
Score 7.7 out of 10
N/A
Apache Kafka is an open-source stream processing platform developed by the Apache Software Foundation written in Scala and Java. The Kafka event streaming platform is used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications.
Amazon Simple Notification Service (SNS) is well integrated in AWS and has been there since the early days of public cloud. It is a cost effective and very inexpensive solution to meet the needs of event notifications and custom messaging. Wish to share that there is …
I worked with Adobe campaign 2 years ago and comparatively, SNS is way better and easier to integrate with. There's a lack of latency with SNS and better customer support. Easier to group with subscriptions and easier to work from the command line with the use of the SDK. All …
SNS helps in integrating with other AWS components which are used in development such as Lambda, APIGW, S3 and DynamoDb easily. If used with third party software like PagerDuty, it makes the development and integration more complex. It is used mostly for publishing and …
Amazon Simple Notification Service and PagerDuty have been used by various organizations. Amazon SNS is ideal if you're within an AWS environment. PagerDuty is used when we are working outside of Amazon Web Services. Though PagerDuty is more expensive than Amazon SNS they do …
We have looked at other service providers, including the local service providers as well, but Amazon SNS stood ahead of all in terms of service availability across the globe and cost-effective plans per notification SMS. Moreover, we can also use Amazon SNS along with other AWS …
Common confusion between SNS and SQS. SNS directs information to its subscribers without any effort on the subscribers or individuals' end. SQS gathers the information and then the individual has to almost go find it. They do similar things but in a space where information can …
We have opted ultimately for AWS SNS once configuration was set topics and subscriptions setup. Site 24 and US Monitor are considerations to this product, but incur cost outside of Amazon, so not best for starting up for our needs.
The main reason we chose Amazon SNS is for easy integration with all the workflows in AWS. The other alternatives can be (and really are) best in specific points, but the main strength of SNS is that is one service of AWS, so we don't need to complicate things in our …
Our company prioritizes using AWS offerings unless there is a strong use case for using something within Azure. SQS is a similar service that solves different problems and we are using it in conjunction with SNS.
We use EC2 instances to train ML model against a heavy volume of data. When the model is trained (i.e. loss reduces to a certain level), we push notification to all the stakeholders to notify them the new model is available. To achieve it, SNS is the most simple and cost …
Many products, including PagerDuty, can be used to notify stakeholders when alarms are triggered. SNS is only suitable for non-emergency email alerts, and integration with CloudWatch is its only advantage. If you want to be notified of an issue by email, SNS can be configured …
SNS is much more customizable compared to SES and allows for many more delivery methods. While it is better for email-based notification services, not being able to send notifications via SMS limits your app functionality considerably. Being able to switch message delivery …
As I mentioned previously, I wish we had gone with a different service such as a Mixpanel or OneSignal as they are reputable in the space and are known for their strong support and documentation. AWS SNS was the way to go for us at the time we chose it due to the fact that we …
Apache Kafka is built for scale. From high throughput and real-time data streaming, it has a strong advantage over RabbitMQ with its low latency. This put Apache Kafka at the forefront as the platform of choice for large datasets messaging and ensuring scalability when data …
Apache Kafka can work at a higher scale as compared to SQS. It can work with higher size per message and millions of messages per second. Moreover it can be scaled horizontally by adding more brokers to the cluster. SQS is good enough for simple use cases like making a task …
I used other messaging/queue solutions that are a lot more basic than Confluent Kafka, as well as another solution that is no longer in the market called Xively, which was bought and "buried" by Google. In comparison, these solutions offer way fewer functionalities and respond …
Apache Kafka is open-sourced, scales great has cloud agnostics and performs better than Amazon Kinesis [in my view]. Amazon Kinesis has some limitations and vendor lockin is not something I [like]. With Confluent operators you can easily install it on a kubernetes cluster.
We really needed to get away from using a SQL database to act as a queue for processing records, so a new solution was needed. Kafka is a leading software application initially designed for queuing messages which is essentially what we were looking for. It has a great user …
For us, Kafka really doesn't have a 1:1 alternative. We have used ActiveMQ extensively and we still use it as a lighter option for small messages. The situation is similar with Redis - although it could be used like a Kafka alternative, we do use it just as a per-component …
Apache Kafka is much more scalable and more reliable. Does not depend on memory, works well on rotational disks and that makes it a cheaper to use solution on low hardware requirements. Running multiple consumers on the same topic can also mean processing the same data again …
All stack tech helps our app and system. These technologies allow us to have the data available faster between different regions (due to our particular configuration) and thus the data and processing load of each system is lower. This allows the systems to be used more …
Kafka is not a real messaging broker implementation as RabbitMQ or TIBCO EMS/JMS are. Although it can be used as messaging, we like the idea behind the Kafka (data isn't "passing by," instead it remains centra, so the client can revisit the data if necessary). This also …
Confluent Cloud is still based on Apache Kafka but it has a subscription fee so, from a long term perspective, it is wiser to deploy your own Kafka instance that spans public and private cloud. Amazon Kinesis, Google Cloud Pub/Sub do not do well for a very number of messages …
I would only use RabbitMQ over Kafka when you need to have delay queues or tons of small topics/queues around. I don't know too much about Pulsar - currently evaluating it - but it's supposed to have the same or better throughput while allowing for tons of queues. Stay tuned - I …
Kafka is faster and more scalable, also "free" as opensource (albeit we deploy using a commercial distribution). Infrastructure tends to be cheaper. On the other hand, projects must adapt to Kafka APIs that sometimes change and BAU increases until a major 1.x version comes out …
Users have utilized Apache Kafka primarily as a robust event streaming and messaging system, capable of handling extensive volumes of data with ease. It is employed across various industries for high-throughput applications, such as real-time analytics and monitoring systems, where massive amounts of data are ingested from multiple sources. Kafka’s strength lies in its ability to facilitate real-time data pipelines and streaming applications, with users particularly valuing its performance in environments where durability and low latency are critical.
On the other hand, Amazon Simple Notification Service (SNS) is predominantly adopted for its straightforward notification services within many user environments, particularly in scenarios requiring immediate user alerts or inter-service communication. Users have highlighted its integral role in workflows where notifications, such as SMS or email alerts, need to be disseminated quickly and reliably across different system components or directly to stakeholders. The service is praised for its ease of setup and integration with other AWS services, making it a popular choice for applications needing scalable and efficient communication mechanisms.
Although both Kafka and SNS provide messaging solutions, their typical use cases reflect their distinct architectural benefits and limitations. Kafka is more suited for complex, large-scale streaming tasks that require reliable processing of high volumes of data, whereas SNS is tailored towards simpler, notification-driven scenarios where immediate, broad-reach messaging is needed.
Using SNS for any notification use case where available is the default and defacto solution. It directly integrates with SES to configure both incoming email and email delivery responses.
Additionally, any notifications, such as CloudWatch alarms, are a good use case for SNS topics and allow us to fan out delivery as needed (pagerduty, email, etc)
For brokering messages, Confluent Kafka is well suited since it offers a managed solution ready to use. Scenarios where the solution is not very well suited are for example, where pricing is an issue. The solution costs quite a lot for basic usage (for example: for 3 clusters, pricing is above 100k$ a year).
Apache Kafka is able to handle a large number of I/Os (writes) using 3-4 cheap servers.
It scales very well over large workloads and can handle extreme-scale deployments (eg. Linkedin with 300 billion user events each day).
The same Kafka setup can be used as a messaging bus, storage system or a log aggregator making it easy to maintain as one system feeding multiple applications.
At times you receive access denied errors which are annoying.
Rarely do you receive internal failure errors where you can't access the information. It is rare but it does happen.
You are required to add an MWS Authentication Token every so often. I wish it would pull that information automatically for you so you don't have to go searching for it.
The Kafka Tool is a community-made Java application that looks and feels from the past century.
Logging can be confusing. This certainly shows when we have to do troubleshooting.
Hybrid scenarios - pub/sub, but there are services in and outside a Kubernetes cluster. Then there are a ~3 options, but only 2 (the harder ones) are production-safe.
Kafka has suited our use case very well so far. Going forward we are planning to expand our platform manifold so the load on Kafka and our reliance on Kafka is going to increase only.
It is useful for applications developed using event driven architecture. It helps in tracking and logging the events in a very timely and efficient manner. The dashboards are a little difficult to implement. But overall it is very easy to integrate with other AWS services like Lambda, API GW, S3 and DynamoDB. The permissions to access should be resolved before using it.
Apache Kafka is highly recommended to develop loosely coupled, real-time processing applications. Also, Apache Kafka provides property based configuration. Producer, Consumer and broker contain their own separate property file
The AWS documentation is well maintained and has lots of information which makes it easier for developers to refer to and develop applications in a fast efficient manner. It is well documented with examples which is easy to understand and implement. You can also get help by posting into forums from like-minded developers.
Support for Apache Kafka (if willing to pay) is available from Confluent that includes the same time that created Kafka at Linkedin so they know this software in and out. Moreover, Apache Kafka is well known and best practices documents and deployment scenarios are easily available for download. For example, from eBay, Linkedin, Uber, and NYTimes.
Amazon Simple Notification Service (SNS) is well integrated in AWS and has been there since the early days of public cloud. It is a cost effective and very inexpensive solution to meet the needs of event notifications and custom messaging. Wish to share that there is considerable number of developers who can easily build solutions using AWS SNS. So, training costs are minimal. Other solutions are emerging and we are seeing a great usage especially of Firebase notifications because of its very neat integration with open source cross platform hybrid app frameworks like ionic, xamarin. SNS needs to become better and should have plugin support for the mobile application developers using low code/no code tools too.
Apache Kafka is built for scale. From high throughput and real-time data streaming, it has a strong advantage over RabbitMQ with its low latency. This put Apache Kafka at the forefront as the platform of choice for large datasets messaging and ensuring scalability when data scale up tremendously. RabbitMQ however has its strengths in traditional messaging. Routing and message delivery reliability are the bedrock of RabbitMQ and this is where RabbitMQ excels. In my previous workplace, RabbitMQ was of choice as reliability matters more than scale. In two words. Apache Kafka for scale, RabbitMQ for reliability. And for cloud deployment and large dataset messaging in what I am doing now, Apache Kafka is the default choice.
Cost of alert calls to the different stakeholders across different geographies have gone down since using Amazon SNS.
Amazon SNS has saved a lot of time for the employees that they used to spend to call multiple stakeholders so they can now focus more on productive tasks.
Amazon SNS usage needs prior knowledge of programming.
Positive: bursts of traffic on special holidays are easy to handle because Kafka can absorb and buffer all the messages we need to process long enough to let an understaffed set of back-end services catch up on processing. Hard to put a number to it but we probably save $5k a month having fewer machines running.
Positive: makes decoupling the web and API services from the deeper back-end services easier by providing topics as an interface. This allowed us to split up our teams and have them develop independently of each other, speeding up software development.
Negative: our engineers have made mistakes such as accidentally dropping a few thousand messages due to the CLI being confusing to use, and as a result a customer lost some of their precious data. I'd say that was more our fault than Kafka's though.