4
votes

I'm building my app backend as a node/express API to be deployed on Heroku.

I am new to implementing "cron jobs", and I found the npm library named node-cron which seems very straightforward.

Is it as simple as just setting up the cron job in my app runtime code? I know it will not run when the heroku free dyno goes into "sleep mode" (based on other StackOverflow answers), but I plan to use paid dynos in production so that's not an issue.

My main concern is when I "scale up" on heroku and run multiple dynos, will this cause weird interactions? Will every "instance" of my app on a separate dyno try to run its own crons independantly, causing duplication of work?

I know heroku provides a free "scheduler" addon for this to spin up dynos to do this, but if the above won't happen, the scheduler heroku addon seems to be unneeded overhead in my case.

Notes: my cron will be very simple, just doing some database clean up on old records, I didn't want to do it in the database layer to keep things simpler as it seems not super easy to schedule jobs in postgres.

Any insights will be much appreciated. Thank you.

1

1 Answers

2
votes

As you mentioned above all things are correct as per my past experience with the same situation.

  1. npm package node-cron only works fine if you have only one dyno otherwise it will trigger based on a number of dynos.
  2. If you want to execute the cron perfectly without taking any risk (doesn't matter how much dyno's you have) I suggest you to use heroku add-on.