Tarsnap and the prepaid billing model
daemonology.net
daemonology.net
You didn't ask for feedback, so feel free to ignore the following :-)
It would be nice to have a demo service, to play with before paying the $5. You could limit it to a trivial amount of storage (like 100 bytes) - the purpose is not to store stuff, but to have a play. An easier on-ramp helps adoption, gives people a chance to kick the tyres.
If your account stays below zero, your backups will be deleted. This is a bit scary for a backup service. I'm sure you haven't actually deleted anything, but it would be reassuring if you gave a schedule, e.g. emails every day for a month (perhaps mimic the warnings of a domain name registrar). The main thing is to reassure people, by communicating what you will do before deleting their stuff.
One warning about "a service that you would use". A multinational corporation has different values from an individual, and they will happily pay more than you can imagine, if you can solve their problems. I guess this doesn't apply to you, because bigger customers would setup their own backup, instead of using your service (as you say). I'm just saying that your own sense of value doesn't always translate to different needs - unless you can imagine yourself as a multinational corp, I guess. :-)
That might happen in the future -- the current architecture of the tarsnap server makes this difficult (I don't have "total storage used by user X" updated in realtime).
If your account stays below zero, your backups will be deleted
Right now what I do is send out an email when an account balance falls below 7 days worth of storage, another email when an account falls below zero, and then I wait a week after that before deleting anything. These timelines might change in the future, which is why I haven't specified anything precise on the website.
...multinational corporation...
You're quite right -- but I didn't start this because I wanted to make life easy for multinational corporations. I started this because I wanted a good backup system, and it seemed to me that while multinational corporations had lots of good options available, there weren't really any good options for people like me.
Always good to see someone scratch thier own itch then sell the solution as they would want it.
How do you manage the float of your users' prepaid balances?
Unfortunately being a Canadian makes it hard to get USD out of paypal without having paypal convert it to CAD at a really horrible exchange rate -- I'm going to get a US bank account soon (a USD bank account at a Canadian bank isn't good enough) to get around this problem, but I haven't made it that far yet. Given how horrible interest rates are right now it's not as if there's a huge amount of money to be earned on the float anyway -- the main reason I want to get the money into a USD bank account is so that I can pay AWS costs in USD instead of having those converted to CAD (at a really horrible exchange rate) so that they can be billed to my CAD credit card.
In essence you have may have to refund "unconsumed" funds and this affects how you do your books.
As for the accounting side of things: My understanding is (at least as far as Canadian accounting goes, which is what matters to me) that it's handled as a liability called "unearned revenue". So while it's certainly something to be aware of for accounting purposes, it's not a big problem.
Do you refund 100% of the initial fee or do you deduce some processing charges ?
I'm thinking of this 7 day full refund law abused in the domain name business. People would get a name, test its "responsiveness" in hits, and ask for a refund of names below a threshold.
What protection do you have against such type of abuse of your refunding policy ? Are the refunding cost "payed" by other clients ?
At the moment I refund 100% of any unspent amount. In light of payment processing costs, I might change this to deduct a small processing fee (say, $0.30 + 3%) in the future; but so far the number of people asking for refunds has been sufficiently small that it isn't really necessary.
I don't have the time to dig up a great explanation of them, but they're not inherently bad. If you can get more money from some people by giving them a bit more, that means more investment in your service and code, which is good for everyone, no?
http://en.wikipedia.org/wiki/Price_discrimination
Yeah, your example definitely wouldn't be good business.
For instance, coupons are a way of getting people to buy something they may not have otherwise bought, with the thinking that those who have time to sit around clipping them out are a group of people with less money than those who simply don't care and go to the store and buy stuff without looking at the price much.
Student and senior discounts are another one that doesn't strike most people as 'unfair'.
but why are you bothering with customers spending <$1/mo? (we avoided pay-as-you-go for this reason)
If you mean "why bother charging them instead of making it free" -- as I explain in the post, I don't want to get into a situation where I might have enough small non-paying users that I end up losing money.
If you mean "why accept them as customers at all" -- well, thinking as a user of my own service, I'd be really irked if I got told that I couldn't use a great service simply because I didn't want to use it enough! But from a purely business perspective: In my experience, small-scale users are some of the most important ones to have, since they tend to be the ones who go around telling everybody they know about tarsnap.
For example, what advantages does tarsnap have over some bash scripts I write in a few hours that give me off-site encrypted backups with the help of GPG and rsync? (That's pretty close to the system I use now). I'm sure there are some, but I just don't see them enumerated tarsnap.com ...
For example, what advantages does tarsnap have over some bash scripts I write in a few hours that give me off-site encrypted backups with the help of GPG and rsync?
It's hard to say without knowing exactly how your scripts work, but I'd guess that one big advantage tarsnap has is that it works with a snapshotted model of backups.
I can imagine that ref. counting is much easier to implement and the drawbacks are unimportant in your domain. However I'd still like to read about the reasons for your decision, since you will have thought about that issue much longer and clearer.
But I guess I should take a deeper look at http://www.daemonology.net/blog/2008-11-10-tarsnap-public-be... before writing anything..
There are some sanity checks built in, but in the extreme case what you're suggesting is impossible. Reference counts are managed on the client side, and the client has the keys necessary to delete blocks from the server; if the client is functioning correctly, it won't get the reference counts wrong, but if the client is malfunctioning then it could go berserk and delete blocks without even looking at the reference counts.
I have taken care of the obvious issues, though -- as long as the OS implements fsync() properly, there's no way that tarsnap or the client system crashing will result in corruption.
I might do that at some point, but right now that would kill one of the key benefits of the prepaid billing model -- right now, I don't need to store credit card numbers.
I guess free alternatives would make that hard to be a competitive business move though?