For years, software development and IT organizations have found themselves at odds, struggling to reconcile competing goals. In the past, technology limitations kept organizations from fully resolving this dilemma, but today, with new cloud computing technologies at our disposal, we are closer than ever to bridging the gap between development and IT. A dedicated development operations team can be the final piece of the puzzle, and I think 2011 will be the year that organizations recognize its value and development operations goes mainstream.
We hear it all the time from our customers: IT is overwhelmed by supporting the diverse tools developers demand, and hard-pressed to maintain security as multiple teams require access to many machines. Meanwhile, developers feel the pressure of meeting deadlines without adequate access to the resources they need, and are frustrated by jumping through hoops to obtain permission for resources that should already be at their fingertips.
Software development has an insatiable appetite for compute resources. Whether it is vast clusters for testing, dozens of machines to run ALM tools, or requests for “just one more box,” development teams are always asking for something. Multiply this by the number of development teams in your company, and it is easy to see why this is a big job for IT.
Development teams are striving for software output and quality, not resource efficiency. Each development group within an organization has unique needs to optimize its productivity and quality. If environment customizations and optimizations make development more effective, as they often do, they want their own resources, even if it means they get fewer of them.
IT’s response to these demands is to centralize where development tasks are run. The logic is that with a cloud of development resources, they can be shared across groups more efficiently, offering development additional resources.
IT’s goals differ from those of the development teams it supports. IT measures success by the efficiency, smoothness and cost effectiveness of the compute environment. A large, identically configured, scalable, uninterruptible environment that consistently delivers established levels of performance is ideal. In other words, the more IT can make things the same, the more efficient it can be.
Taken as a whole, the demands of IT and development make for an imposing list of requirements:
- Self-service – direct access to resources when developers need them
- Elasticity – resources that adjust to fluctuating demands
- Shareable – available to multiple individuals and groups without compromising anyone’s work
- Automation – development processes that are fast and easily repeatable
- Speed – capacity for parallel development to accelerate time to market
- Manageability – simple monitoring and control over access, allocation and performance of resources
- Security – privacy, and reporting for legal and regulatory compliance
Here is where a development operations team composed of people with developer savvy who know what developers need becomes essential. A skilled development operations team is uniquely positioned to recognize the needs of both development and IT, and thus able to create an environment that serves everyone well.
Once established, a development operations team can begin to implement change, beginning with building a private cloud of compute resources using virtual machines. Because it meets IT’s need for homogeneity and development’s need for configuration specialization, virtualization is a good first step, but it isn’t enough. What is really needed to bridge the gap is a framework that allows development to maintain control of what processes get run, who runs them, and how and when they end up on the compute cloud. The promise of self-service unlimited resources via the private cloud means the technology finally exists to create cooperation and cohesiveness between IT