The next time your Ayn Rand worshiping IT help desk analyst tries to start an argument with you about how bad government is and how we need "free market" solutions for everything, try this one.
Ask: Do you know what else is socialist?
Then explain to him how cloud computing, the IT paradigm on every TV these days ("To the cloud!"), the paradigm that businesses the world over are flocking to, is all about shared resources.
Full explanation follows.
In the early days ...
In the 1960s and 1970s, computing took place through mainframes or mini-computers, a centralized model. User terminals were what they referred to as "dumb terminals," vt100s or vt220s, which basically was a monitor and a keyboard. The "dumb terminals" had no processing power of their own. All of the processing took place on the mini-computer or mainframe and then was output to the dumb terminal or another output device such as a printer.
Let's call this the original socialist model.
The advantage of this model was that resources were used very efficiently. As jobs came in, they would be queued up through the centralized mainframe/mini-computer and then run. IT staff only had to maintain and administer the mainframe or mini-computer so maintenance and support were relatively easy requiring few resources.
The problem with this model was that users could only run applications which were installed on the mainframe or mini-computer. And to get these applications installed was often a lengthy process as all requests had to go through a central system administrator.
The 80s and 90s ...
Cue Van Halen’s “Panama”.
As PCs started to become more prominent in the 1980s and 1990s more processing power was developed, delivery models changed to meet a demand by departments for greater "freedom of computing". Different departments wanted different applications and new computing models were introduced to take advantage of PC processing power and cheaper computer platforms. Applications could be run on a client-server model, with the main database on a back-end server and individual PCs running an access client application. A great example of a client-server application is Microsoft Exchange/Outlook e-mail. Exchange runs on the back-end server and takes care of e-mail routing, delivery, and address books. Outlook is the client which runs on your standard desktop PC.
The benefits were great. No longer was there a central admin lording over his own IT fiefdom. It freed up departments and even individuals to run the programs that they wanted to run and quickly displaced the mainframe. Applications proliferated with the spread of cheap computing. Data centers which were once just a single machine became rooms full of servers connected to clients through a data center network. Departments could be more flexible with their applications. The trade off was increased complexity of administration and support and poor use of resources.
This brings us to the picture below.
This slide illustrates a traditional data center with associated applications by function. As you can see, each department's applications (Corp, Finance, Marketing, HR, & Engineering) all require their own infrastructure. Each requires application servers (for processing) and also potentially additional storage. This leads to poor utilization of storage and processing power.
What if, for example, you could combine all of your processing power and storage and allocate it to applications as the applications needed processing power and storage?
Here's where it helps to introduce a concept called virtualization. Virtualization is the idea of creating a virtual computer from shared components. For example, a virtual machine might be allocated 100 GB of memory, but this memory might come from different storage units rather than a single storage unit. The virtual machine might also have a virtual processor that acts like a physical Intel (or other brand) chip, but consists of parts of different processors acting together like a single unit. Virtualization allows for near dynamic allocation of resources because software can look at available resources and apply them to virtual machines as needed.
Here's what a cloud model using virtualized resources looks like:
In this picture, applications are shown running on virtual machines with the processing servers and storage as a pooled resource in the data center. At a high level, without getting into the details of what is needed for the yellow Cloud Infrastructure Service, this is what a cloud architecture looks like.
Why is cloud called cloud?
The term originally evolved from the use of a cloud in a network diagram to represent a network of unknown size or domain.
In the example above, the shared resources could be considered to be pulled from a "cloud". They could exist in one data center, they could exist in several, they could technically exist in part with a service provider and partly in a customer's own data center. Cloud basically becomes a metaphor for a pool of shared resources connected by a network. These resources can be "pulled" from the cloud and dedicated to a given application or user at any time.
The benefit of cloud computing is that it combines the flexibility of the client-server model, with the efficiency of earlier, centralized models. Resources are better allocated and IT can more easily allocate resources and deploy new applications by simply allocating "virtual machines" rather than purchasing new infrastructure.
How does this relate to socialism and capitalism?
In a mainframe world, everything is centrally planned and executed. It's a bit metaphorical, but we'll call this the socialist model. In a centralized model, you’re going to use resources most efficiently, but the trade off is centralized control.
In a purely capitalist model, the client-server or PC model, you’re able to do more of what you want immediately, but the trade off is inefficient use of resources.
In a cloud model, you get the best of both worlds. Efficient use of resources as well as ease of application distribution to end users. Why? Because your hardware resources can be pooled and then reallocated as virtual machines.
Back to the Ayn Randian IT guy ...
Ayn Randian capitalists believe that a completely deregulated capitalist model is always the best model for any situation.
They ignore any pitfalls of "free market" solutions- for example, the conflicts of interest in the health care field between turning a profit and providing quality care to patients. Or, how private sector health care insurance let some 30 million people slip through the cracks.
Plenty of other examples exist as well. Think about what would happen to your police force if it were privatized. Can you imagine the police working for the highest bidder? Or utilities set up to serve a public need becoming private sector monopolies. Or the need to actually have an independent, outside organization regulate the financial industry.
This is a religious viewpoint (ironic because Rand herself was not a strong believer in other religions).
It's as religious as saying that a centralized model is always best. And if you can relate this back to people in terms they can understand, they might just see your point of view.
If you were in charge of IT for a major Enterprise company, your job would be to look at the different models and decide which is best for which situation.
Think about how well capitalism has performed in the area of consumer goods, for example. If properly regulated and controlled, capitalist models allow people and the laws of production to determine prices and, in some respects, their own success.
The trick is to look for situations where each model or blend of models works best.
Not to religiously argue for completely deregulated markets and non-government intervention.
What we need is a cloud computing solution for government. A solution where we get the best of both worlds, public sector and private, and we let each perform where they're best.
END NOTE: I know, I know. I’m playing fast and loose with the metaphors and the definitions of cloud, socialism, and capitalism. To clarify, I'm talking about a particular kind of cloud service called Infrastructure as a Service. In terms of "capitalism" and "socialism", what I’m comparing is more what these two terms have come to mean to the average person here in the U.S. - socialism, as a term for any sort of centralized government program and capitalism as a term for decentralized private sector solutions. Still, I think the analogy is a good one that helps explain where and when each type of solution has the potential to be most effective. This is the type of conversation I wish we had more of in the national media instead of how the argument is typically portrayed: a single choice between government and the private sector. Why not evaluate where the private sector does well and the public sector does well?