We have web application used by customers and they have option to create reports. Report contains email and scheduled time(Ex: every day, 9 a.m.).
When the scheduled time matches the current time web app does some work and sends result to the email.
I have one requirement where I need to implement scalable cron architecture on top of swf.
My needed architecture looks like below:
- User creates report (DONE)
- Webapp saves report to the db and sends report data and timer to the cron microservice through SQS(simple query service). (DONE)
- Cron microservice reads incoming SQS messages and sends back SQS message when timer elapsed. (NEED THIS)
- Webapp reads SQS message and triggers Data Analyzer and Emailer function to send analyzed data. (DONE)
From I read about SWF service is we can create cron jobs and SWF autoscales. How can I create scalable cron microservice using SWF?
Open to any suggestions...
P.S. Web app is written in nodejs, it will be very good to write microservice in nodejs.
Update 1: After spending some time researching possible solutions, I found https://github.com/capside/CloudCron project. But it relies on cloudwatch event. For many scheduled tasks it may charge a lot IMO.
Update 2: Banjo Obayomi suggested to use Lambda function with SQS and CWE.
Solution 1:
- Webapp sends SQS message.
- SQS message triggers Lambda function1
- Lambda function creates CWE rule
- CWE rule triggers Lambda function2
- Lambda function2 sends SQS message back to webapp.
Limitations: We can only create 100 CWE rules per region. It means webapp can not generate more than 100 reports with scheduled date.

