The brains behind the cloud
Without entering into the realm of what the cloud is, why it’s more an evolution of technology rather than the next trend, or discussing the hardware that is responsible for service delivery; let’s skim the surface of the software that is the cloud.
Thinking critically about what we know about the cloud, software is really the “brain” behind the cloud and keeps all of the bits that make up those services properly compartmentalized. Compartmentalization insures identity, security, and a software model in the “biz” referred to as multi-tenancy. This can range from anything as simple as a username and password, to the amazing and powerful engine being developed at Wolfram Alpha to visually map the ends of the Facebook landscape for every user.
Let’s take a step back and build a foundation of some of the software that makes some of the incredible technology we see in Star Trek actually possible today. We could get into a laundry list of technology that your average software engineering graduate is probably expected to know these days, but we will save that for another day (sorry college grads, study up, you’re going to run into these eventually). For now I’ll try to stick with the new-ish heavy hitters in the software world.
Yeah, ok, you might have just heard those four characters in your head and instantly thought that you don’t need to read any further because you know everything there is to know, but chances are you might not know anything about the semantic web or linked data. Tim Berners-Lee invented HTML, and if you haven’t seen the amazing TED talk where he talks about where the data that you populate on the web every day is going, and the relationships found therein, then make sure you make time to check it out here. Semantic web, linked data, and other more ratified standards like HTML 5 are changing the
Internet World Wide Web (pet peeve when people mix the two) into an ever more evolving resource. HTML is the basis for the WWW. The WWW is the basis for cloud software-as-a-service delivery.
Hypervisors are the software that allow a piece of computing hardware, usually a server, to be leveraged past the point of a one-to-one relationship between a server and an operating system like Windows, Linux, or Unix; essentially software that allows multiple OS instances to be stuffed inside one server. In today’s ever expanding age of data growth, the effective utilization of the resources responsible for cloud delivery are getting ever more demanding. Not only are there the racks and racks of hardware needed, but there is also the energy generation, cooling, raw materials, and manpower to keep the Cloud online. If you want an idea of the scale of the industrial complex required, Cisco has built one of the largest and most technologically advanced data centers to host their ever growing cloud. Now, picture a hypervisor piece of software on each one of those servers in each one of those racks running anywhere from 20 to 200 operating system instances. CSC did a great study on the expansion of data required to feed the world’s data hungry society.
Now, not only is it a requirement due to ROI calculations based on server costs, but it is an assumption by major vendors that server hardware will be utilized to its fullest with the use of a Hypervisor. Vendors will happily load any of a small batch of hypervisors on your system before it is shipped. The expectation is that if you are in the IT industry, you at least have a basic understanding of how to leverage the power of hypervisors and virtualization to fully gain the most from expensive equipment purchases.
Being a .NET developer and in constant pursuit of new overarching web based technologies, I have built a few cloud based applications on top of Microsoft’s Windows Communication Foundation (WCF) and more specifically the WebSockets implementation found in .NET 4.5. WCF allows for client to server, server to server, and even client to client based communication. What’s that and why does it mean anything in the context of the cloud? We talked a little about HTML earlier and it’s important to distinguish that HTML is stateless, i.e. once a page is rendered in your web browser, the content is now static on your computer and the server releases computing resources to go serve other requests from other users just like you. Stateless connections between a web browser and a server make it hard (not impossible, long-polling, yuck…) to do things like update text in your browser when a value on the server updates.
For example, when a stock price changes, or when your closest Facebook friend sends a friend request to someone else in your network, then Facebook notifies a third party of that change. WebSockets changes all of this as it allows for a constant connection between a web browser and a server without the need to worry completely about the firewalls and routers on the network in between your browser and the server on the web. It does this without any change to the web as it uses technology that has been present on the web for years; the only requirement for WebSockets is that you must use a browser that understands the HTTP upgrade request (#1 reason to update your browser). The WebSockets API is currently being ratified by the W3C and is already being implemented many different places on the web such as online gaming (Laugh all you want, it’s already a $12 Billion dollar a year industry in itself).
Switching gears and I’ll lump this last one in with WebSockets, Node.js. Node.js is an extremely powerful, and more importantly in the case of the Cloud’s hyperscale, lightweight platform for delivering web content. When I say powerful, I’m talking building a web server that can do file transfers from a static WebSocket connection in nine lines of code completely from a browser!
Cloud delivered software, software-as-a-service, and the software based technologies emerging everyday are empowering today’s workforce through self-service, and ever more changing the environment that we all live within. What I wonder (and Wolfram Alpha could never predict) is what will we be using after the Cloud?
Written By: Dave Thomas
Team Lead, Rapid Action Development, TOSS C3