What is our primary use case?
The most common use case for Amazon SQS is decoupling an application. Instead of having one monolithic service with a timeout of about a minute, and if there are too many requests at the same time that might fail, the application can be decoupled by deconstructing the monolith into its own microservices. A JSON interface is designed, which has an agreed-upon schema, and in front of each microservice, a queue is installed where messages are sent. It's a common pattern, especially in the development of software solutions that run on an EKS cluster, to use Amazon SQS to enable asynchronous processes.
How has it helped my organization?
Amazon SQS has significantly helped by allowing applications to run asynchronously. It enables services to scale by ensuring requests do not overwhelm servers, which can be particularly useful for tasks like generating long videos using AI. By employing SQS, insights into queue lengths are available, and resources can be scaled appropriately without managing a task database.
What is most valuable?
The most valuable feature of Amazon SQS is its scalability. Particularly when using RabbitMQ as a queue, many services can subscribe and independently pull messages from it, aiding load balancing.
It is also beneficial for ensuring asynchronous operations, such as generating and processing lengthy tasks, without blocking requests.
Another feature, the first-in-first-out queue, ensures order in processing messages, which is crucial for applications like financial transactions.
What needs improvement?
A feature I would like to see in Amazon SQS is the ability to view the content of messages without removing them from the queue.
Enhanced filtering on the messages would be beneficial, as currently one has to pull all messages out, filter the right one by code, and then re-insert the remaining messages.
This solution is not effective with the FIFO queue.
For how long have I used the solution?
I have been working professionally with SQS for at least two and a half years and developing applications for about a year and a half in my spare time.
What do I think about the stability of the solution?
There are no performance or stability issues with Amazon SQS. It is phenomenally stable.
What do I think about the scalability of the solution?
Amazon SQS is highly scalable. It allows services to subscribe to queues and handle message loads independently, ensuring that applications can scale as needed without overburdening the system.
Which solution did I use previously and why did I switch?
I worked with AWS Kafka. Although I set up Kafka, I do not recall the details well and cannot discuss it further.
How was the initial setup?
The initial setup of Amazon SQS is very straightforward, whether you're creating a queue through the AWS CDK, Boto3, the CLI, or using Terraform.
What's my experience with pricing, setup cost, and licensing?
Amazon SQS is very cost-effective. A certain amount of messages per month are free, and only after exceeding this do charges incur, which are based on a per-million message rate. The service itself is quite cheap unless it involves a massive scale.
Which other solutions did I evaluate?
Before choosing SQS, I did not evaluate any other options because if a cloud provides a service, it often fulfills the requirements well. Amazon web services are known for their comprehensive solutions.
What other advice do I have?
I would recommend Amazon SQS to others because it is a cloud-native service with full-time support and extensive documentation. There aren't many issues with it, and updates are generally not disruptive. However, the challenge lies in managing the decoupled nature of the application, which can complicate operations.
I'd rate the solution ten out of ten.
Which deployment model are you using for this solution?
Public Cloud
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Amazon Web Services (AWS)
*Disclosure: My company does not have a business relationship with this vendor other than being a customer.