Uday Kumar examines some of the key drivers for software development companies marching toward cloud-hosting solutions. Change is the only constant. While technologies will keep evolving to help us overcome challenges, there, of course, will be new and emerging challenges.
Cloud computing is growing in popularity with industry analyst Gartner predicting that the global public cloud computing market will grow 18.5 percent in 2013 to $131 billion, up from last year's $111 billion economy. In light of this growth, I want to examine some of the key drivers for software development companies marching toward cloud-hosting solutions; I will do this by emphasizing application lifecycle management (ALM) and addressing the perceived challenges for software development on the cloud. First, I will discuss what exactly cloud computing really means and then the factors that make cloud computing compelling for most companies. I’ll also explain some of the challenges that need to be addressed in order for you to be successful using this emerging approach to IT.
Cloud computing basically means that one is executing software on a remote server, usually connected to the Internet, that a service provider hosts, rather than using a local machine maintained by one’s company. Typically, cloud computing utilizes a pay-for-use model that enables scalability, or what is becoming known as elastic services.
Some key drivers of cloud computing include its cost effectiveness because its pay-per-use approach helps one avoid an expensive upfront onetime investment to purchase servers along with the ongoing cost of maintenance. Cloud computing is convenient because servers may be accessed from anywhere as long as one has an Internet connection. Some other advantages include more effective utilization of computing resources and the advantage that every company doesn't need to employ specialized experts like infrastructure engineers and managers.
One drawback of using the cloud is that potentially sensitive user data could be stored on remote servers, which increases the risk of unauthorized access to user data.
Cloud computing provides flexibility to companies and enables them to meet dynamic business needs by being able to quickly scale resources at a relatively low cost with better manageability. Cloud resources are often categorized as Infrastructure as a Service (IaaS), Platform as a Service (PaaS), or Software as a Service (SaaS). IaaS means that a cloud company is typically just providing servers, PaaS means that a company provides more of a platform, while SaaS means that a company just provides the software as a shared resource. Providing cloud services (e.g. IaaS, PaaS, SaaS) is being done by many large companies, including Microsoft, Google, HP, Oracle, and IBM. Almost all software tools are being made available on the cloud. There are many successful enterprise cloud applications, including salesforce.com, webex, Google, and Microsoft office applications.
The software development industry itself has benefitted greatly from cloud computing. The pay-per-use approach has made the setup of many small and medium companies much easier by reducing risk and enabling low-cost scalability. With cloud computing, a company does not need to make large upfront investments in hardware, software licensing, and the hiring of IT operations staff; the company also has the flexibility expanding and shrinking as per the business demand.
Many enterprises have moved to the cloud as a viable way to outsource their IT operations and systems administration. Still, there are many companies hesitant to move their main business systems to cloud. Data security and the privacy of an organization’s intellectual property (IP) knowledge, including business systems design and proprietary software code, are the most common organizational concerns.
Agile development has also highlighted the value of cloud computing by focusing on the faster delivery of features (in meaningful chunks) over attempting to provide a complete solution to customer. Agile facilitates the delivery of a release iteration on a small cloud instance and the flexibility to scale as additional iterations are delivered.