I think you might want to rename the post to: "Why the cloud isn't for my startup"
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
Yeah its different for all cases. Our monitoring company uses a bunch of providers, we started with AWS. Why? Because its cheap, quick to deploy...and i had no way of getting our servers in 8 global locations in a week any other way.
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.
Besides a lot of profiling of our code, its amazing how many people dont ever do this...we rely heavily on micros in production.
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.
All these things are great cautionary pieces. The point is to ignore them when they don't apply. When I see "Why the cloud isn't for your startup" I read it as "Why the cloud might not be for your startup." It's stuff worth thinking about and using if it is helpful.
"Sure I could learn how to do sysadmin stuff. But for some people and maybe me, the opportunity costs outweight the economic benefits"
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.)
Or perhaps it should be renamed, "Why the cloud IS for your startup."
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.
I hate these articles. You write an article which claims to tell me why my the cloud isn't right for MY startup, and then conclude " If no one in your team has the experience, or time, to learn devops, then a PaaS solution like Heroku would be a more logical choice."
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.
I think he's including the time to learn what he's doing. If you have no clue then it is going to take more than a few hours to learn everything. Sure, once you're competent and everything is set up, it won't take much time. It is just getting to that point that could take a lot of time.
True, but it is more a matter of where you choose to invest your time. Hosting and sysadmin work have nothing to do with my startup's value add, and I personally can't add much value by doing it myself.
Run uPgades, monitor servers, especially free sPace etc. when u upgrade stuff breaks sometimes, write installation scripts, fix them when new version of something comes out. Etc etc etc. we run about a dozen different projects in multiple configurations and since the move to Heroku I'd say we saved amour 20 monthly hours.
Actually the cloud IS for our startup. We used Appengine to launch and have had no reason to even consider moving to bare metal. We've been successful and are growing nicely, generating six figures of annual revenue - and paying Google three figures annually.
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.
Nitpick: EC2 (and AWS) isn't PaaS. It's IaaS. I think this is an important distinction. Most PaaS (like Heroku, App Engine, etc.) takes away the need to play administrator and lets you focus on your code, less your infrastructure. On the other hand, IaaS like AWS is closer to a smorgasbord of components you might want to use to build stuff.
GitHub's listed as an example, but I don't really think we should be. It was pretty reasonable for us to start on virtualized instances to start out. By the time we moved to bare metal, we had grown quite a bit and it was pretty clear what our growth strategy for the future was. To further complicate things, how we stored our Git repositories on the backend changed dramatically during the move from virtualized to bare metal... a good move, to be certain, but one that took considerable up-front development time, and one that may have sunk the company had it delayed GitHub's launch by six months or more.
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.
When I worked with Softlayer I found the support people made things worse rather than better -- every time I had them do something they broke something.
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.
Sure, for 1.5 grand a month, you can get a crazy amount of dedicated hardware, but then, that's one-half to one-third of one developer's salary. Heroku charges a premium to save on developer time (and hopefully benefit from economies of scale).
I missed the part where he convinced me that EC2s weren't for me. If I have to learn enough sysadmin to run my own box, then I'll have learned enough to handle my own AWS cluster without needing a support ticket answered within hours.
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.
He's also optimized around his current setup and think that would carry over 1:1 to another platform. He has 24 unicorn workers now, so he thinks he needs 24 dynos on Heroku.
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?
I think this post raises some good points but really misses the mark.
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.
This definitely contains a valid perspective for green web developers, but it's thin on actionable information. All these platforms have real upsides and downsides that should affect your decision more than raw cost. Heroku for instance is very stable because of the controlled environment, but they nickel and dime you for any services that are not part of the standard package. EC2 is easy to scale with, but IO throughput is bad, especially on smaller instances. EY gives you root access in conjunction with a mature suite of Chef recipes and some higher level services, but they charge a premium and some of their choices might not be technically ideal for you.
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.
One advantage of "Heroku's" nickel and diming is that the money is actually being split with other companies in most cases, and those companies core competency is providing exactly that service, whether that be a Redis server or email delivery.
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.
My company just moved to the Rackspace Managed Cloud, which is about $350 a month for a 4GB dedicated virtual server, and it has been fantastic. Our team is savvy, but we definitely don't have any hard-core linux sysadmins in the group, so being able to call 24/7 and chat with an expert who has access to our box gives us most of the benefits of having an in-house admin at about 5% of the cost.
How many hours in a month do you use this kind of "sysadmin expertise" ?
You could also use a freelance sysadmin (hourly based payments) that can remotely connect to your physical box(es) and do what needed.
Nothing specific, apart for the sites you know. I have no experience on those sites but I've heard of people that have found good professionists there (of course they wont charge you 5$/hour but maybe 50$/hour).
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)
The hole in the cloud offerings right now are in the "managed server" space.
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.
I have all the sysadmin skills needed to run dedicated servers and in fact I was running and configuring most of our development and production systems for years. We did switch to Heroku for most of development and production projects lately and the difference in "time spent doing stupid IT" was enormous. literally tens of hours per month that I'm not spending now on starting, stopping, configuring, figuring out why the puppet install script fails thought it was working perfectly the last time, monitoring, etc, etc, etc. HUGE gains in productivity and totally worth the extra cost.
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.
All our development and staging systems are essentially free, mongolab/Mongohq have free plans that are enough for dev. That being said I'm definitely not looking to save 20$ as I bill 110€/hour so one saved hour I can devote to actuall work pays for half a year of payed heroku dyno;)
Depends on which cloud you're talking about -- there is no "the" cloud.
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.
I think the important thing to take away from articles like this is that the cloud isn't the only way (not that you should then title the article "Why the cloud isn't for your startup"). If you do know a bit of sysadmin stuff and/or you're running a bootstrapped company it's good to know you can pay about 10% of what you'd pay on AWS by using dedicated gear (particularly if you have predictable traffic, as a lot of sites do). "X hours of my time is the same cost as Heroku" only works if you have cash in the bank or each hour of your time directly brings in cash.
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.
I am of the school of thought where Heroku and other PaaS offerings are good for prototypes, where you'd throw up some simple apps on the short term. If you need to scale up, then you'd consider hosting it elsewhere and where you'd have more fine grain control. Does no one do this?
The post seems to discount using EC2, for it being lumped together with Heroku's free tier as the same kind of a PaaS.
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?
My experience has been more big data management and analytics. Less on the startup angle. There are a lot of hidden costs associated with maintaining your own dedicated hardware. Our projects here invested quite a bit into several internally maintained clusters, and it hasn't been perfect. There is a lot of opportunity cost wasted in having developers forced to constantly flex their sysadmin muscles. My time is best served solving problems that leverage the cloud, not tuning and maintaining it. The context switching can be very distracting.
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.
The author makes too many generalizations in this article.... My company uses Rackspace, which has been fantastic, and as far as I could find Rackspace has no demerits listed in the article. Common complaints like poor support or limited customizability have just not been issues so far. Maybe when we become huge and can afford racks of servers and such matters as hardware customization become relevant issues to us it will be time to make the switch to our own servers, but as far as I can tell, as long as the hosting company doesn't suck at certain critical service aspects like support, cloud hosting only helps small startups get off the ground more easily.
That's good for you, because you flipped IndexTank, and then it died.
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.
AWS plus a dedicated sysadmin company delivering the same service level as a good hosting provider always seemed like the sweet spot to me. Barring scenarios where you actually need your own iron to deal with performance bottlenecks, it's the best of both worlds.
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.
If you're hiring dedicated people to manage your servers bare metal becomes even more appealing, especially if they know what they're doing and can allow you to burst out to a cloud provider when you need extra capacity fast.
I guess I should go invest some time learning KVM so that I can spin up VMs on my home computer until I can get some angel to toss me some money so that I can invest in some hardware.
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.
This is where virt-tools actually works well. Point it at an LVM volume, tell it how much disk you want to give to the new virtual machine, let virt-install do it's stuff, done.
does it depend on what you define as a 'startup'. weekend projects should not be considered startups even though every man and his dog seems throwing the term around for every bit of code they hack together.
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..
I'd go one more step - go dedicated when you are reasonably confident you're done rapidly pivoting, i.e. have found a business and growth model that work.
The cloud is using ECC memory. Your server is not. However, if you shop around you can find cheaper, faster, and better specced servers with ECC memory.
Use forums like webhostingtalk.com to your advantage.
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