Queues

 Q what is the difference between SNS & SQS & Event Bridge?

  • Abbreviation
    • SNS stands for simple notification service.
    • SQS stands for simple Queue service.
  • Usage
    • SNS uses a Publisher Subscriber system, we own a topic and we publish to that topic and subscribers get notified of events that are delivered to that topic.
      • One to many fan out.
      • High throughput.
      • Many subscribers.
    • SQS is a queuing service for message processing. SQS can be a subscriber to SNS. When somebody publishes a message to SNS our SQS will get a message that may be processed at a later time.
      • Allows application owner to publish messages to a queue and be decouple application from one another.
      • One of the oldest service from AWS.
      • SQS has a synchronous communication.
      • Temporary message holding pool.
      • Ordered message processing.
    • Event Bridge is an improved version of SNS. Event Bridge provides third-party integration, such as Shopify, Pager duty, data docs, etc.
      • One too many.
      • AWS, SQS, third party application integration.
  • Components
    • SQS has following components.
      • Queues
        • Queues can be created from console, CLI or infrastructure code.
        • We publish messages to queue.
        • They are temporary holding pools.
        • A queue can be a FIFO queue or regular queue.
        • By default SQS does not respect order of messages. We need to create FIFO queue for it.
      • Messages
        • Messages are a raw data, Json blob.
        • We can subscribe messages one by one or in groups.
        • As a message is subscribed by consumer. It is hidden from other consumers.
      • Polling
        • Polling is a methodology via which application which wants to receive the message interacts with queue and processes them.
    • SNS has following components.
      • Topics
        • Topics are not holding pools for messages.
        • As soon as the message is published, in a topic, the topic delivers an identical copy of messages to all the subscribers.
        • There may be a failure scenario if one of the service is down this can be handled by adding a SQS between SNS, and receiving service.
        • once a message is delivered, it disappears from the topic.
      • Messages
        • Messages are same as in SQS I.e json blobs.
      • Publish/Subscribe(PubSub)
        • owners publishes data into topic and receiver who has subscribed to topic receive data.
    • Event bridge has following components.
      • Message bus
        • Message bus is same as topic, we publish the event bus.
        • Message filtering allows us to filter messages. For example, we may have a target that receives delivered messages.
      • Events 
        • Events can be pending, shipped , or delivered events.
        • Can be constructed by applications, or emitted by AWS services like EC2.
        • We can integrate events with third-party providers like SAP, etc.
      • Rules
        • Rules, match the coming events and match them to the corresponding targets.
        • For a particular rule we can have maximum of five targets.
      • Targets
        • Targets are destination, endpoints what will be invoked on an event, etc.
  • Framework
    • Publishing a message to a topic can deliver to many subscribers. It uses fanout framework. The topic may be delivered to different types of services like SQS, lambda, email.
    • In SQS The system must poll the Queue to discover new events. So whenever an event is delivered to Queue there is no notification. There should be a mechanism of pulling the queue for new events, process the events and deleting the events. This can be done by a separate thread.
  • Consumers
    • Messages in an SQS queue are typically processed by a single consumer or a single service with a narrow responsibility and different services if they care about same events they can have their own separate queues.
    • Messages in SNS are broadcasted to all those consumers Who have subscribed to topic.
  • When to use
    • If other systems care about event we should use SNS.
    • If our system gives about event we should use SQS.
  • Use case
    • When we buy something online our transaction processing service may send event to SNS.
    • The SNS invokes lambda which sends an email back to the customer.
    • The SNS may store order success info in Dynamo DB.
    • We may publish same event in analytics queue which is SQS.
      • Then our SQS will be polled by a service.
    • So if a message is sent from SNS to SQS it will be there guaranteed and we will not loose it.
  • Example
    • SQS
      • Auto service creates/updates, orders, and publishes them to Queue.
      • Analytics service may poll the queue at regular intervals to subscribe messages and check the status of the order.
    • SNS
      • Order service publishes message to the topic in queue.
      • All the services who have subscribed to topic in queue, get the message, such as accounting service, analytics service, order dashboard service, etc.

Comments

Popular posts from this blog

Effect : Deny vs No Action

AWS Summaries

Infrastructure Setup using Cloud Formation Templates