- The Genesis of Enterprise Cloud Development
- Enterprise Cloud Development — An Overview
- The Five Steps to Enterprise Cloud Development Success
- Step One: Embrace the Cloud
- Step Two: Implement Community Architecture
- Step Three: Codify Development Processes
- Step Four: Orchestrate and Automate DevOps
- Step Five: Leverage the Hybrid Cloud
- Enterprise Cloud Development — Take a Flexible Approach
- Enterprise Cloud Development — Taming the Beast and Driving Value
- Further Reading
- Topics Trending Now
The promise of innovation is alluring, yet often difficult to obtain. This is especially true for large IT organizations, where entrenched ways of doing things prevent new methods and technologies from being adopted.
But now, in the software development industry, there are several key trends emerging to enable IT organizations to achieve innovation.
Three primary trends are:
- Agile methodologies have completely disrupted software development, and they continue to mature, with increasing adoption within large enterprise environments.
- DevOps has emerged to bridge development and operations and to ensure that the benefits of Agile methods reach both the end user and the organization.
- Cloud computing and new forms of “technology-as-a-service,” have now reached into the very nature of how software is developed, deployed and consumed.
This paper introduces a practical roadmap — Enterprise Cloud Development (ECD) — to both managing the disruptive change of these three converging megatrends (Agile, DevOps and Cloud) and harnessing the promise of each in a collective, well-conceived and wellexecuted fashion.
The Genesis of Enterprise Cloud Development
During the past decade we have seen continuous waves of disruption within the software industry. Software is a driving force for competitive advantage for a growing number of organizations and industries and, in many cases, is vital to their survival. New processes such as Agile, Lean and DevOps help streamline workflows and drive collaboration. New technologies, from open source in the enterprise to emerging cloud and mobile platforms, have accelerated the pace of innovation and enable new opportunities for application integration. The number and accessibility of tools used to build and deploy software has grown rapidly as vendors and communities offer solutions to new, existing and foreseeable challenges.
These new tools, processes and platforms are empowering to developers, but they are complex. This complexity gives rise to new challenges for organization-wide consistency and standards as well. In the end, the very nature of software development has radically changed, while the pressure to deliver quality software faster is greater than ever.
Enterprise Cloud Development (ECD) helps organizations manage the above challenges and realize the benefits of these new development opportunities. It is the result of collective experience — based on collaborative relationships with industry partners and global IT organizations as well as on input from smaller, more nimble startups and the open source community. In essence, ECD is a blueprint, or roadmap, enterprises can follow to transform into highly efficient and productive software delivery organizations. It provides self-direction and guidance on the path to what we see as “modern software development.” It is a set of guidelines intended to be as open and flexible as possible to accommodate the dynamic needs of most technology organizations — where diverse development processes, an array of favorite point tools and application frameworks, and hybrid cloud environments are now the norm.
Enterprise Cloud Development — An Overview
Enterprise Cloud Development incorporates maturing cloud-development practices for software organizations that are looking for a secure and compliant path to managing development and deployment in a cloud-based environment. It fully embraces the benefits of the cloud, and it follows the evolution of collaborative and distributed Agile development. Mapping to an ECD strategy enables organizations to embrace software development, deployment and DevOps in concert, as well as across private-cloud and public-cloud environments at an incremental pace.
The primary objectives of ECD are to:
- Simplify and provide a centralized approach to managing the new “wild west” of software development — hybrid methods, tools of choice, best-of-breed, open source and clouds.
- Establish an open, social and collaborative culture for software build and deploy.
- Eliminate waste and leverage the value of asset reuse.
- Enable enterprises to implement consistent and scalable Continuous Delivery, Application Release Automation, and DevOps across hybrid clouds.
- Drive strategic value and leapfrog the competition.
The Five Steps to Enterprise Cloud Development Success
The blueprint for ECD focuses on making Agile, Application Lifecycle Management (ALM), DevOps and cloud initiatives a success within today’s increasingly fragmented, distributed and disparate software delivery lifecycle. In many ways, ECD is a natural evolution of ALM, as it offers a fresh approach for solving the emerging challenges arising within the software build-and-deploy environment. The five steps of ECD outlined below are often already implemented in some form or fashion within enterprises. However, the maturity of each will differ from organization to organization.
Step One: Embrace the Cloud
Many of us have been developing and deploying software in the “cloud” long before the term “cloud” ever existed. The first step of ECD is about taking inventory, centralizing people and assets, and enabling migration and access to an integrated, organized and centralized set of software resources. The goal is to take control of all software applications and components that various teams across the enterprise are building and maintaining. This is where the benefit of the cloud comes into play. By leveraging cloud-based development platforms, you can create a common, centralized cloud infrastructure that can be securely accessed by all stakeholders. Having a consolidation hub, or home, for all work items and the software assets around which disparate teams collaborate is essential to gaining control of an increasingly complex software build-and-deploy environment. Individuals must be able to plug into the cloud and collaborate through a centralized web service or directly within the context of their own favorite point tools.
Embracing the cloud in this fashion lowers the risk of operating as an unstructured development organization and environment. It ensures the organization has visibility and “a point of truth” into IP and developer activity across multiple, distributed sites, and it provides insight into how often teams are using different tools on different infrastructures, even when working on similar tasks. Step One of ECD leads to improved asset use and helps lower the overall cost of development infrastructure related to hardware, software and management tools. In addition, it helps secure and protect intellectual property and mitigates regulatory compliance issues. For most enterprise software organizations, the successful implementation of Step One alone results in significant ROI and productivity gains.
Step Two: Implement Community Architecture
Step One focuses on coalescing software-related assets to take control of all software applications and components that various teams across the enterprise are developing. While it’s great to secure development assets and provide centralized access, think of Step Two as building a foundation to take real advantage of organizational collaboration and asset reuse. In general, most organizations find themselves with siloed teams and processes, generally poor systems governance, and duplicated coding efforts. All of this leads to high costs, poor code quality and increased risk, especially when working with external contractors or third parties. Step Two of ECD calls for the implementation of a robust coding community architecture that promotes collaboration and sharing across all teams, and it organizes software assets into projects and categories that are searchable, reusable and available for collaboration.
Community architecture enables you to map business and product strategies, technology lines and distributed enterprise architectures into collaborative and structured categories, groups and projects. Standardized community architecture, done correctly, fosters organizational alignment and drives efficiencies by allowing the organization to simplify the navigation, discovery and sharing of IT assets by the user community.
By implementing community architecture, IT organizations see faster project startup times that lead to higher productivity and improved time-to-market. It also improves software quality, reduces costs and bolsters quality of service, traceability and enterprise-wide governance of development IP.
Step Three: Codify Development Processes
A major objective of Steps One and Two is to ensure that code assets are well-structured and governed. Now we must turn our attention to following a similar approach to workflow and process. Step Three recognizes the fact that there is rarely a standardized or common process in place, because teams employ a multitude of favorite tools and development approaches, required application frameworks, and target platforms and clouds to achieve their project and business objectives. For instance, a sequential process like Waterfall might be the preferred method for projects where requirements are unclear while, at the same time, different development and management approaches will be required for mobile applications or a specific PaaS. Adding to this complexity is the fact that different groups will take ad-hoc or inconsistent approaches to similar problems.
Quality will be impeded by this lack of shared ownership and inconsistency of approaches for delivering a high-quality application into production. These factors make it difficult to keep projects on time and within budget, and they increase the risk that the final application will not achieve the desired business objectives or will cause extensive production systems downtime.
In situations like this, Agile methodologies such as Scrum and Kanban can be integrated with other non-Agile processes across various tools, application frameworks and clouds in a consistent and selectable fashion to create a more nimble, adaptive and responsive organization. Data definitions, tool integrations, workflows and build/test server infrastructure must all be codified to provide true end-to-end visibility and traceability. The organization must take stock of how things are progressing and must work to codify the reusable “right set” of development and continuous-integration processes. This set of codified processes and tools should be callable from a set of authorized on-demand project templates to ensure instantaneous team ramp-up and consistency. However, these common processes must still provide the flexibility for individual teams to work with their preferred Agile and hybrid processes to meet project and platform objectives. At the same time, they also must be constrained enough to enable enterprise-wide visibility, governance and reporting.
Codifying development processes improves software quality, increases developer productivity, increases the probability that final applications will be closely aligned with user requirements, and enables enterprise-wide visibility. Once these codified development processes are implemented, an organization can extend these processes into IT operations via Continuous Delivery and DevOps, using a mix of on-premise, private-cloud and public-cloud resources in an elastic and cost-effective way. This extension to delivery and deployment across hybrid computing is precisely what Steps Four and Five of ECD entail.
Step Four: Orchestrate and Automate DevOps
Once people, processes and platforms are consolidated, organized and aligned, the next logical step for ECD is cross-function collaboration, automation, and integration between development and deployment teams, data, tools and infrastructure. In fact, we believe that following the first three steps outlined in the ECD blueprint is mandatory for Continuous Delivery and DevOps to have any chance at all of delivering on their promises.
It’s commonly understood in the software industry that the goals, activities and workflow of the development and IT operations teams must be in sync. This is the reason DevOps is a priority for forward-thinking IT organizations and a major pillar of the ECD blueprint. While developers are focused on building and deploying new applications faster to meet ever-changing business needs, IT operations teams are more concerned with stability. Agile techniques have contributed greatly to software development by increasing the frequency of iterations. DevOps seeks to extend those techniques and gains to IT operations as well.
The goal of incorporating DevOps into the ECD model is to further extend the visibility, collaboration and productivity gains that were achieved in Steps One through Three. Step Four calls for creating deployment standards from a common set of continuous delivery techniques, in order to empower individual projects while simultaneously putting in place enterprise-wide processes for application release automation and deployment. This enterprise-wide collaboration reduces manual and error-prone hand-offs among teams and connects business owners, development teams, IT operations and end users.
Continuous Delivery and DevOps principles, methods and practices allow organizations to automate the release of software into a range of on-premise build, test, staging and deployment environments, and they facilitate real-time collaboration to enhance application quality. Step Five, outlined in the next section, extends these benefits to external cloud-computing environments.
Step Five: Leverage the Hybrid Cloud
The final step of ECD aims to integrate all of the advances made through the first four steps and to provide an enterprise-wide span of control to manage hybrid-cloud development, build, test, stage and deployment. At its core, Step Five extends the DevOps initiative to hybrid-cloud environments and fully embraces a mix of on-premise, private-cloud and publiccloud resources. This elastic and cost-effective approach to resource use and strategic deployment is vital for the continuous advancement of modern software delivery.
The array and flexibility of public Infrastructure-as-a-Service (IaaS) and Platform-as-a-Service (PaaS) offerings enable organizations to leverage various cloud environments based on business objectives, cost, compute-power requirements and shifting technology and platform needs. Having a centralized, cloud-based environment allows organizations to more easily tap into the resources of specialized development, build, test and deployment cloud resources with a clear purpose and a unified goal. Leveraging such resources in a strategic, well-managed way alleviates excessive costs, hardware over-provisioning, and long lead times when moving applications into production.
Step Five of ECD also establishes a structure to help avoid the risk of breached governance due to the proliferation of “shadow IT.” Hybrid-cloud computing practices are not entirely new or novel — most of us have been leveraging the cloud for years — but the time is right for enterprise IT organizations to embrace this approach for software delivery.
Enterprise Cloud Development — Take a Flexible Approach
ECD can be adopted incrementally — one step at a time, at an enterprise’s chosen pace. The starting point will most likely differ from one organization to another based on the starting point and experiences of individual project teams, as well as on an organization’s existing processes and tools in use. It’s not uncommon for initiatives to get sparked within pockets of development teams that are driven and excited by this faster and more efficient approach to software delivery. In light of these factors, an organization should take a thoughtful and collaborative approach to extending their current and varied approaches to a uniform, flexible and measurable ECD implementation.
In Steps One and Two, software configuration managers, community managers, enterprise architects and datacenter managers must all work together and collaboratively to embrace the cloud and implement community architectures. When codifying the development processes in Step Three, it’s common to have a VP of Engineering take the initiative, while the Step Four DevOps orchestration clearly requires both engineering and IT operations working together. Initiatives for hybrid cloud development and governance as outlined in Step Five are usually driven by various stakeholders in the organization, including the CIO, CTO and compliance officers.
Enterprise Cloud Development — Taming the Beast and Driving Value
The software development industry is exciting, frustrating and constantly changing. Today, the saying “software eats the world” has never rung more true, as software now impacts almost every aspect of our lives. The stakes are high, and the pressure is great to meet the user and technological demands of the 21st Century. Agile, DevOps and the cloud each hold great promise to help IT organizations build better software faster to meet these new industry demands. Enterprise Cloud Development leverages all three in a manner that exceeds the value of the individual parts.
ECD provides a structured blueprint to help organizations gain control of chaos and advance the art of building and deploying excellent software. It embraces the legacy of great applications and honors the value of existing assets. ECD is centered on the recognition that there is real power in simplified organization and social collaboration. On the practical side, it helps inspire distributed IT teams across the enterprise and provides a strategic pathway for adopting modern tools, platforms and methodologies. Best of all, ECD has proven to be easy to adopt, scale and measure. It is meeting the never-ending demands of organizations and enabling them to overcome their prior failures and to prosper instead, due to the quality and timely release of software applications.
The Enterprise Could Development blueprint is the result of the input, insight and experience of many CollabNet team members, customers, partners and industry research analysts. With deep roots in open source (we created the Apache™ Subversion® project for Source Code Management) and Agile/Scrum (we’ve trained tens of thousands of Scrum masters and teams on Agile approaches), CollabNet has been hosting development communities in the “cloud” for more than a decade. Our TeamForge® Agile ALM platform is used both by very large software organizations and by startups to manage development efforts and connect stakeholders working in globally distributed teams via the hybrid cloud. Our pure-play cloud offering is CloudForge®, the easy-to-use, instant provisioning platform for TeamForge, Subversion and Git, which is used by developers, teams and organizations alike. Our mission is to bring cloud development to the enterprise. That means delivering approaches and systems that make developers happy, keep teams in sync, and help organizations leverage their existing valuable resources and assets.
Find out how you can optimize your software development and deployment practices further with:
- An Enterprise Cloud Development (ECD) Blueprint with TeamForge: An Implementation Checklist
- Moving to CollabNet TeamForge from IBM Rational ClearCase: A Migration Strategy
- Putting DevOps and the Hybrid Cloud into Practice with CollabNet TeamForge
Topics Trending Now
Many of the latest technology announcements have implications for PaaS and cloud development that will serve agile businesses everywhere.
- Enterprise Cloud Development, www.collab.net/ecd
- Continuous Integration, www.collab.net/getci
- 5 Things Your Development Team Needs to Be Doing Now, www.collab.net/5things
To put Enterprise Cloud Development to work for your organization, please call 1-888-778-9793, e-mail firstname.lastname@example.org, or visit www.collab.net/ecd, for a free assessment of your “ECD-readiness” or to provide your own input into the future of cloud development practices!
CollabNet is a leading provider of Enterprise Cloud Development and Agile ALM products and services for software-driven organizations. With more than 10,000 global customers, the company provides a suite of platforms and services to address three major trends disrupting the software industry: Agile, DevOps and hybrid cloud development. Its CloudForge® development- Platform-as-a-Service (dPaaS) enables cloud development through a flexible platform that is team friendly, enterprise ready and integrated to support leading third party tools. The CollabNet TeamForge® ALM, ScrumWorks® Pro project management and Subversion Edge source code management platforms can be deployed separately or together, in the cloud or on-premise. CollabNet complements its technical offerings with industry leading consulting and training services for Agile and cloud development transformations. Many CollabNet customers improve productivity by as much as 70 percent, while reducing costs by 80 percent.
For more information, please visit www.collab.net.
* Apache, Apache Subversion and the Subversion logo are trademarks of the Apache Software Foundation. Subversion® is a registered trademark of the Apache Software Foundation.