With immediate availability, scalability, and dramatic cost savings, cloud computing is revolutionizing the way business works. While the economic justifications for this new technology cover a broad range of IT initiatives, developing software is perfect for the elasticity offered by the cloud.
Development and Cloud Are Made for Each Other
Today, development teams are pressured to deliver solutions on much shorter schedules while their budgets continue to be squeezed. The growing adoption of agile development methodologies enables development to code software faster; however, the fast and iterative agile practices also have created challenges in the downstream development processes—building, testing, and deployment of the software. Not only does the development team have to run these processes many times throughout the day, but it also needs to provision resources—lots of them and very quickly—to support the process tasks.
Enter the cloud. The scalability and elasticity of cloud computing surmount many of the problems that have traditionally afflicted software development and its insatiable need for compute resources. There are three primary reasons that the software development process is tailor-made for the cloud:
- Highly variable workloads: Because each software development project likely will be in its own lifecycle state, collectively these projects will impose an ever-changing set of resource demands.
- Instant access: Even though the overall workload will vary, one thing is certain—any required resources must be available and correctly provisioned immediately.
- Need for large resources for brief periods of utilization: In general, the build-test-deploy process makes use of a large set of resources (such as for build and test tasks) for a relatively short period of time.
While deciding to move software development to the cloud is easy, the process of actually moving development to the cloud needs to be well thought out, or else development (and IT—the internal team that provides resources or the external/public cloud vendor) will end up frustrated, and the enterprise will not receive the full value out of its cloud investment.
Here are four things to keep in mind as you move toward cloud-driven development.
1. Virtualization Alone Does Not Make a Cloud
Virtualization enables the cloud, but just having access to virtual machines isn’t enough. Most cloud implementations leverage virtualization and user self-service as their two cornerstone technologies. Virtualization dramatically improves the utilization of the underlying resource and enables IT to quickly provide standard resource templates—servers, applications, databases, etc.—to users. But it is self-service that provides users resources on demand. Users can request a new server and voila—a new virtual machine is provided instantaneously. Users no longer have to wait for hours or days to get the compute services.
2. Cloud Promotes Standardization, While Development Requires Customizations
The cloud is all about standardization. Cloud enables IT to efficiently deliver and manage its resources by standardizing (as templates) the basic resource configurations and making those available in a turnkey manner. This approach is attractive because it provides maximum ROI on existing resources, reducing one-off procedures, and it makes automated management possible (most public cloud vendors also provide standardized system and software templates). Furthermore, once the initial infrastructure templates have been established, IT can let authorized users create and use their own instances via self-service provisioning portals, reducing administrative overhead.
While cloud provides standard IT compute resources, developers typically want to customize the resources to requirements of the software production process. This may involve configuring the standard IT-instantiated resources deploying new dev or test-specific applications. Just as importantly, developers want these changes to be done automatically without manual interventions.
Herein lies the dev-IT gap: What the cloud natively provides needs to be customized to meet the need of development; automation is the only way to solve this challenge in a scalable way.
3. Automation Makes a Smart, Development-Focused Cloud
Put plainly, development on the cloud doesn’t work without automation that encompasses not only the application development lifecycle, but also the cloud infrastructure itself.
Automation makes the cloud utilization efficient in several ways:
- Automated self-service: Developers want self-service, but not in the typical web interface sense that limits them to setting up one resource at a time. In today’s fast-paced and agile software production process, developers need the ability to set up resources instantaneously and in context of the software production process. For example, developers want build systems to be automatically provisioned upon start of a build process and torn down upon successful completion. The automatic provisioning of the resources ensures effective utilization of the cloud resources.
- Automated customization of resources: Automation ensures that the cloud resources can be quickly customized to the specific needs of development. Now developers can spend their time compiling and testing their software instead of spending countless hours configuring the system (again and again) for the process.
- Full visibility of the process and infrastructure: Automation also ensures that development has full visibility into the process and knows what tasks were run on what resources and the results of the run. And if the process failed (a build or test run had errors), automation will capture the result, application code, and the infrastructure configurations and pass them to the right teams to quickly troubleshoot the issues.
If done well, automated resource management can be so seamless that developers can help themselves to resources without any knowledge of what is going on behind the scenes. Meanwhile, an automated development cloud gives IT complete control over the resources and visibility it would not otherwise have. The end result is that developers and IT can work together more easily and happily than ever before.
4. Start Small—Prove Value and Future Proof for Success
Moving your software development to the cloud is great. But it’s a big change and one best taken a step at a time.
First, choose the right tools to work with. Today, there are several cloud management solutions from commercial vendors such as VMware, Eucalyptus, and Electric Cloud and open source cloud solutions such as OpenStack. The best solutions provide end-to-end development process automation that integrates your development process to your infrastructure to enable efficient use of your cloud resources. You may have other essential requirements that should be part of your evaluation process.
Once you’ve chosen your tools, start with one pilot project. Pick a project that aligns well with cloud benefits—ideally a project that needs lots of resources for short bursts of time. Once you’ve seen how development on the cloud works for that project, you can expand to the rest of the organization.
One of the customers that I work with—a major financial services company with development teams located around the globe—chose to implement a development cloud on a voluntary basis, allowing individual teams to choose whether they would utilize the new cloud resources for development. As it turned out, the speed and self-service offered by the development cloud was so attractive that more than 95 percent of this company’s teams have adopted it to date.
With proper implementation, application development on the cloud can revolutionize an organization’s development cycle. Many of Electric Cloud’s customers have reduced their application development lifecycle from days or weeks to just hours with the implementation of a smart development cloud. Indeed, moving development to the cloud is a big transition, but the rewards are well worth it.