Most of us have heard about cloud computing at some point over the last few years. The experts say it promises to become the network of the future by delivering an increase in innovation and the rate at which applications are deployed. Cloud computing will also lower costs and increase business agility. Overall, ‘The Cloud’ will completely transform the way applications are designed, built, and deployed. This in turn means lower costs and the delivery of applications in ways never thought possible for the average person.
While there are many reasons people feel cloud computing will succeed, some of the most prominent are discussed here by focusing on the established trends on which the cloud is built.
Virtual servers have gained great popularity over the last several years because they offer the flexibility of being able to deploy and redeploy software stacks without being tied to a specific server. This enables servers to provide a pool of resources that can be allocated on an as-needed basis. Here the relationships among these resources can change dynamically in order to meet not only workload demands, but business demands as well.
When applications aren’t tied down to a specific server, they’ve essentially become detached from server deployment, in which case applications can be deployed and scaled at an alarming pace without having to first allocate a physical server.
Virtual machines that include software that has been partially or fully configured to perform certain tasks greatly enhance the ability to create and deploy applications quickly. Virtual machines and their appliances used as standard deployment objects is a crucial feature of cloud computing.
Cloud computing uses a pay-by-use, on-demand, self-service model which is an extension of some current established trends. Virtualization happens to be a primary ingredient with this model in that it allows organizations to quickly create copies of existing environments with very little effort. This sometimes involves the use of multiple virtual machines in order to support different activities like development, testing, and staging. Since they all can coexist on the same server as a production server for example, the overall cost is greatly reduced.
A similar concept can be applied to applications which can be deployed in virtual machines and exposed for use on the internet. This is a very lightweight and flexible deployment model where the software that has been made public can easily be retired or officially released based on the publics’ response to it.
Cloud computing uses an extension of this concept while implementing a self-service model where people can purchase computing cycles on an as-needed basis. A web interface is then used to create virtual machines and independently create the appropriate network relationships to accomplish the goal. The intriguing part of this is that clouds work on a pay-by-use, or more appropriately, pay-by-sip model, where an application may live to perform a certain task for only minutes, hours, or longer. Contrary to today’s world, these clouds are built under the assumption that applications are temporary and the billing is based on consumption (e.g. CPU hours used, amount of data moved, or amount of storage used).
In the past, the infrastructure was something that was laid out to include various applications which would be then assigned to a particular server, and the development of the applications revolved around this. Also laid out was how everything would be managed, interconnected, and scaled. This was all predetermined until the cloud came along. With the cloud, developers can not only control the initial composition into virtual machines, but more importantly, how it scales and evolves to meet workload demands.
As a developer, I see mind-numbing potential here. For example, let’s say I’m using the Java programming language to write a calculator application. I expect that this application will be used heavily once exposed to the public, so I have to account for that during my design and development phase. In Java, typically I would write the code in such a way that it could spawn off different instances (or threads) of itself as user volume increased. This is something limiting and error prone, not be mention, it’s not very scalable. With the cloud however, I can write my application to leverage services in the cloud that will allow the application to scale when the demand is there. In other words, when more people start using the application, my application will respond eloquently by providing not just additional instances of the application, but more virtual machines to accommodate all users. This could be created in such a way that thousands of virtual machines are created on the fly bringing the scalability to infinite levels.
Applications and architectures have always had a need to be composed. The time required in assembling and configuring them is usually equivalent to the amount of time spent programming them. The approach to cloud computing is service-based where applications and architectures are made available as services that are independent from predefined configurations. In other words, developers can now spend time focusing on development rather than the many mundane configuration and assembling tasks involved in putting together and releasing an application. What this would mean for the average person would be lower application costs and more feature-rich applications.
Open Source Software
Open source software plays a key role in cloud computing because it allows basic software elements to be exposed and easily enhanced. By layering open source products on top of one another (e.g. open source software over open source operating system) the time and ease involved in deploying applications can be greatly reduced. This is due largely in part to the infinite number of open source combinations that can be deployed and most importantly, exposed and reused. In the past, a combination of software and an operating system such as Spring and Weblogic would have to be individually configured for each person who wanted to use this combination. In the cloud however, combinations like Spring and OpenSolaris could be exposed in the cloud and reused by anyone who needed it. The reuse factor here would cut development time by at least 30%. This in turn would increase innovation and greatly drive down costs for the consumer.
In the end it appears that cloud computing is here to stay. This article provides a number of reasons why ‘The Cloud’ is relevant along with some of the proven trends it’s been built on. While there are many other reasons that may contribute to the opinions of others, I for one have found these reasons alone to be enough in convincing me that cloud computing is definitely our network for the future.