November 19, 2012 | Written by: Mrinal Jain
Share this post:
The large amount of buzz around cloud computing has prompted many engineering colleges in India to begin a discussion around setting up a Cloud Center of Excellence within their campus. This appears to be an imperative, not only because these institutes need to train the workforce of tomorrow, but also because it promises to solve some of the resource constraints they face, as well as increase the level of collaboration they seek with other universities.
What aspects of cloud computing should students get practical experience with and how should colleges structure this? What is the minimum infrastructure needed to set up a “lab” in which students can get this experience?
Cloud computing is a new paradigm which requires business and IT to get on the same page – to have a common agreement on a final objective and to then align the IT deployment to meet this end. In an academic context, many students dream of writing an application which they can host and build a web business around, it would be most useful for each of them to understand how to do so at every level; to in fact develop and host an application at “webscale” – and by getting basic experience with building each layer of this stack, concurrent with theory in a classroom, understand the tradeoffs at each layer. I believe that this is in fact the best experience – to learn by doing something many cloud professional do in the “real world.”
Colleges should include a project that runs in parallel with formal classroom theory. As part of such a project, each student is required to build and deploy from scratch an application, which could theoretically be hosted on a commercial cloud service, over the Internet, upon completion. This requires students to not only think through what the application would do, but also specify the audience they intend to target this for; think through the architecture of the middleware platform on which it would be built, and understand how the underlying infrastructure is “assembled” to support the higher levels of the stack. Within a project of this sort, students would need to think through issues that all cloud computing professionals face: robustness, availability, scalability and, of course, security.
The first objection I hear from institutions is the lack of resources. Which brings me to the next point – what is the minimum infrastructure required to get started in a lab of this sort.
Most bachelor’s level academic institutions in India already have some IT infrastructure in place, but this is often “outdated” and inadequate for training their students on the current aspects of technology. Most times, the computer lab is limited to desktops with a small set of applications, and a low-end server that provides some networked applications. Oddly enough, the desktops, though not powerful enough to run required applications, tend to be underutilized.
The issue is that, like many corporates, academic institutes have also implemented their IT in silos. Labs are set up as special cases around a given course, or application. Colleges thus find (like many corporates) that they have underutilized infrastructure, and because each pool is tailored to a given task, inadequate resources for all tasks. What is needed is one common pool of resources (servers, storage and networking) that is adequate to meet the concurrent demand for a given set of students as needed, and flexible enough to quickly change between “workloads” (in this case the lab for each course). A Cloud deployment provides this through virtualization, standardization and self-service. Let us look at this briefly.
To create this common pool of resources, college “IT departments” need to adopt virtualization wholeheartedly. What this allows is to conglomeration of existing IT resources with newer resources as they are procured. Virtualization releases basic elements from their physical packaging – basic cores of compute become available across machines, basic banks of memory become available across servers, basic ports of networking across switches and basic bytes of storage across disks. Virtualization (management) even allows a single view of physical resources across “boxes”.
To make this consolidated infrastructure usable by students, it is important to provide “packages” appropriate to the task students are engaging with. The packages should be set up appropriate to the stage in building the “application”; so, for example when students are setting up physical infrastructure, they think in terms of the appropriate “packages” of infrastructure (given a task, what is the appropriate amount of compute, memory, storage and networking to package); when setting up “packages” of middleware, they should think through the appropriate packages to host applications, to consider how the middleware should be set up to allow for scalability and availability, among other issues; and to think through delivery mechanisms when offering a web service (a web based software application).
To provide these “features”, a cloud management layer of software is required over the basic virtualized infrastructure. This not only enables management, administration and configuration of the virtualized resources, but also provides a self-service interface through which the created packages can be accessed and used by students.
Students are already familiar with what cloud computing looks like – thanks to their use of cloud services in social networking, email and online gaming. Understanding what goes into building a service of this sort, potentially not only motivates them, but also gives them experience with the actual tasks involved in being a cloud computing professional. And if this is done alongside the learning in theory, it provides a continuous thread around which each student can understand this exciting new field.
A paradigm shift like Cloud Computing is best understood by doing. Students should learn cloud computing by engaging in the process of setting up the pieces of a cloud infrastructure layer by layer, grappling with the issues at each level, keeping in mind the final aim of hosting a web application.