Why the cloud isn't for your startup
bluescripts.net
bluescripts.net
Seriously, people need to stop telling other people what to do. I very appreciate your input and in fact, I am exactly in that situation, but when you tell me what to do, it's less likely I am listening closely to what you say.
On topic: Sure I could learn how to do sysadmin stuff. But for some people and maybe me, the opportunity costs outweight the economic benefits of rolling out without PaaS
We spend under 1k / month (still - we're the masters of money saving...) and we're all around the globe. The truth is, we couldnt even get close to matching this price any other way.
The cloud is for a lot of startups, but only if you know how to use it properly.
A lot of people will tell you using micros in production is a bad idea, and dont get me wrong...for most people it is a bad idea. Our findings are that micros are reliable and if you use them correctly you are going to be OK.
Where we used to have 2 smalls, we can afford around 8 micros before the cost becomes an issue. This is a significant benefit in that it increases our availability (Basically we're in each region and every availability zone). We have two main systems, the web frontend and our monitoring nodes. Nodes exist in a specific region, and report back to the central storage system via API.
The main feature of our platform which enables us to scale using such small systems is that our CPU demand is very predictable. There are no "hourly jobs" or anything that would spike CPU, everything is done throughout the hour and if we need more work to get done, we simply add more servers.
We are going to do a big write up on this in a few weeks, check our blog (http://www.verelo.com/blog) or HN for the post when it comes out.
You're exactly right. Sure, sysadmin stuff isn't hard. But it does take time to learn. Additionally, over time you learn things from experience when things go wrong. And when things go wrong without experience you will be scrambling to even know where to start to get things back up again.
As anyone will tell you that has been doing this for many years (I have) you learn new things every day. Just like a Doctor does and a lawyer does. (Even though both of those professions think they know it all out of school, they don't.)
It might be easier to set up your own servers than it is to manage the communication overhead of a third-party sysadmin
This explains how it's cheaper to deploy on metal for high traffic sites, as if $1000/month in server costs in the event that my site gets massive traffic matters.
With Heroku, I can have a site up and running in minutes with zero sysadmin work and almost no monthly cost. Should my site get hammered, I'm happy to pay $1000, heck $3000 per month, for a few months should it be necessary to handle traffic until I get my act together to reduce costs on dedicated servers. At that price, you can be damn sure you get good support from Heroku.
Compare that to spending a large portion, or even a small portion, of energy and time that could be dedicated to building your product before you even know if you'll get traction - I'll take the cloud any day.
If sysadmin work is so easy to learn, or to farm out with money, it can wait until I need it.
So really, you're not saying the cloud isn't right for anybody's startup at all. You're stating the obvious, which is "if you have someone with sysadmin skills, use those skills". Well, duh.
As a technical co-founder, I can either spend my time learning all there is to know about being a sysadmin, or I can outsource it for DIRT CHEAP. Even at $1500 a month for something like Heroku, it's still cheaper than spending as little as 10-15 hours of my own time managing a server.
Besides, for the first 6mths of your startup, the actual costs for Heroku are likely to be less than $100 a month for a couple of dynos. It's not even worth the time to read the manual at those rates. A couple of git commands, and you're done...even for a complete novice. By the time you're needing those 24 dynos, you likely have the revenue to support the cost.
You can always make more money, but you can't make more time. As a technical founder of a business, your job isn't to be doing something that you can pay someone else to do. You should be making magic happen in your product.
That's a lot of time.
What is the most time consuming task when managing your own dedicated server? I thought that it takes max 1h monthly to run "apt-get upgrade".
For that, we've got a team of the world's best sysadmins working for us. And if we hit the express elevator, it'll scale as far as we need without us lifting a finger. We'll be popping champagne corks - not server cores.
And best of all, we can focus entirely on what we do best - developing great web apps. We don't have to take weeks out at a time to migrate to bigger machines or the latest operating system. Every time a new exploit comes out, we don't have to drop everything to check we're safe. I don't lie awake at night wondering what would happen if a disk drive crashed or a power supply blew.
Obviously your mileage may vary, depending on exactly what your startup does. But you'd be a fool to discount the cloud on the basis of one article on HN.
We're also just a weird case, since our bottlenecks are almost always a matter of IO and how-fast-can-we-access disk. That makes our use case a little more difficult to virtualize. I don't think this is something most startups generally experience, at least not to our extent.
I upgraded the ethernet port on one machine to 100 Mbps/s and something happened to the trouble ticket system that made it impossible for me to put tickets in. At least I got the port upgrade for free.
To get to the point where I could put tickets in again I had to call on the phone and talk to three different people, finally one guy was a wizard who logged into SQL monitor and was able to fix my record.
Then there was the time that I had them add a new disk drive to a machine and they added the drive w/o a partition table. When the machine rebooted, the superblock got overwritten and I thought I lost the files.
I was able to recover the filesystem, and right after that I moved all of the files into S3.
My bill at Softlayer was $300 a month, I pay $600 a month now on EC2 but I'm running a much bigger operation. I probably could get that price down if I shopped around, but I'd have a hard time building a storage solution as durable as S3 at any price elsewhere.
Now, with EC2 I am doing sysadmin work, but I find I'm productive at it because I'm just doing stuff rather than talking on the phone with a bunch of dolts who'll just screw it up.
It's not worth worrying much about what will happen when shit hits the fan if the fan isn't spinning yet. First, figure out how to get some power to the thing.
Whenever I've moved an app between platforms or server setups, I benchmark an individual instance and figure out your needs that way.
Also find it interesting how his current setup is all on a single server. So his entire service is one massive SPOF. On Heroku, he'd be highly available and horizontally scalable. How much does downtime cost him?
Firstly support. On dedicated hosting on some providers, yes you will get a quicker response than from Amazon or Microsoft or whoever your cloud provider is. However, when there is a problem with their service, by the time I find out about it I am normally looking on their site to see they have already been notified of the problem and are already looking into it. And Microsoft Azure does have phone support for any critical issues.
The 2nd great thing about the cloud is that, it isn't just your problem. They are hundreds if not thousands of companies affected and they are more likely spending far more money than me with them. Hence I get the rapid fix of any issues, without being the big client.
Benchmarks - not sure why that was brought up, you can benchmark on any cloud provider. On Windows Azure I can find out everything from CPU to memory usage and do remote profiling.
Dedicated will give you better costs, machine to machine wise but I would rather pay $1,000 + more a month to have someone look after all my hardware and the ability to scale as a I wish, rather than have to pay someone (who would cost far more) to monitor, upgrade and plan for it continuously. If $150 to $1,500 is an issue and you are prepared to spend a large part of your own time on this insignificant issues, then I suppose you are a startup and not a business yet.
I understand doing everything yourself at the start, staying as lean as possible, but if you are looking at that scale and hiring people then the costs of the cloud are FAR more attractive.
Servly.com being a server monitoring startup :)
Your level of concern can become more trivial when you pay someone else to worry about it.
The bottom line is that dedicated hardware is cheaper because it comes with less. If you aren't making use of those value added services, then by all means go dedicated. If you know you don't know what you don't know and you want experienced support to take responsibility for a larger percentage of the stack, go Heroku or Engine Yard. If you have specific overriding requirements, let that guide your decision to a platform. There's no one size fits all solution, and cost is not the primary difference.
You do pay more than just throwing another service on a machine you're already running, but you've got a fairly good chance of it being massively optimised.
... for the general case.
Is this good bang for your buck? YMMV.
NB I could probably add also anyfu.com for highlevel experts (in the 200$/hour range) but it has not launched yet (it's done by Justin Vincent and Jason Roberts of TechZing podcast fame)
There are plenty of (well grounded) people who aren't worried about having to double capacity every other week, but still don't want to be (or hire) a linux, nginx, memcached, and mySQL guru. Figuring out things like setting up a hot spare with automatic failover, backup, security patching and dealing with DoS attacks are not by any means things that can be picked up in a weekend.
GAE and Herko promise this type of thing, but bundled along are the cost, limitations, complexity and opacity of the autoscaling infrastructure.
It all depends on how much you value your time. We are a consulting web dev house, so figuring out the price per hours is easy - its just what we bill our clients; but even for a regular startup it should be fairly straight forward. And this doesn't even take into account the opportunity cost. The cost of not doing something directly relevant for your startup outcome while you are fiddling with the servers.
I'm looking at migrating the whole thing to Heroku but the Mongo cloud providers seem to cost 2-5x more.
But since you're talking primarily about web app hosting options, I've found AWS to be just fine, others seem to like rackspace or linode or whatever. Heroku has struck me as pricey, and if you're a web developer I feel like you should be capable of setting up a web server on linux on your own. EC2 and S3 are both just really convenient, I'm not sure of an option that's more convenient, and that's really what I'm looking for--convenience and one less thing to worry about.
So, the cloud (or several clouds, really) is right for my startup, but it may not be right for everyone. Still, EC2, S3, and AWS generally really are great products, if you're a startup, something like it probably is for you, at the very least until you've figured out what you're doing and are making something people are paying for.
The post also does not talk about elasticity (the E in EC2) -- how easy is it to add (and later remove) that extra dedicated server to handle a spike of traffic from HN/elsewhere?
We do have a slightly special case with >100TB of storage and monthly bandwidth, though. When we started I assumed S3 (or another cloud service) was the only way and never dreamed of building my own distributed file system.
It's actually faster for me to use EC2 whenever I have major calculations than our internal cluster. I get on demand scaling up with the fine tune control I need to micromanage when necessary.
If your costs grow and your revenue doesn't, THAT is your problem. All the optimization in the world won't fix it.
The point is, if you rely on profits to keep your company running, saving 11x on your infrastructure costs is something everyone should be at least evaluating.
This is key. You might need to add another word to cloud... something like "cloud redundancy" or "cloud backup" or "distributed cloud"... if customers will pay for it, sell it.
All I have to do is learn how to spin allocate space on a disk drive to a virtual disk, should I use RAW, QCOW2, something else? I should probably figure out how to install an OS within this "container."
What's that honey, you need to do the budget? Hang on, I'm still working on my job.
Man, I seriously have to learn some sysadmin to get this thing up and running on my commodity box.
Wait a tick ...
Your more general point is well made however :)
The cost of hardware or cloud services is pretty much irrelevant compared to the cost of sysadmin hours, be it your own or hiring someone else. Unfortunately most people only learn that lesson when the shit hits the fan. Downtime is costly. Getting hacked even more so.
Use forums like webhostingtalk.com to your advantage.
go dedicated when you commit to the project. Up until that point, you would be wasting money and effort and although service support is good with dedicated providers, that largely depends on 'who' you choose - i certainly wouldnt say a blanket 'great response times from dedicated vs cloud providers' on some (shall not be named)providers..
Exponentially, really? What exponent?