Which solution will meet these requirements?
Launch two Amazon EC2 instances to host the Kafka server in an active/standby configuration across two Availability Zones. Create a domain name in Amazon Route 53. Create a Route 53 failover policy. Route the sensors to send the data to the domain name.
Migrate the on-premises Kafka server to Amazon Managed Streaming for Apache Kafka (Amazon MSK). Create a Network Load Balancer (NLB) that points to the Amazon MSK broker. Enable NLB health checks. Route the sensors to send the data to the NLB.
Deploy AWS IoT Core, and connect it to an Amazon Kinesis Data Firehose delivery stream. Use an AWS Lambda function to handle data transformation. Route the sensors to send the data to AWS IoT Core.
Deploy AWS IoT Core, and launch an Amazon EC2 instance to host the Kafka server. Configure AWS IoT Core to send the data to the EC2 instance. Route the sensors to send the data to AWS IoT Core.
Explanations:
This solution uses EC2 instances in an active/standby configuration, which does not provide sufficient scalability or high availability for large-scale sensor data. It introduces a single point of failure (the Kafka server) and would not effectively scale with more sensors or prevent data loss during server restoration.
While Amazon MSK provides a managed and scalable Kafka service, routing through a Network Load Balancer (NLB) is unnecessary, as Amazon MSK itself provides an endpoint for clients. The NLB health checks and additional routing complexities are redundant, making this solution less optimal for the use case.
AWS IoT Core offers a highly available and scalable service designed to handle large amounts of sensor data. It can route data to Kinesis Data Firehose for storage in Amazon S3. The use of AWS Lambda for data transformation ensures the solution is serverless and scalable while preventing data loss during failure events.
This solution mixes AWS IoT Core with an EC2 instance running Kafka, which reintroduces the management complexity of running Kafka on EC2. This would not provide the scalability, availability, or fault tolerance needed for handling large-scale sensor data and transforming it in real-time.