Why Stack Exchange Isn’t in the Cloud
blog.serverfault.com
blog.serverfault.com
A real analysis would have even dug into the question of sysadmins vs engineering staff, and the potential for "the cloud" to allow programmers to actually program infrastructure, eliminating internal sysadmin staff completely (and outsourcing all the remaining sysadmin work to Amazon).
Instead, we got bizarre platitudes about how they "love computers". How boring. Early in my career, I spent a lot of time in the hot/cold, blaring fan world of data centers -- sometimes late at night, when a hard drive failed or a switch's fans went out. Anyone that thinks that it's pleasant to spend time in a data center is insane; whether or not it makes sense in terms of cost was the answer I'd hoped to get from this article.
An evaluation based on personal taste is useless. If I say "I like orange because it's a great color" -- then either you already like orange, in which case my analysis does you no good, or you don't like orange, in which case my statement can simply be ignored.
The same applies here, in that the article could have been coalesced to a single sentence: "We don't use the cloud because we don't want to. We like dorking around with hardware and data centers, just like someone else might link tinkering with their car or collecting bottle caps"
Possibly interesting -- but not useful.
> I spent a lot of time in the hot/cold, blaring fan world of data centers -- sometimes late at night, when a hard drive failed or a switch's fans went out.
If a hard drive or a fan failing requires someone's attention at the data center in the middle of the night something is wrong (unless your company has such high uptime requirements that even redundant systems need to be fixed right away). Either your company can't afford to provide proper redundancy, or someone on the technical side has failed to implement redundancy or failover properly (which happens, but should be corrected). For example we had an entire router fail and this just caused a blip. We didn't have to do anything right away to fix it, just figure out what went wrong and bring it back up the next day. Also we don't really end up spending very much time in the data center itself (in fact I work remotely full time).
> We like dorking around with hardware and data centers, just like someone else might link tinkering with their car or collecting bottle caps
We do like to consider ourselves experts -- we don't just dork around and tinker (at least, not most of the time)
> If you remove any rational analysis based on productivity, developer time, or finances, then we're only left with a question of personal taste
In part this is a matter of taste. But as I said:
"This culture means when we hire technical staff, we hire people who share this passion. I believe that this passion translates into a better product. Whenever someone does a cost analysis of cloud vs self hosting there is no row in the spreadsheet for “Work Productivity Increase due to Passion.”
Just because there is no good method to put it on a spreadsheet, doesn't mean it doesn't have value for the company. There are a lot of technical reasons we like to have control over the full stack. But I think it largely comes down to our culture. The culture of a company is very important. A culture could be all about how the numbers fall after you calculate your capital and operating expenses etc. Somehow it seems to me though that many people don't seem very happy in those cultures -- and this will effect employee retention and the sort of talent you can attract.
The result of a million small optimizations is a platform that others can’t create.
But come to think of it in an another way. If you actually let some one else focus on the issues you don't necessarily need to handle you can focus well on issue you actually need to work on.
But, yes its all about personal preferences and I respect your preferences. In my case I would actually let some one else do the job I don't necessarily have to do and use the same time to do well in my actual job.
Does the price make sense then?
I have yet to see any significant AWS deployment that doesn't feel like it could be done better, more reliably, and much more cheaply as a co-located setup.
If you really have a need to setup and teardown a bunch of cores for the occassional large batch, nobody's questioning that the cloud is an economical way to do that.
But I've never had to do that. Not in a way that would make the development time involved economical anyway. Wait two hours for this once-in-a-blue-moon processing job to finish, or spend a day setting up a process to handle such jobs quickly in the future?
It'd really take something exceptional (again, with low IOPs demands) to have that make much sense unless I was already hosting in the cloud and had invested money in making such a task quick and cheap.
But that's fine as AWS isn't the only cloud platform out there, and some are actually desgined to take data intensive workloads.
On the other hand, there are plenty of clouds out there that have reasonable IOP performance, so it's not as though it's a monopoly.
Does the price make sense then?
Does it? That's the point of analysis. It may be that you can scale up your organization on AWS, and then make the decision to scale something like a database vertically once you actually need it.
The choice should be based on a rational cost analysis, however. Not just money, but developer time, productivity, and a potential loss of focus on the core competency -- which should be your product, not your commodity infrastructure.
I have yet to see any significant AWS deployment that doesn't feel like it could be done better, more reliably, and much more cheaply as a co-located setup.
That's a stretch. Especially the "cheaply" part. The operational costs involved in building and maintaining a significant co-located deployment are huge, not to mention the capital expenditure involved in enterprise networking hardware, servers, cages, racks, PDUs, etc.
I don't firmly fall on either side of the debate -- one must balance the requirements and costs, like anything else.
However, I do firmly believe that we should have programmers automating the entire software system administration job away, leaving only the question of hardware provisioning. That's why we have "devops" style teams nowdays, and I only expect that trend to grow.
No, it doesn't. You're throwing up a spectre. This are pretty easy numbers to come by. The point in this one example being vertical scaling options are pretty constrained on something designed to really only effectively scale cores and RAM.
> That's a stretch. Especially the "cheaply" part.
All this is a straw man. I really have a hard time believing "I don't firmly fall on either side of the debate". In fact, I call BS.
Who actually has to wire their own PDUs unless they want to? Or is forced to buy cages, racks, etc?
If you want to I suppose you can, but I haven't hit a Tier 1 data-center where that's even an option. Unless you were to buy an unfurnished cage perhaps on the terms you got to hire your own people for the build out.
Otherwise, for most deployments, even for something like Reddit, you're talking about stacking a couple 48 port switches, racking a few servers, and making sure you don't screw up airflow with bad cabling. Just spend $500 on an experienced cable guy to wire it up. Cabling isn't the most fun.
Staffing costs are a drop in the bucket. Racking a couple dozen systems, configuring your ports is pretty trivial.
If you have a business with dependable positive cash flow affording you the luxury of signing a three year hardware lease, it doesn't make cash sense to do anything else for 99% of deployments.
The "core competency" stuff is just a salve for developers who want to live in a homogenous environment. Life gets easier with a competent IT person. Not harder. You still have to monitor processes, setup syslog servers, archive logs, monitor disk space, load, available RAM, bandwidth, trace down abusers, setup mail servers for at least internal monitoring, create backup procedures, automate deployments, figure out how to compile some old library.
All of this stuff is where your IT staff effort goes. Not in the once-in-a-blue-moon-we-have-to-rack-some-servers tasks. You aren't better off because Amazon is handling your power requirements instead of a good colo. Those things are details you never have to think about either way. Saying so is a definite straw-man.
They're a microsoft shop. They're not going to attract top talent. Who here wants to deal with that stuff?
Man, this idea is one of the most insane things I hear. Amazon does not install your operating systems, Amazon does not install and configure you applications, Amazon does not troubleshoot anything related to the operation of the servers, Amazon does not do analysis on your traffic patterns and decide when you need more instances, Amazon absolutely doesn't care about how well your product runs as much as your own staff does, in other words there is no way you outsource your WHOLE sysadmin staff. All Amazon does is provide the hardware and network infrastructure to run on. It is not a magic bullet that says I don't need to have these people around. SysAdmin != server monkey - yes it is part of our jobs, but quite honestly it is a very very small part of it.
> Anyone that thinks that it's pleasant to spend time in a data center is insane
Call me insane because I sure do love spending time in a datacenter, it's one of the few times working in IT you really get to do something with your hands, and that does have a certain appleal to me.
http://en.wikipedia.org/wiki/Comparison_of_open_source_confi...
Granted that process is still under refinement, but with dedication you can achieve those goals.
Conversely, again with cost analysis, which is cheaper, a developer who can manage all that, or a sysadmin? I am sure there is a curve, small end a sysadmin, large end automation.
Do your "traditional" programmers want to develop the sort of skill listed at http://www.sage.org/field/jobs-descriptions.html ?
Even in this case, I would still like to excuse my self of the headache dealing with real estate, electricity, air conditioning etc. In other words supporting factors required to keep the data center up and running.
Unless you are going to need ridiculous amounts of servers, its just not worth your time dealing with other support operations and its infrastructure. Hiring, managing and maintaining the staff full time to this job is not easy and takes a lot of your time.
For some large company it makes perfect sense to focus on data center infrastructure and support. But for small companies you are far better off letting some one else handle it and focus on your primary work.
For everyone else there's co-location, where you don't worry about those things anyways. Unless you have a just terrible facility I guess. I mean sure, one time in the past three years I've complained to our colo folks that it seemed warmer than it should be while one of the A/C units was being serviced.
Other than that your argument doesn't make much sense. It makes me think you've either got no actual experience with this sort of thing, or you're co-locating at "Bob's BBQ & Server Emporium"...
>>Call me insane because I sure do love spending time in a datacenter, it's one of the few times working in IT you really get to do something with your hands, and that does have a certain appleal to me.
We are both saying the same thing. You need to draw a line between "fun" and how much feasible it is to afford that fun. Most people don't need a data center, but still want it.
All passion and fun talk aside. Sometime you need to look at it very pragmatically. That was my point.
Uh, don't they use Dell? If they love them so much, why not build their own? Why stop there? I love software and programming languages, but it doesn't mean I'm going to use my own compiler or run a company on my own libc.
In other words: It depends.
There's no general answer, because deciding where to draw the abstraction barrier between you and your vendors is an unsolved, difficult, and evolving problem.
As far as Dell goes, I honestly have mixed feelings at this point. When I started at the company there was less than 10 people, so the idea of having centralized firmware updates etc seemed practical. I'm not sure I really feel this way any more -- I go back forth. But sticking with Dell seems to make sense at this point so we have more uniformity in hardware and management.
When someone says that you don't love computers because you did whats most practical or cost effective for you, how can they say that they love computers when they do or don't do something else because its most practical or cost effective to them?
If it saves my time, is cheaper or easier to use amazon rather than running my own data center, that doesn't mean I don't love computers. If they love computers so much that practicality is out the window, then why aren't they using their own operating systems and libc's?
I mean, obviously I don't expect anyone to build everything they use. My argument was aimed at the "you don't love computers" statement and not at the fact that they don't write their own OS.
Not totally silly, Apple has been doing sort of the same thing with clang/llvm.
http://teddziuba.com/2011/04/amazon-the-purpose-of-pain.html
In case your traffic is huge, this can cause big problems that are very hard to fix. And it did cause problems for Reddit, as EBS is notoriously awful in this regard (and others, like big latencies on access).
Basically when working at big scales, nothing beats having complete control over your infrastructure. It may be tough and time consuming, but at least you can identify the problem and fix it.
It is my opinion that something like Google's search cannot be built on top of Amazon's AWS.
Google can't exist (well) on top of AWS as AWS is designed for the deployment of (qusi)stateless applications. Saying that you can't build a data intensive application on top of it is like saying that your machinegun sucks at grating cheese.
OVM was designed to run a search engine origionally (darkmatr, now defunct due to lack of comparitive profitability), so you could quite easily build google on top of it. It wouldn't surprise me if google would work really well on top of that stack.
Remember the interface between the vm and hypervisor is standardised and it is running many other functionaly identical vms. Also remember that platform they are running on is usually homogeneous, very well maintained, monitored, and understood.
Also keep in mind that with 'hardware issues' you can reploy onto another machine in minutes, rather then having to wait for say a replacement part from dell/etc. Your standard procedures should come into play in both cases (Failing to a secondary server, bringing a tertiary server into standby, etc.)
Would you have preferred a gigantic stack of technical chaff designed to rationalize and obscure the fact that they're doing whatever seemed like fun at the time? Because I'm sure we can find you some examples. ;)
All they are saying is that they are not in the cloud because they don't want to be in the cloud and because they quite like not being in the cloud. It works for them. Why is that expression at all controversial?
If they'd labeled their blog "Why being in the Cloud is a bad idea" or "Why being in the cloud would cost Stack Exchange a lot more" or "Why nobody should ever use the Cloud" then I could see the reason for the dispute. Then their arguments would be very unconvincing.
It is certainly valid for Stack Exchange to make a choice because it fits within their culture and then explain that that is why they are doing it. You might think it's a dumb decision and that's fine. But they clearly are not trying to convince you that they've made the best possible decision. They're just saying that good or bad, they've made the decision that they want to make. And it's clearly a decision that has been working well for them so far anyway. So why do people keep bugging them about it?
And taken on those terms - not on the cost accounting of cloud vs local - it makes sense to me. Is it a convincing "no matter what" argument against cloud hosting in all cases? I'd say no - there will be cases where sheer scale or fluctuations in scale make cloud hosting more attractive. as the article admits.
It appears that many early tech companies (TI, HP) have headed in the same direction. Maybe 30 - 40 years is the limit before the accountants take over.
Meanwhile, today's manufacturing companies routinely make objects – like the processor driving the machine that you are reading this on – that are orders of magnitude more complex than the most advanced technology of 1959.
And all of this was done by companies that employ lots of accountants. I'm not sure why you think that accountants and engineers don't routinely coexist, or that Henry Ford didn't employ plenty of accountants back in his day. Being able to manufacture good stuff in bulk at reasonable prices is a major exercise in accounting, and always has been.
Although it's not quite the cloud, one of the founders prefer vertical stacks due to several reasons including licensing costs.
The major problem with their 'scale out' chart is that that particular hardware is far from optimal hence costing far more then it should.
This article basically takes the approach that "the cloud" is AWS.
Cloud vs. dedi vs. colo in terms of raw prices though, depends entirely on your price of money and the price you can negotiate with your provider.
Is it not perhaps because there's much less competition for .NET stack cloud platforms, therefore less quality?
If there is no competition, you can get by with a crappy product or service if your client need it.
The real win of competition is that it allows a market to be commoditized, at which point it actually operates like we all learned in our Econ 101 class.
But in either case, sometimes, competition lowers at the same time the price and the quality. So competition doesn't necessarily increase quality.
Given that one wishes to use Windows/.NET, I feel the decision follows pretty naturally from an analysis of costs - no vague argument about culture necessary
Their culture argument is a funny one. But I have no beef with it. If owning and tinkering with the hardware makes them happy, more power to them.
As an aside, I've been using Azure lately for my .NET projects. MSFT has done a nice job with that platform and don't get enough credit for it IMHO. I especially like SQL Azure.
They aren't saying that "people who use the cloud don't care as much". It's just their thing.
They're the masters of their own company, and as such, can do things however they like. One of the benefits of a private organization.
But they did say that people who use the cloud don't care as much:
> If you just want to use someone else’s computers, it means you don’t love computers — at least not every aspect to them.
I personally thought I going to get a break down of the pros and cons of being cloud hosted vs running your own servers.
The article ended up being completely non technical or quantitative and boils down to "we like to build our own computers".
Chalk it up to high expectations that weren't met :) That's not the authors fault.