I should have added, "for a side-project, and on the cheap" :)
Once you've isolated the "must be on the server" stuff, put an intelligent rate limit on it, add auto-scaling with upper limits, and prepare a page to be shown when the server goes down.
For high, sustained load, a running server is always cheaper, the cost is predictable, and the failure mode is usually "serving requests much more slowly".