thinking about that time i was in a meeting with amazon engineers, and my co-workers asked "what's serverless"
i said "per-request, not per-instance billing" and there was an awkward silence like all the hype had been let out of the room
i said "per-request, not per-instance billing" and there was an awkward silence like all the hype had been let out of the room
anyway, today i saw a "background task queue" post
https://dropbox.tech/infrastructure/asynchronous-task-scheduling-at-dropbox
the summary?
- used a database for task lifecycle state & locking
- used a message broker for event distribution
- used a message pump to read db & emit events
but using lambda/sqs so paying per task
https://dropbox.tech/infrastructure/asynchronous-task-scheduling-at-dropbox
the summary?
- used a database for task lifecycle state & locking
- used a message broker for event distribution
- used a message pump to read db & emit events
but using lambda/sqs so paying per task
aside: there's some irony in using per-request billing for a batch processing service, as you'd hope that batching things up together would make a better case for per-instance billing
it's worth comparing to how segment did a very similar thing
https://segment.com/blog/introducing-centrifuge/
again using databases to manage the lifecycle of tasks, but here the workers manage their own event-queues internally, and work is assigned to a worker upon creation, rather than when ready
https://segment.com/blog/introducing-centrifuge/
again using databases to manage the lifecycle of tasks, but here the workers manage their own event-queues internally, and work is assigned to a worker upon creation, rather than when ready
once again, the secret to building a large-scale batch processing system is to consider parallelism & recovery from the outset—rather than a pipeline
something i've covered several times over https://programmingisterrible.com/post/162346490883/how-do-you-cut-a-monolith-in-half
something i've covered several times over https://programmingisterrible.com/post/162346490883/how-do-you-cut-a-monolith-in-half
seriously, i have gone through "don't use a message broker to manage the lifecycle state of background tasks" several times over https://programmingisterrible.com/post/188942142748/scaling-in-the-presence-of-errorsdont-ignore