Thursday, August 19, 2010

Servers and Money

As many of you know, we've had trouble since the start keeping servers running. A lot of trouble. The free App Engine quotas served us well when we had a hundred or two hundred users, but ever since Lifehacker covered the application, the free quotas simply haven't been close to enough. As of this blog post, we've passed the 5,000 users mark. That's a lot of users.

The Chrome extension works by asking the server every 15 seconds if there's a new link. If there is, it opens the link. This approach is called "polling" the server. When 5,000 people are polling the same server every 15 seconds, it eats through quite a bit of CPU. Right now, our server can (and often does) handle 110 hours of CPU time a day.

Unfortunately, that can cost up to $11 a day to keep the server running. I just got a bill for roughly $50 from Google, this last week's server expenses. And that's partially before I upgraded the server quotas to their current marks. We're staring down the barrel of $70 a week bills for this service.

I simply don't have the money to support that. I'm a college student who just returned to campus, and is buying books, working three jobs, and arguing with Financial Aid. As much as I would love to, I can't just eat a $70/week expense.

Many of you, kind, generous souls that you are, donated money to the project. I have been keeping careful track of your donations, and want to assure you that they are all being put towards keeping the server running. I will continue to pay for the server, at the very least until those funds run out on me. Maybe I'll keep it up for a few days after that point.

But my question to you is, what should I do after that? What should I do after the money runs out? Should I simply let the server go down every day whenever it surpasses the free quota? Should I gradually reduce the quota we are currently using, to try and extend the length of time we're operating with a raised quota? Should I just shut down the public server? That would definitely lose users. What should I do? This is as much your app as it is mine.

There is a light at the end of the tunnel. Google will be releasing a Channels API for App Engine, and I have a promise from a Google Engineer that I'll be one of the first to get access to it. That will reduce the load on the server considerably, as it changes the polling model to be more of a push model. But something needs to be done while waiting for that.

I'm sorry. I wish I could just pay the bill every week, but I can't afford to. I also apologise for my response time and lack of updates over the last two weeks. I am, as I said, just getting back on campus, and haven't had the time to devote to this project that I'd like. I promise an update is coming soon, one that should solve a lot of problems people are having with not understanding how to set up the app.

3 comments:

  1. What about a flattr button ?

    ReplyDelete
  2. Is it possible for you to hold open a constant long-running connection to App Engine, rather than constant polling, like with WebSockets or something? I haven't made a Chrome extension before, so I don't know what the restrictions on them are, but that could reduce your request count by orders of magnitude.

    ReplyDelete
  3. Can you post your PayPal account where we can donate to?

    I'm from Israel and we can't buy apps here...

    Thank you for a great service :-)

    ReplyDelete