Several weeks ago I gave a talk called “Regarding Clouds, Mainframes, and Desktops… and Linux” at LinuxCon in Portland (video, slides). Since then I’ve reprised parts of the talk several times, including a couple of times for -only audiences. I’m going to put up a few blog entries that expand on some of the slides.
Who is the user for cloud computing?
I think many of the discussions of cloud computing focus too much on the implementation side and not enough on who the potential users are and what will be their needs. Many users don’t have or need a very precise definition of “cloud computing.” Indeed, I think that for many people it simply matters whether their applications and data live on their machines or devices, or if they are run through a browser or reside somewhere out on the network, respectively.
Here are some possible users for cloud computing. Feel free to suggest more in the comments.
A user of a virtualized desktop on a thin or fat client.
This type of user could employ software such as Virtual Bridges VERDE server to run desktop applications on a powerful server somewhere, but have the screen output delivered down to a local device such as a netbook, laptop, or desktop machine. While today many people speak of virtualized Linux desktops, I can imagine a future where many organizations run native local Linux desktops and then virtualize down from the cloud a Windows desktop for only light and occasional use of applications that have not yet been ported or replaced.
A non-technical end user who accesses services through a browser or via applications such as disk backup to remote storage.
This is a very broad view of how a user might use the “cloud.” Here he or she would have a sense that instead of running a local application, software like a word processor or CRM front-end is used in a browser like. These cloud-based applications are helping to reduce users’ dependencies on working on any particular operating system, and therefore allowing more and more use of Linux and Mac/OS X in businesses and organizations.
On the other hand, traditional desktops can be extended to use the cloud for remote storage. For example, I use JungleDisk to automatically backup certain folders and files nightly to S3. (They also support Rackspace Cloud Files, which helps make my point.)
A “cloud choreographer” who strings together cloud-based services to implement business processes.
Here I’m borrowing the notion of choreography from web services or Service Oriented Architecture (SOA). The idea is that new applications are constructed from program logic and across-the-network calls into cloud services. It starts to get interesting when more then one cloud is used, and therefore further emphasizes the need for open standards and cloud interoperability. Security issues are always important, but privacy ones strongly enter into this scenario because of the possibility of improperly sharing information across services and clouds.
This case most clearly shows where Software as a Service (SaaS) might be subsumed into the general notion of cloud computing.
A service provider who needs to handle peak load demands.
A service provider wants to have the right level of software and hardware resources to provide an acceptable quality of service to his or her customers. Cloud computing can help deliver this by allowing the service provider to purchase and configure datacenter resources for average use, and then use processors or storage from the cloud to handle spikes.
A developer who employs dynamic resource allocation in clouds to speed application or solution creation.
While a software developer might spend a lot of time thinking and working in an integrated development environment where the need for computer resources is small, other activities such as compiling, linking, and testing may be very computer resource intensive. For those times, a private or public cloud could be used so that local capital expense for servers can be minimized.
It’s very important to observe and measure how and when developers use computing resources before contracting for cloud services. For example, does an entire workgroup of developers need the resources at the same time, or do the individuals need fairly randomly? In international efforts such as computer animations, can one shift of developers use resources no longer needed by others in a different time zone?
An IT system administrator who does not build clouds but deploys onto them, probably in addition to traditional managed systems.
This is the lowest (“closest to the metal”) level of user who uses clouds but does not build them. Someone else configures the datacenter but it is this sysadmin’s job to decide how to best deploy applications onto either traditional dedicated servers or shared cloud servers. He or she would need to understand the resource needs of the applications, as well as the security parameters.
As to the latter, can a given application be run on the same physical node as other software, or must it need to be isolated? How do corporate instructions about data security affect the decisions about how to deploy applications or place storage? So here cloud becomes an additional IT option with its own characteristics that must be managed alongside traditional IT deployments.