How should a solutions architect design the architecture to meet these requirements?
Configure an Amazon Simple Queue Service (Amazon SQS) queue as a destination for the jobs. Implement the compute nodes with Amazon EC2 instances that are managed in an Auto Scaling group. Configure EC2 Auto Scaling to use scheduled scaling.
Configure an Amazon Simple Queue Service (Amazon SQS) queue as a destination for the jobs. Implement the compute nodes with Amazon EC2 instances that are managed in an Auto Scaling group. Configure EC2 Auto Scaling based on the size of the queue.
Implement the primary server and the compute nodes with Amazon EC2 instances that are managed in an Auto Scaling group. Configure AWS CloudTrail as a destination for the jobs. Configure EC2 Auto Scaling based on the load on the primary server.
Implement the primary server and the compute nodes with Amazon EC2 instances that are managed in an Auto Scaling group. Configure Amazon EventBridge (Amazon CloudWatch Events) as a destination for the jobs. Configure EC2 Auto Scaling based on the load on the compute nodes.
Explanations:
While using Amazon SQS for job coordination is a good practice, scheduling scaling based on time may not effectively respond to variable workloads, potentially leading to under or over-provisioning of resources. This approach does not maximize resiliency or scalability based on demand.
This option effectively utilizes Amazon SQS for job coordination and an Auto Scaling group for the compute nodes, allowing for dynamic scaling based on the queue size. This ensures that the application can respond to variable workloads, providing better resiliency and scalability as instances can be added or removed based on demand.
Implementing a primary server introduces a single point of failure, which decreases resiliency. Additionally, scaling based on the load of the primary server may not adequately account for the demands of the compute nodes, leading to potential performance issues. This does not align with modernizing the application for resiliency and scalability.
Similar to option C, using a primary server limits resiliency and scalability. While EventBridge can coordinate events, relying on the load of compute nodes for scaling does not provide a direct correlation to workload demands effectively, as it still ties back to the primary server’s performance, which can create bottlenecks.