Software development teams and operations/system administrators have historically pushed each other in opposing yet complementary directions. While development teams focus on delivering new features to end users, operations personnel generally focus on software deployment, minimizing liabilities and risks, and optimizing performance and reliability. The natural friction between the two groups can create a productive balance, but oftentimes it causes obstacles, resentment and a loss of revenue. By bringing the two sides together with DevOps, this contention remains healthy and contributive to the overall quality of the finished product.
As an IT discipline, DevOps brings order to the complex world of application and service development, testing, deployment, scaling and monitoring. By minimizing turf wars between siloed, independent teams, DevOps enables a unified approach to enterprise software development and delivery that reflects the needs of the entire application life cycle. DevOps strives for more collaborative, productive relationships between development and operations teams, with faster development cycles and reduced production risks.
DevOps carries many advantages over traditional development processes, including fewer bugs, faster fixes and increased visibility. However, it also presents new challenges. A significant reorganization of personnel is required, and DevOps demands a greater degree of interdepartmental coordination.
Agile Development and DevOps
The agile development model enables the enterprise to produce higher-quality software within swifter release cycles that is more in tune with user needs. Agile development methodologies — like shorter sprints — are becoming the norm in the enterprise. Ensuring that enhancements are delivered to customers in a reliable and usable fashion requires taking an agile approach through every step of the project. This is where DevOps fits into the agile world. To be truly agile, not only do teams have to develop and test faster, they have to deliver product and service enhancements to customers faster. Agile development and DevOps are two halves of the same coin.
Implementing DevOps to increase acceleration and innovation requires adopting agile development methodologies, and agile development requires quicker and more frequent release cycles. The ability to tear down and rebuild a test environment in minutes — then to do it over and over again — isn't just a nice-to-have capability for agile, it's a necessity. Automating this process so that it is visible to change control, but doesn't require intervention or special approval to implement, is essential for reducing the time needed for development.
Implementing agile development requires a disciplined approach to managing the high amounts of automation involved. Along with agile processes, agile infrastructure is also needed to provide the elasticity and dynamism needed to scale resources for various stages of the continuous delivery pipeline, namely continuous build, continuous integration, automated functional testing, stress, and performance testing.
Sign up for CIO Asia eNewsletters.