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.
+ ALSO ON NETWORK WORLD Companies looking to DevOps to automate and save time +
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.
Automation is the key to accelerating software development and deployment. Provisioning a server in three weeks is no longer acceptable -- organizations should be thinking about how to provision a server in about three minutes.
A hybrid cloud is a cloud computing environment where an organization integrates its private cloud environment with the scalability and flexibility of a public cloud environment. Hybrid cloud allows the enterprise to take advantage of the scalability and cost-efficiency of public cloud computing without exposing mission-critical applications and data to third-party vulnerabilities. The enterprise provisions compute, storage, and networking resources delivered as a service, with self-service access via web interfaces and APIs.
Software development and testing can be performed in a production-like environment, and applications can be deployed and scaled in hours instead of weeks. Hybrid cloud enables the enterprise to provision and release resources in minutes, and benefit from a pay-for-usage model that accelerates software development by allowing developers, testers, and operations personnel to gain quick access to the resources they need to perform their jobs.
The hybrid cloud becomes a secure, IT-managed extension to your existing internal IT infrastructure and delivers the best of both worlds:
- Developers are enabled with the self-service, on-demand, elastic nature of a public cloud
- Enterprise IT readiness equals control, visibility, and security of on-premises resources
Some enterprise workloads are better suited for in-house infrastructure, while others are better suited for the cloud. Predictable workloads are preferable for enterprise data centers, while dynamic workloads are ideal for cloud computing. Predictable workloads are core to IT operations and require dedicated IT resources, with IT staff managing the application changes. But enterprises are increasingly moving dynamic workloads to the cloud because they have unpredictable capacity needs and require collaboration and frequent changes.
For example, a software development process entering into the late stages of performance testing will require increased computing and networking resources. IT would either need to have spare capacity handy and idle or would need to rapidly procure, prepare, and provision new equipment to meet these demands. In today's volatile economy, few businesses are willing to plan and purchase IT resources based on a forecasted "high-water mark" of demand, only to have this equipment remain otherwise underutilized most of the time. The hybrid cloud model provides for dynamic capacity management, and automated solutions decrease the IT support burden.
The Power of DevOps and Hybrid Cloud
Incorporating hybrid cloud into your IT strategy already starts you down the DevOps path by breaking the traditional barriers between development, test, and IT. IT can work with development and test teams and equip them with dynamic, flexible, and easily shareable cloud-based environments that are available on demand within minutes. By integrating cloud-based services into the overall IT architecture strategy, software development teams are better able to create, change, and scale complex computing environments as often as needed. At the same time, IT is able to retain the full visibility and control required for security and operational governance over these environments. Just taking this first step toward DevOps brings huge benefits for teams.
In addition, by leveraging hybrid cloud automation as part of an overall IT strategy, enterprises can effectively extend their existing data centers and super charge their development and delivery practices. Hybrid cloud also addresses some of the challenges and requirements that are needed for implementing DevOp practices, including:
* Consistency. DevOps requires the ability to automate and provision in consistent environments and avoid manual configuration errors. In traditional enterprise data center environments, this has been an ongoing challenge because of the inconsistent environments used by development, testing, and operations organizations, and because of the high risk of manual configuration errors, particularly in complex applications. By combining DevOps with a hybrid cloud architecture, the enterprise can rely on libraries of templates to ensure consistency and self-service provisioning to avoid manual errors and accelerate the accurate, consistent creation of software environments.
* Configurability. The enterprise needs the ability to rapidly scale development and operations resources up or down quickly, and change computing environments easily and predictably. But the enterprise data center is naturally constrained by capital budgets and resource allocation requirements. By combining DevOps with a hybrid cloud architecture, the enterprise benefits from configurable virtual data center resources and the ability to configure an elastic hybrid cloud.
* Collaboration. To dramatically accelerate software development, silos have to be eliminated and resources need to be shared. Developers need to share copies of their lab environments with QA and Operations. Cross-departmental teams and even cross-geographic teams should be able to organize their work into projects, invite specific project members to participate, and assign specific roles or access points to each participant based on roles (e.g., user, manager, database engineer) or status (e.g., employee, contractor). Hybrid cloud computing enables this secure, role-based collaboration that can drive accelerated software development and delivery.
* Control over it resources. DevOps requires role-based permissions, auditable actions, and optimal utilization of resources. By combining DevOps with hybrid cloud, the enterprise can ensure security and access policy management with detailed audit and reporting, and benefit from pay-as-you-go flexibility for clear visibility into resource utilization that enables full control over IT resources.
While integrating software development, QA and IT operations enables increased visibility and accelerated software development and deployment, implementing DevOps only serves as a strong first step for enterprises seeking to accelerate software delivery cycles and enable innovation. But by concurrently implementing agile development and combining DevOps with hybrid cloud architecture, the enterprise can dramatically accelerate software development and innovation without the need to allocate additional capital expense resources.
The ability to provision new systems and architectures on demand and in minutes dramatically reduces the time required to build a software environment, and automating the DevOps process allows the enterprise to benefit from the scale and flexibility advantages of a hybrid cloud. Organizations that want to profoundly accelerate their ability to deliver innovative software can embrace DevOps, agile development, and hybrid cloud to break down traditional barriers between development, testing, and IT operations departments, enabling breakthroughs in both software innovation and time to delivery.
Read more about infrastructure management in Network World's Infrastructure Management section.
This story, "How to accelerate software development by harnessing the power of DevOps, agile and hybrid cloud" was originally published by Network World.