« iOS: Time zone selection | Main | Things for iPhone: Crash data found »

Jul 05, 2011

Comments

Feed You can follow this conversation by subscribing to the comment feed for this post.

NerdForTheWin

Okay, I get the gripe. But from a network engineering perspective how do you do that? The redirect is going to be handled by the load balancer(s) which is just pushing the request via redirect to the "sorry" servers. The servers that live at the original URL are either being updated or offline so a redirect must be made to somewhere.

What is the better way to do it? (I ask because we do this all the time)

Mike

Brad Choate

@NerdForTheWin: I don't know what load balancing server you're using, but I'd suggest that the balancers would serve up the response instead of redirecting to a separate stack. Static resources (images, etc.) could come from a CDN or whatever. The static response for a standard "Try Again Soon" page itself would be tiny in terms of response size. The HTML response returned in the screenshot there is 2,310 bytes and isn't even optimized.

So I'd say you'd structure your routing rules (specifically for requests from the internet, versus requests from your internal interface, so you could test the updates being applied before restoring service) so that it's easy to flip service from your live servers to such a static page right on the balancer. Once the servers are live again and have been tested, you'd flip the switch back.

Another less elegant solution is to forward to a new URL, but send along a query parameter identifying the originally requested URL. The page would then include a button the user could click to retry their original request. I'd settle for that, but I still think it shouldn't be necessary to redirect at all.

NerdForTheWin

I'm used to using Cisco ACE farms. We typically see 2-3GBps throughput in our ACE farm. I cannot even imagine what a site like Apple has to deal with. Typically, hardware load balancers are built to make the quick routing decisions and don't serve up content locally so they push it to the backup farms. I suspect you could code something that could do but you certainly need it to be quick and computationally cheap (static, like you said)
Most places that I have poked around at have very different teams to handle network infrastructure things and server/content so I completely understand why things end up the way they do.
Anyhow, thanks for the insight and the great blog!
Mike

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment

Blog powered by Typepad

Become a Fan