November 29, 2012 | Written by: David Cox
Share this post:
Despite its many benefits, the Internet has also been a disruptive presence in many ways. One example, though not typically understood at first glance, is its impact on development methodologies. Users of many Internet based applications are now accustomed to and demanding frequent updates to keep pace with the ever changing technology landscape. This leads to a new continuous development methodology.
Continuous delivery is defined by PCMAG.com as:
A software development system that automates the project phases from source code to distribution. It eliminates most of the manual steps in compilation, testing (see continuous integration) and distribution to the final destination (Web site, master disc, and so on).
This is an extension of the agile development methodology which includes many different organizations within the company; from development organizations all the way through to the delivery organizations. With its ability to quickly adapt to changing environments, the cloud is particularly positioned to take advantage of continuous delivery. In order to leverage the full capabilities of the cloud, a new mindset needs to be embraced by all departments in the organization. In particular, the concept of continuous delivery is not one that is well adopted today.
In today’s world too many organizations segregate development and steady state support. Incentives need to be put into place so that both organizations strive for frequent quality updates to production systems. Currently, development organizations are rewarded by how quickly they can develop and release code. Steady state departments are typically rewarded by how stable they keep the environment. Incentives need to be put in place so development is also rewarded on the quality of their deliverables and steady state is rewarded on delivery of new features.
Development, Testing, and Steady State all have different perspectives on the development lifecycle. These views seem to be opposite at first blush, but by taking a further look you can find commonalities.
- Incremental Testing One of the major issues in standard development is being able to test and validate a code stream. Small incremental builds require much less retesting, since targeted tests can be identified and implemented. More defects will be identified if resources are targeted to test specific areas, while avoiding retesting areas that haven’t changed. This should be good news to steady state teams as well, since they should have more confidence in the code being released.
- Code Consistency In order to truly capitalize on continuous delivery, automation to deliver code needs to be in place. If the same code and delivery method is used for test and production, far fewer issues will occur. The cloud can provide the capability to deliver consistent images on all environments. The development organization needs to embrace this at the cost of spending additional time on the packaging of the product.
- System Consistency The cloud can help facilitate system consistency by providing systems that are configured the same way they will be deployed. The cloud gives the ability to spin up systems on demand, allowing development to keep pace with the latest configurations. This also reduces costs by only paying for the systems when they are needed.
- Frequent Updates Steady state and development organizations should both insist upon frequent updates to the system. This might not be intuitive, but frequent updates will keep the steady state team from slowly diverging from the latest versions and keep them on current supported versions. Many software development packages require additional supporting products such as WebSphere and DB2. The supporting products have frequent patches and version updates. Without the ability to continuously update your application, you can quickly fall behind supported versions. Continuous updates keep the development organization agile and ready when supporting applications have updates.
By focusing all departments on common goals, organizations can provide a continuous delivery methodology and capture the promises of the cloud.