It's a queue!
January 26, 2019

It's a queue!

Gavin Hackeling | TrustRadius Reviewer
Score 9 out of 10
Vetted Review
Verified User

Overall Satisfaction with Amazon Simple Queue Service (SQS)

We use Amazon SQS to decouple and scale our micro-services. Some of our services are responsible for ingesting objects from external APIs. We then need to transform and store these objects. We use SQS to decouple the services responsible for ingestion and transformation. This allows us to easily scale either service tier; it also allows our developers to focus on just one responsibility. SQS is used only by the engineering team. It helps to improve developer velocity; our services have only one responsibility and are easy to reason about and test. It also helps us to inexpensively scale only some tiers in our system.
  • SQS is reliable and fully managed. Our engineers do not have to worry about running RabbitMQ.
  • SQS is very inexpensive.
  • SQS allows data to be encrypted in transit, which may be required for compliance in some products.
  • FIFO queues provide exactly-once processing.
  • Lambda integration is lacking. It would be great if enqueueing a message could trigger a Lambda function. Today, Lambda functions can be invoked periodically by CloudWatch and poll SQS for messages.
  • FIFO queue throughput is limited to ~300 messages/second. This was not a problem for us, but it may be for larger organizations.
  • Delay queues can be great for implementing notification features, but the maximum delay period is too short.
  • A positive impact is that our engineers can focus on features instead of configuring and running a queue.
  • We've never worried about the reliability of SQS.
  • Testing systems end-to-end can be more difficult, particularly if you don't want to use a live SQS queue.
The most comparable products are RabbitMQ, and perhaps ActiveMQ. Until recently, AWS did not offer a managed ActiveMQ product. Running RabbitMQ will never be to my team's competitive advantage; we wanted a managed service.
Amazon SQS is great for decoupling micro-services. Decoupling services can result in smaller services that are easier to understand and independently deployable, improving developer velocity. It is also easy to scale tiers independently. SQS is especially great if message order and exactly-once processing are not essential. If you have these requirements, you can still try FIFO queues, but their throughput is limited.