Electric Cloud provides solutions that automate, accelerate and analyze software build-test-deploy processes to optimize both physical and virtual IT environments.
Q: What are the biggest build and test challenges you are hearing about from your customers?
One of the reasons we are so pleased to partner with Perforce is the increased adoption of Continuous Integration. Two or three years ago CI was something many teams were thinking about, but hadn't really adopted. Now it's more of a rule than an exception. ISVs seemed to be the early adopters, but now financial services and insurance companies, game developers, and embedded application development teams have adopted CI. However, that's not to say that everyone is doing CI well, or particularly effectively. Many teams find it difficult to scale CI, and some find that CI has unintended consequences such as continuously broken builds.
Challenges with CI make what we call "preflight" builds so compelling. A preflight build occurs when developers execute builds and preferably some set of unit tests prior to committing code to the SCM system. The developer checks out the tip of the release branch, overlays his changes from his local workspace, and runs build and unit tests. This reduces the likelihood that they will introduce errors during an integration build and ensures that issues are identified as quickly as possible, without impacting the rest of the team. We have a mutual Perforce/Electric Cloud customer who switched to a preflight approach and reduced broken builds by 90%.
Preflight builds differ from a developer testing and running a on his/her local machine prior to committing. Often, the OS or tools on the developer's local machine are different from those in the production environment. So you get the "It worked on my machine!" phenomenon when his/her change winds up breaking the production build. Preflights depend upon developers having access to production-quality resources. Our ElectricCommander/Perforce integration automates this entire process, including resource provisioning.
We think that an integrated SCM-build-test infrastructure is one of the biggest development trends for 2009. Agile development and today's need to squeeze every ounce of productivity from an existing development organization in this tight economy are leading teams to examine the "back end" of the development lifecycle (i.e. once code is committed) for productivity improvements and cost savings. They want seamless processes, a centralized, easy-to-manage infrastructure, and fewer silos between development functions.
Q: How does Electric Cloud fit into the application development lifecycle?
Electric Cloud covers the build-test-deploy phase of the application development process—what we call Software Production Management. We provide solutions that automate, accelerate and help analyze these tasks. Our ElectricAccelerator® offering is uniquely able to accelerate software builds by as much as 20x. The impact of faster builds is dramatic. Imagine going from a once-daily or once-weekly build to once every 30 minutes. Or even better, every time someone commits code to a specified depot in P4. It is so important to "fail faster"—the earlier you can identify and correct errors the better.
Our other solution, ElectricCommander®, removes a significant bottleneck for software development by automating build-test-deploy tasks. This is where we are tightly integrated with Perforce. Automation helps to make Continuous Integration possible, and helps development teams to save money and time by eliminating manual tasks such as writing and maintaining build scripts.
Q: Tell us about your Perforce integration.
ElectricCommander features a Perforce integration to support Continuous Integration and preflight builds and tests. Using a simple template with drop-down menus, users can select which SCM branch to use for the build, which client workspace, and even which defect tracking ID is associated with the procedure. These procedures can be predefined and reused across teams to reduce redundant work. We also have an integration which gets code out of Perforce during a build. The integration records the changelists committed since the last build, including the developer notes on the changes. This becomes part of the build record in ElectricCommander.
Q: You are also a Perforce customer yourselves – tell us about your implementation.
We eat our own dog food here at Electric Cloud. In addition to Perforce for source control and JIRA for defect tracking, we use our own solutions to automate and accelerate our build-test-deploy procedures. We chose Perforce because it was simple to use, fast (particularly useful when working on the road or from home), and because its unique architecture made multiple releases and multi-level development lines a reality. We grew fairly quickly from a one-product, one-team company, to a multiple- product, multiple-release, multiple-team organization. So we set up a system where (a) we could leverage multiple "swim lanes" for software production, and where (b) we could support multiple teams with minimal administration via a centralized build and test "service." Here ís how it works:
- We have a single P4 server with depots divided by product.
- Projects are branched as late as possible, usually just before code freeze.
- The Perforce/JIRA integration allows the team to associate JIRA issues with Perforce changelists or link them directly with Perforce jobs.
- Our developers all do preflight builds and tests, prior to committing code, on machines that feature all of the operating systems and toolchains we support (many of these are virtual servers, which have saved us a bundle on hardware costs).
- Since we do preflight builds, developers generally checkin to the main branch. On occasion we will create a feature branch.
- When code is checked into a specified depot within Perforce, a build and test procedure is automatically invoked by ElectricCommander.
- The build procedure is run on an ElectricAccelerator cluster, for massive parallelization and fast throughput.
- Perforce then updates the JIRA issue as appropriate ("in progress", "complete", etc.).
This infrastructure has helped us transition to a "fortnight" (every two week) milestone approach, which has in turn improved software quality and allowed us to deliver more feature-rich product releases.
Martin Van Ryswyk is the VP of Engineering of Electric Cloud. Prior to joining Electric Cloud, Martin was a Senior Director of Engineering at EMC Corporation and VP of Engineering at Luminate.