Divide et impera (divide and conquer): people learned this approach thousands years ago. If something is complex, split it into smaller units, separate them from each other and control them individually. It usually works. Instead of dealing with tons of small, assorted items in your garage, you put them into boxes and place boxes on shelves, then everything is nice and easy to find. But there is one problem with this technique: at some point you start running out of shelf space. Then you realize that some of the boxes are empty and some are full, and you are paying the price for ease of access and control by being less efficient in terms of garage space.
What do you do when you don’t have any more space in your garage and buying a bigger house is out of the question? You start consolidating. You bite the bullet and decide that instead of storing your kids’ yearbooks in individual boxes, you just stack them on the shelf and free up some shelf space for other boxes, all at the expense of spending a bit of extra time trying to get to the needed book. So you are improving your space efficiency by spending more time on manual labor.
This game is never-ending. When you realize that it now takes you hours to get to the needed items, you start bringing in boxes again. And then you run out of space again. So building boxes or walls may help you to gain better control (so long as you don’t mix items of different types), but every wall you build reduces your efficiency.
Modern IT is no exception, and this age-old technique works there as well. First, virtualization came and enabled the sharing of resources, improving data center efficiency by orders of magnitude. But then workloads of various types started competing for these shared resources, creating totally unpredictable behavior and application interference. So smart admins started building walls: creating data centers and clusters to isolate different application, administrative, geography, security and business functions into separate partitions.
It’s a pretty picture and looks exactly as one’s own garage, and with every function living in a separate cluster (VDI apps never sharing storage with databases), performance is predictable. But like the garage shelf, data center floor space is finite. At some point certain servers are underloaded and others are overloaded, but the existing practice of wall-building and fear of performance impact makes it hard to share.
This is a vicious circle. Why is it non-trivial to break it? Because every control decision is made by humans.
Cluster boundaries are built for humans to make it easier for humans to control. The human mind is limited in its ability to focus on a large number of items at the same time. That’s why every meaningful partition, like a cluster, usually contains only a handful of items that look and behave in the same way. Then a human admin can make a decision with some predictable result.
What kind of walls do people create in their data centers? They separate load by a business function: say, all ERP apps run in one cluster and all customer-facing apps in another. Then, within a function, walls are built to avoid sharing too many data stores, as the more one shares, the more load interference may occur. Software licensing may come into play—for example, certain databases are licensed per physical CPU socket, and there is a limited number of DB instances per physical host and so on. Thus, many constraints limit workload placement and sizing decisions, and these constraints create intricate boundaries in a data center that don’t always look as simple as cluster boundaries. And even if clusters are small, finding the right sizing and placements becomes a nontrivial task for humans.
Enter SDN: to avoid complexities in setting and configuring various network devices, SDN allows a user to create one big, shared network space so the workloads will have no boundaries. This is great. But it eliminated only one constraint, the network boundary—all others mentioned above still exist. Until they are eliminated, there is very little gain in using SDN in highly partitioned environments (clusters, provisioned storage, business functions, load types, licensing, security, affinity—you name it). So are you ready to use SDN solutions like NSX, or do you still need to solve a bigger puzzle?
How can we break the vicious circle? Create an environment focused more on enabling applications to run well and efficiently, rather than focusing on making people feel comfortable. To do that, eliminate walls and create one big flat space with shared resources so the cloud will have its ultimate meaning: a single, huge cloud space with no boundaries.
But how do we get from here to there? First, start by defining your data center in software. Then use software, not people, to drive the decisions in this shared space. Ultimately, control everything with software. The software-driven data center will begin by building bridges that cross the walls humans created for their own comfort; software-driven control will eventually eliminate all the walls and open one big, flat cloud space for all applications.
Creating a data center built for application performance rather than human comfort is no simple task. It is an important but challenging road to the ultimate goal of agility and cost efficiency that software definition enables. It starts with using software to identify the existing constraints, so you can understand how much they truly cost you. Next, it uses software to eliminate the most expensive and least necessary of those constraints to drive greater efficiency, such as moving loads across cluster boundaries without concern. Ultimately, however, to truly become agile and efficient, one must move to using software to control this flat space with no human intervention—truly software-driven control.
I won’t promise that it will be easy, but it’s possible today. And it’s a lot less painful than reorganizing the garage one more time.
About the Author
Before joining VMTurbo, Yuri Rabover managed the Advanced Solution group in EMC’s CTO office and worked closely with EMC’s Architecture and Applied Research teams in prototyping and innovating across a broad range of technology stacks and solutions. Yuri joined EMC with the acquisition of Smarts, where he had a long and diverse career: he served as a member of the founding team, managed engineering and product development, and was responsible for technology partnership development, managing relationships with strategic accounts.