What service could be used to allow multiple consumers to process the data concurrently and MOST cost-effectively?
Amazon SNS with fanout to an SQS queue for each application
Amazon SNS with fanout to an SQS FIFO (first-in, first-out) queue for each application
Amazon Kinesis Firehose
Amazon Kinesis Data Streams
Explanations:
Amazon SNS with fanout to an SQS queue can distribute messages, but it does not guarantee order or allow for real-time concurrent processing at the scale needed for millions of events. It may also introduce additional latency due to the SQS polling model.
Similar to option A, but using a FIFO queue would enforce ordering of messages, which may not be necessary and could add unnecessary overhead for this use case where concurrent processing is more important than strict ordering.
Amazon Kinesis Firehose is designed for loading data into AWS storage services like S3, Redshift, or Elasticsearch. It is not optimized for enabling real-time concurrent processing of millions of events by multiple consumers.
Amazon Kinesis Data Streams is designed for real-time processing of large streams of data. It allows multiple consumers to process the data concurrently and is highly scalable and cost-effective for scenarios involving millions of events.