Load Balancers and Crappiness

I was reading something about Array Networks and the load balancers with SSL offload that they offer. I followed a link to their main page, and the images slowly drew on the page. I’m on a cable modem, and thumbnail images generally load near-instantly. This is one of the images embedded on their main page. It’s 5440 x 2448 pixels, and they use the height and width parameters of the img tag to display it in browser. This is a major pet peeve of mine, and it screams of amateurism at best, or cluelessness at worst. It’s only moderately annoying on a cable modem, perhaps adding about a second to the page load. Can you imagine if you were on dialup?

What really gets me, though, is that these people should know better! Although proper HTML design isn’t their industry per se, making sites responsive is arguably their company’s main purpose. It would be like a marketing firm having misspellings on their homepage — grammar isn’t their industry, but they’re all about presenting a pristine image, so it’s inexcusable to make mistakes like that.

But while you’re at it, here’s an interesting article about using a dedicated nginx proxy as an “SSL accelerator.” Most people doing SSL offload move it to a machine with hardware crypto cards (a la the Cavium Nitrox line), or, more commonly, dedicated appliances. This article argues that a decent level of commodity hardware can match the performance, and, in the case of some top-shelf equipment, do it for a tenth of the cost. (Granted, it replaces an appliance with a whizz-bang GUI and 24/7 support with a homebrew system…)

It’s also interesting to note that you can easily turn this into something that does all (or at least, most) of the magic that something like a BigIP box does. Rather than using it for simple SSL acceleration, you could also use it as a load balancer by throwing something like haproxy on it. (I admit: I have a little bit of a crush on its request buffering capability. Look at the Apache thread scoreboard sometime and note how much time is ultimately just waiting for clients.) And throw in varnish (with SSDs!) and your SSL-offloading, load-balancing appliance is suddenly a caching reverse proxy, too. Granted, there’s a big downside here: you’ve just moved an awful lot of components onto one single box, introducing a horrible single point of failure. At some level you’ll get this with an enterprise load balancer too, but it’s the same issue described above: it’s some sort of custom homebrew thing running on commodity hardware, so the single point of failure is pretty scary. You could mitigate it somewhat with redundancy, though.

I also found a reference to Strangeloop. Their site is light on details, but reading between the lines, it seems like, among other tasks, it might consolidate and minify CSS and JS files, etc., which can reduce multiple calls. This task should really happen when building a site, not on the fly when serving the page, but at the same time I can understand how you get there — perhaps you’re responsible for the upkeep of a site where all of the developers have left the company, or perhaps the systems and network people are sufficiently divorced from the web people…

Now if only they could make their product automatically resize images on the fly to fit the sizes described by the image tags, they could sell to Array Networks!

Leave a Reply

Your email address will not be published. Required fields are marked *