Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scalable cron architecture on top of AWS

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:

  1. User creates report (DONE)
  2. Webapp saves report to the db and sends report data and timer to the cron microservice through SQS(simple query service). (DONE)
  3. Cron microservice reads incoming SQS messages and sends back SQS message when timer elapsed. (NEED THIS)
  4. 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:

  1. Webapp sends SQS message.
  2. SQS message triggers Lambda function1
  3. Lambda function creates CWE rule
  4. CWE rule triggers Lambda function2
  5. 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.

Links: cron-in-aws-with-lambda-function

like image 966
omurbek Avatar asked Dec 12 '25 07:12

omurbek


1 Answers

Sounds like you can use AWS Lambda to be your ingesting point, have the function trigger from incoming SQS messages, do your processing and then send SQS message back.

https://aws.amazon.com/blogs/aws/aws-lambda-adds-amazon-simple-queue-service-to-supported-event-sources/

like image 200
Banjo Obayomi Avatar answered Dec 14 '25 00:12

Banjo Obayomi