As I already reported, Flempo is using Amazon S3 to store task and document attachments. Yesterday I also set up regular database backups using s3sync. That means the database is backed up twice a day using an encrypted channel to a highly reliable storage.
Make the attachments be stored on S3 was very easy. All I needed to do was to change my usage of the file_column plugin to the (newer) attachment_fu one. That took me a couple of hours, but then all you need to do is change the :storage option from :file_system to :s3. So basically if you use attachment_fu already, it would take you 30 minutes to make the switch to S3, 10 of which you would need to sign up for the service..
Attachment_fu does not allow you to easily create attachments from a file you already have opened. But thanks to Craig Ambrose who wrote an article on migrating from file_column to attachment_fu, this wasn’t a big hassle either. Thanks to his code I was able to migrate the old attachments as well as make e-mails with attachments working. (If you send an e-mail with attachments to Flempo, it will not only create/comment a task, but also automatically add any attachments you sent with the e-mail.)
You can find many tutorials on how to use s3sync to do the backups as well. All that is very easy. Too easy actually. Now note that S3 is cheap. Very cheap. This all got me thinking again about competitive advantage and the difficulties to be in the web applications business. Recently I’ve read an article by Joel Spolsky called When there’s muck, there’s brass where he says:
“The trouble is, the market pays for solutions to gnarly problems, not solutions to easy problems.”
Now let’s see what the situation with web applications is: hardware (including highly reliable storage) is cheap, infrastructure software is free and so powerful that you can do very complicated things amazingly quickly. You can outsource so much you need just a few people to serve millions of customers.
That’s great you say. And it is. The “problem” is that it is very easy for anyone. These tools are available to anyone with an Internet connection. I need to ask myself the obvious question: If it’s so easy for anyone to make a webapp, why would people pay for mine? And how long does it take before the competition (meaning one guy anywhere in the world) develops something better than I have?
Somewhere else I read you need to increase the gap between you and your competition. You need to make steps that are hard for your competition, but bring value to the customers.
The thing is the technical stuff is not of one the big steps anymore. It used to be hard to distribute your software. Not anymore. It used to be hard to implement a web application (not to design it though!). Although there is a big difference between some messy PHP code and a clean tested code within a web framework, it is not that hard to do it right anymore. It used to be very difficult (read: expensive) for small Internet businesses to provide their customers with highly reliable architecture. With Amazon’s web services (don’t forget EC2 and the new baby SimpleDB!) this is not the case anymore, either.
I mean there are still only few people who can code and set this all up and make it work. Especially outside the US I’d say. But I do think it is not where the hard part is (or will be soon) anymore. It is in “what is my app about,” “what features shall I put in and what to leave out,” in the user interface design, community management and so on. In short, in the non-geeky stuff.