Sometimes, the things that drive the market just sort of creep up on you. Surprising things.
We’re all here talking about big data-this, big data-that. Storage management. Performance. All of those things. They’ve traditionally often been all about scaling UP your application (bigger servers, more power, etc.). I know I’ve had the discussion with people many, many times about considerations for scaling – whether you’re going out or up – and the implications of that for your environment and the applications you’re trying to support.
This thought process came about because of a post to TechRepublic (link here) about why they think Oracle is struggling to compete with Amazon AWS and Microsoft Azure. Spoiler: they see Oracle as more accustomed to scaling UP.
I think both elements (out and up) are important with cloud-architecture, but perhaps in different ways. It seems to me that supporting baseline performance and functionality. For those things you can count on and that are constant, you size the systems you’re using and make sure they can handle the known load. This has been a pretty typical thing. When you’re moving to Azure, for example, there are tools that will help you choose the size and functional capacity of the database server and such based on historical data. Even there, you’ll typically cut off the exception highs and lows and settle in somewhere with room to breath but cover your requirements.
However, when you bring in flash crowds or media campaigns or other things that drive spikes into the traffic and requirements – or even just the ebbs and flows of business – scaling OUT is critical. The ability to add capacity (and yes, I know, you can continue to scale up on-demand as well in most cases) – and do it by adding servers behind load balancers, database engines to process large workloads, etc. – this is the domain of scaling out. In fact, the whole “pay only for what you use” thing is really all about that scaling action.
I’ve always been more of a fan of scaling out. I’m not sure why, I suppose it comes down to a feeling of managing the growth and capacity. For me, scaling up to a larger server or whatever tends to leave so much capacity sort of flopping in the wind in many cases, especially after the spike is over. With scaling out, it hits me as being easier to pull back from the expansion – to remove servers from the mix as load comes off the application. It’s a fine line and I get that you can pull back from larger instances too, but often different types of steps are involved, and the process of scaling up can incur other loads (just because you can process it doesn’t mean your network connection isn’t saturated, for example). Just more to manage.
The irony is that scaling out was the red-headed stepchild of load management for so long. I remember when MySpace was on fire, they were scaling out all the time. One of the early adopters to really embrace commodity servers to provide additional capacity, vs. big, huge, heavy-duty servers. It was thought to be ground-breaking and they had to solve all sorts of challenges to pull it off.
To see it now be a key indicator in sustaining a competitive stance as a cloud provider just shows that hosting is like fashion. Keep that tie around long enough, it’ll surely come back into style.
At least that’s what I keep hoping.