How can you implement the order fulfillment process while making sure that the emails are delivered reliably?
Add a business process management application to your Elastic Beanstalk app servers and re-use the ROS database for tracking order status use one of the Elastic Beanstalk instances to send emails to customers.
Use SWF with an Auto Scaling group of activity workers and a decider instance in another Auto Scaling group with min/max=1 Use the decider instance to send emails to customers.
Use SWF with an Auto Scaling group of activity workers and a decider instance in another Auto Scaling group with min/max=1 use SES to send emails to customers.
Use an SQS queue to manage all process tasks Use an Auto Scaling group of EC2 Instances that poll the tasks and execute them. Use SES to send emails to customers.
Explanations:
Adding a business process management app on Elastic Beanstalk could cause performance and scalability issues, as Elastic Beanstalk is not ideal for complex workflows. Additionally, using an Elastic Beanstalk instance to send emails does not guarantee email delivery reliability.
SWF with activity workers and a decider instance is a valid approach for workflow management. However, sending emails from the decider instance is unreliable for high volumes and does not leverage dedicated email delivery services like SES.
SWF with activity workers and a decider instance in Auto Scaling is effective for managing workflow, and SES is a reliable choice for scalable email delivery, ensuring that emails are sent consistently and reliably to customers.
While SQS can manage process tasks, it is less suited to handle complex workflow logic compared to SWF. SQS lacks the native workflow tracking and retry mechanisms required for a process with multiple quality control stages and decision points.