Why shouldn't Netflix be running on HVM?
1,180 karma · joined March 8, 2007
Why shouldn't Netflix be running on HVM?
1. Rackspace's maintenance announcement was sent at 9:00 PM on Friday night (Pacific time). Seriously?! I had already left for a weekend vacation without my laptop, so I couldn't do anything to get my company prepared. Even if the patch wasn't ready until Friday night, Rackspace could have scheduled the maintenance windows and announced them to customers much earlier.
2. The maintenance window for all three USA regions were scheduled at the same time. We couldn't just move to a different region without going to another continent.
3. Each maintenance window was 24 hours -- that's just too long. Even though our servers were only down for 10 minutes, we had to be on call and ready for 24 hours.
4. Although we have redundant servers in every region, we still couldn't guarantee that those redundant servers wouldn't be rebooted at the same time. As it turns out, we did lose both of our servers in ORD at the same time.
On a side note, we actually have two DNS sync systems at Runscope. One handles DNS for individual hosts (like web01.runscope.com) and the other handles public DNS (like www.runscope.com).
Our public sync daemon is tied into ZooKeeper, which keeps a list of active hosts for each of our public services. The daemon updates entries in Route 53 whenever the hosts change in ZooKeeper. We have 3 different types of public domains, and the tool handles all 3. We have standard domains with load balancing, geo-routed domains for services in multiple regions around the world, and regional domains for routing to a specific region. The sync daemon has been very helpful in keeping our infrastructure nimble.
If this interests you, I'll be giving a talk about our cloud infrastructure in a few weeks in San Francisco, along with our founder/CEO John Sheehan. Full announcement coming soon...
If you're a large customer and you're really concerned, you can probably negotiate a contract with GitHub that guarantees your access to the service. But if you're a large enough customer to warrant a custom contract, then no rational service provider would unexpectedly cut you off, because your business is valuable to them.
Bose actively processes the input, which does improve the sound quality to the casual listener. It's exactly what those kind of listeners want. Audiophiles want exact reproduction of the original source, so it's not a good choice for their preferences. But by dissing Bose, audiophiles are doing a disservice to the casual listener, the same way as if I pushed my grandparents toward a WRX.
None of these have the wide product functionality that AWS has -- yet. Amazon has a multi-year head start on most of these companies, but as you mention, there's lots of time to make progress before 2020.
(The server was part of a MogileFS cluster so there were multiple copies of the data online. There was no data loss, not even any downtime. Still, it was scary as hell, and I spent all Saturday in the data center restoring the box.)
It's important to be on Virtual Private Cloud for a few reasons. Here are a few:
1. VPC gets you out of the EC2 private IP space, and lets you configure instances without public IPs either. This helps prevent accidental misconfigurations, like accidentally letting the whole world connect to your Memcache.
2. If you want to connect a VPN to your physical infrastructure, or to connect servers across multiple regions, VPC makes that much easier.
3. Amazon's stopped launching new networking features on standard EC2, so if you want to do things like change the security group of a running instance, you can only do that in VPC.
The problem is, most startups don't think about VPC prior to launching, because these things don't matter much when you're just starting out. But unlike most early ops shortcuts, it's a huge pain to migrate to VPC later. It's basically the same effort as moving data centers, except for actually carrying servers around in your hatchback.
Now new customers won't have to think about VPC upfront, but also won't have to go through a messy and time-consuming migration. Although this won't help existing EC2 deployments, this is a huge win for new AWS customers.
Let's say we're interviewing someone for a role with HTML5, CSS, and JavaScript. If the first interviewer ran out of time before getting to JavaScript, I should probably start with that.
Or, if an interviewer noticed any red flags, we can use the following interviews to gather more information. If I was told that a candidate complained loudly about being overworked, then I could spend more time discussing time management and the way he works. Maybe he legitimately was overworked, or maybe he's a complainer, or not very good at prioritizing his work.
Finally, it helps if there's at least one recruiter or a manager that you can give real-time feedback. Recently I was on an interview loop of a candidate for a very specific role. I quickly realized she was a terrible fit for this position, but she'd actually be perfect for a different one. I went to our recruiter and explained the situation. He was able to reorganize the schedule so that the candidate spent the rest of the day interviewing for the right position. If we had just continued without any feedback, it would have wasted a lot of time and we would have missed out on a great candidate for the other role.
You can claim a trademark as long as no one else has already claimed the same name in the same context. Once you have established the trademark, you can prevent others from using that name, even if they have been using it for a long time.
Note that the "same context" is why there's unlikely to be a conflict with Gaymers Cider. In particular, the gaymer.org trademark only applies to social networks.
(IANAL, so I may have some details wrong here.)
AWS certainly feels pretty costly when you compare colo prices to the list price for on-demand instances. But one of the reasons I wanted to present our work is to show that you can use the cloud for a lot less than the list price. It takes work to buy reserved instances or run spot instances, but that does make it much more cost competitive.
If I was doing it over again, I'd just use Amazon's auto-scaling features for all of this. At the time we built this, EC2's auto-scaling didn't support some of the features we needed. Since then, they've made it a lot easier to do things like set up a repeating schedule for auto-scaling, rather than using metrics.
We only have one EC2 AMI that we use for all of our servers. That AMI is pretty basic; it only does enough to connect to our Puppet configuration management servers. Puppet then configures the boxes as web servers (or databases, or...) and adds them to the appropriate load balancer.
When we need more servers for an auto-scaled service, we open spot requests and start on-demand instances at the same time. For most services, we want to run about 50% on-demand and 50% spot. We have a watchdog process that continually checks what's running. It launches more instances whenever there aren't enough, and terminates instances when there are too many. So if the spot price spikes and a bunch of our spot instances are shut down, the watchdog will launch replacement instances on-demand. It will also request more spot instances once the price has dropped back to normal. In reality we don't often run into spot capacity issues -- maybe once a month, and it's almost never apparent to our users.
I spoke about this in detail at AWS re:Invent last month, and the full talk is available online here: http://www.youtube.com/watch?v=73-G2zQ9sHU
Just to clarify, the auto-scaling was specifically for a pool of web application servers. At the time I gathered the numbers, there were 80 servers in that pool. In the last few months we've been moving toward a service-oriented architecture, and we've been able to use the same code to auto-scale the internal services. Of course it's not possible to auto-scale stateful servers like databases, but it's still saving us a considerable amount of money.
We implemented the auto-scaling in early 2012, so it's been in use for almost a year now. It only took about 2 weeks of engineering to build the system. It does need occasional maintenance, but it's still worth the effort given how much money it saves us.
If your PHP code can make 300 requests per second, then each request takes about 3.33ms. That's actually quite good if it's going over the public Internet to another data center. If you're getting ~10 requests/sec. across the country, that's about 100ms per request, which again is typical of cross-country latency.
If you need response times faster than that, you need a direct network connection between your app server and your memcache server, and you definitely need to avoid transcontinental network hops.