Combining Agile and DevOps practices can make it easier to manage enterprise application development and deployment...
across on-premise and cloud -- i.e., hybrid cloud -- environments, where continuous software delivery is needed. Achieving a mature Agile-DevOps hybrid cloud strategy, however, takes careful planning and attention to centralizing development and architecture assets, standardizing development processes and organizational adherence to Agile and DevOps practices, according to Jim Ensell, Chief Strategy Officer for CollabNet.
Hybrid cloud development and deployment is the distribution of development, test, deployment and runtime tasks between on-premise, private and public clouds to optimize cost, performance and productivity, said Ensell. The need for the use of hybrid cloud for development and deployment is primarily being driven by larger organizations that are looking to embrace the cloud incrementally in a hybrid way at their own pace, given their existing investments in on-premise tools, applications and infrastructure.
Ensell offers tips on building a hybrid cloud application development and management strategy, as well as other aspects of Enterprise Cloud Development (ECD), in this interview.
What are key steps in implementing continuous delivery and DevOps in a hybrid cloud environment?
Jim Ensell: First, there's centralizing development assets and implementing community architectures that organize these assets into projects and categories that are searchable and reusable and can be collaborated on. Next comes codifying development processes. It's here that specific Agile methodologies like Scrum and Kanban are supported and integrated with other non-Agile processes to enable the adoption and integration of agile processes at the right pace for the enterprise. Once development processes are codified, an organization can then extend them into IT operations via continuous delivery and DevOps, using a mix of on-premise, private and public cloud resources in an elastic and cost effective way.
Hybrid cloud DevOps enables rapid and elastic provisioning of services with flexible pricing, which offsets the total cost of ownership of managing development and runtime infrastructure in-house. Bringing development and operations together improves quality-of-service and reduces delivery time. Both of these reduce cost and increase end customer satisfaction.
What role does Agile development play?
Ensell: Agile methodologies call for continuous IT service delivery and deployment and increasing levels of collaboration between development, test and IT operations staff across an organization. Agile development is also an underpinning of DevOps, calling for cross-functional teams between development and IT operations.
What development practices pose challenges to codifying development processes across an organization?
Bringing development and operations together improves quality-of-service and reduces delivery time.
Ensell: Let's say the code assets are well structured and governed, but the development processes are not. There may be no standardization or common processes at all -- different groups might take ad-hoc or inconsistent approaches to similar problems. Waterfall processes might be used in situations where requirements are unclear. Quality might be impeded by the lack of shared ownership for delivering a high quality application into production. These situations clearly lead to difficulty keeping projects on time and within budget, increased risk of the final application not achieving the business objectives and extensive downtime of the production system.
Codifying development processes improves software quality, increases developer productivity and drives a higher match between the final application and user requirements. This also drives more transparency across processes, enabling more efficient and less risky software processes.
Speaking of siloed functions or departments in an organization, how does the traditional barrier between development and IT complicate cloud adoption?
Ensell: Cultural or historical barriers between development and operations often result in inconsistent and manual release processes, which cause delays in deploying finished applications and unnecessary costs due to application availability problems.
Essentially, these siloed organizations have to pull together in-house deployment resources with cloud provider development, build, test, and deployment resources. Leveraging such resources in a managed way can alleviate excessive costs, typically due to overprovisioning of hardware, long lead times in moving applications into production and increased risk of breached governance caused by the deployment of shadow IT.
Where does the Enterprise Cloud Development approach fit in with application lifecycle management (ALM)?
Ensell: In many ways, you can think of ECD as the natural evolution of ALM. Just as ALM superseded the traditional software development lifecycle as a way to think about the challenges of software development, ECD, in turn, supersedes ALM. It addresses the challenges affecting the way modern software is developed and deployed and provides a framework for bringing cost savings and productivity improvements to a development organization.
In an enterprise, who are the key players who make the decision to adopt enterprise cloud development approaches? What roles do they play?
Ensell: The vice presidents of development, software engineering or operations and even heads of business organizations often initiate the decision to move forward with an initiative. But not all decisions have to start at the top. Software configuration managers, community managers, enterprise architects and datacenter managers [can play key roles]. When it comes to codification of development processes, it's not uncommon to have a VP of Engineering take the initiative, while DevOps orchestration clearly requires engineering and IT operations to closely work together.
Initiatives for hybrid cloud development and governance [can be] driven from various parts of the organization, including CIO, CTO and compliance officers. It's also not uncommon for initiatives to get sparked within pockets of development teams requiring the means for faster and more efficient software delivery. In fact, [this] initiative will only be successful to the extent that key practitioners -- such as developers, their management and IT delivery specialists – embrace it. This may require planning and coaching.
What are key problems of users that block the adoption of a comprehensive enterprise hybrid cloud development and deployment model?
Ensell: Organizations that have challenges frequently have a highly unstructured development organization and environment. They may have developers in multiple dispersed sites and use wildly different tools on different infrastructures, even in common situations. This leads to a high cost of development infrastructure -- hardware, software and management. Additionally, the intellectual property of the organization frequently is unsecured and therefore risks significant costs and regulatory compliance issues.
Other organizations have secured their development assets and centralized access, but they have not yet begun to organize these assets in ways that take advantage of the potential collaboration and reuse benefits. [They] find themselves in a situation where their teams are siloed, there is poor governance of their systems and a duplication of coding efforts leads to high costs, low code quality and risk when working with external contractors or third parties.
What benefits do enterprises get by using the hybrid cloud?
Ensell: Faster time to market and lower development and deployment costs are common. [Also,] adopting cloud services and applications bring hard costs savings in hardware, software and management for the development system, ranging from improvements in developer productivity to improvements in security and governance.
Is DevOps an approach that your team has adopted, plan to adopt or will never adopt? Please tell us why! firstname.lastname@example.org
What DevOps, Agile and Lean have to offer