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.
Faster delivery can be achieved only by enabling the development team to work more effectively with the IT operations team. Development focuses on delivering new features while operations focuses on ensuring reliability of systems and services. Both are important. However, there is often some friction between the goals of development versus IT operations, which has led to an emerging set of principles and practices known as DevOps. DevOps is an approach that complements agile development by improving the way in which development and operations interacts. DevOps stresses the importance of effective communication, collaboration, and integration. Many DevOps practitioners are developing excellent automated procedures to provision servers, which is essential for cloud-based computing and puts a strong focus the importance of automated application deployment. Application lifecycle management is a key driver for both development and operations by providing excellent version control and workflow tools. Many of these tools are now available as cloud-based solutions as well. Other common tools include build and deployment automation along with code review and testing solutions.
One of the most successful areas for the cloud has been the very popular customer relationship management (CRM) systems that are used by many companies today. These cloud-based solutions must comply with industry regulations, including Sarbanes-Oxley-required controls for securing customer information, traceability, and accurate reporting
Companies have to invest a lot of time in order to implement a full solution that satisfies all of their requirements. In my experience, many companies cannot immediately implement a full-integrated solution. It is often much more reasonable to approach implementations in an agile iterative manner and this, once again, is why cloud computing is essential for many companies to successfully meet their business requirements. Implementing different tools from different vendors can be very difficult so it is very common for companies to outsource essential systems, including product lifecycle management (PLM) and enterprise resource planning (ERP) systems. Some technology firms will invest the time and effort to achieve the expertise to support these solutions while others will outsource to stay focused on their main business interests. For those companies that want to focus on the areas that they know best, the cloud is the best choice by allowing them to utilize complete platforms (PaaS) or software systems (SaaS) without supporting them in-house.
Still the challenge of data security and privacy exists and is a prime concern in the cloud. Engineering and IT directors have to make the best decision based upon the interests and focus of the company.
Here are my suggestions for improving security.
Cloud service providers need to focus on implementing security measures to ensure the safety of the customers' data. The credibility and reputation of the service provider is largely based upon the security of the data. Incidents, such as data security breaches, can put the service provider out of business. So it is in the interest of the service provider and customer to implement the most advanced data security techniques.
Privacy is another matter. If client data is disclosed, then once again the service provider will justifiably be open to severe consequences, including legal action, and at the very least, loss of paying customers. Once again, secure computing procedures must be implemented and supported.
Companies can consider encrypting all data after passing through the internal firewall and storing the data as is on the cloud. Encryption does create some significant computing overhead during data retrieval (decrypting), but is an effective approach if implemented with modern techniques that address and avoid potential performance issues.
Secure cloud-based solutions can be used effectively to store intellection property and may even be more secure given the fact that some companies cannot afford to employ full-time security experts.
Change is the only constant. While technologies will keep evolving to help us overcome challenges, there, of course, will be new and emerging challenges. I do see many companies, including large enterprises, slowly marching towards cloud hosting solutions and I believe that the advantages far outweigh the risks. By understanding these issues, you are better positioned to join in the march towards the cloud, with all of its benefits and capabilities!