How DevOps Is Enabling Agile Organizations
How DevOps Is Enabling Agile Organizations
Once you've reached the status as an Agile organization, it's time to evaluate the adoption of DevOps practices and principles.
Join the DZone community and get the full member experience.Join For Free
Almost every enterprise today working in a dynamic business environment aims to develop a sustainable operational framework, through which it can quickly respond and adapt to changing business conditions and reduce valuable time to market to maintain business value proposition.
To build on developing this dynamic business framework requires major changes across different levels of the organization primarily by adopting DevOps practices around engineering, managing infrastructure and defining processes. This need for agility also emphasizes collaboration between different technology groups and bringing automation in software development and deployment process. Below figure identifies typical focus areas of an agile organization.
Being Agile in the context of DevOps generally requires an organization to develop the following technical capabilities:
Quickly provide product increments by accommodating changing customer requirements
Move software across different lifecycle stages from development, testing, staging, and production in a continuously integrated fashion
- Able to integrate with complex applications existing in customer’s technology ecosystem or third-party applications hosted on different platforms
- Flexible enough to adjust infrastructure capacity based on demand from business users
- Reduce downtime and overall cost of operations through continuous monitoring and control
In this whitepaper, I will outline the challenges of modern-day organizations and how adopting DevOps practices can help manage engineering processes which are best suited to meet business requirements and software delivery and deployment processes in a self-sustaining fashion.
Challenges to Becoming an Agile Organization
Although the benefits of an organization which can adapt and benefit from changing business environment factors are great, so are the challenges.
The availability of different open-source software development tools and a variety of target delivery platforms have given possibilities to multiple approaches to software application development and deployment. Further, the traditional tools and technologies in use for software development and deployment were not created keeping in mind the enterprise agility requirements.
Similarly, organizations need to respond to varying business demands and look for ways to generate predictability around software application lifecycle management. They need to identify bottlenecks early and look out for automated reporting mechanisms which can provide the information where end-to-end traceability from requirements to development and testing is being disrupted.
These challenges are answered through modern DevOps practices by streamlining end-to-end configuration and change management process covering infrastructure (e.g. VMs), middleware (e.g. application servers, databases) and application components (e.g. application files, microservices).
According to one of key statistics from 13th annual State of The Agile report, when asked about the most valuable capability for improving devops practices in their organization, 38% wanted end to end traceability from business requirements, to development, test and deployment would be most valuable followed by metrics that identify disruption in that flow.
DevOps Practices as An Enabler for Agile Organizations
The role of DevOps for Agile organizations is to be able to set up a consistent self-sustaining framework around existing engineering processes and bring consistency and transparency across an ecosystem made up of globally distributed development teams which were often disconnected previously using individual tools, frameworks, and processes.
One of the key principles in modern DevOps practices is the ability to develop a self-sustaining software development framework which can provide continuous feedback. This is achieved through implementing automation around continuous software integration and deployment mechanisms which also helps in implementing change management process for infrastructure, middleware, and application components.
For a large organization working with multiple distributed geographies restricting face-to-face collaboration, such automation tools enable continuous feedback mechanisms and reduce overall time to develop and deploy software along with maintaining defined quality parameters.
Organizations adopting modern DevOps practices are able to define processes which can provide:
A software development framework which is in line with an organization’s defined set of policies and processes to ensure organizational consistency
Engineering processes which allow consistent development of integrated software which can be continuously deployed to higher environments
The ability for providing feedback across full application lifecycle from development, testing and deployment
A single source of truth for different application and infrastructure level configurations through baselining and versioning
An audit trail of all software code releases, patches and deployments for complete traceability
The ability to track issues and incidents through monitoring tools and deriving necessary context around the root cause of the incidents
Managing infrastructure by writing coded scripts was always prevalent in traditional software development projects, however, there is a drastic difference in the way scripts are managed in a DevOps integrated project.
Traditional scripts are limited in scope and purpose, solving only specific situation-based infrastructure needs and were not managed in terms of versioning of changes made in code. Due to their specific nature, such scripts were difficult to be understood and maintained or to be modified in situations where the system administrator leftan organization, thus forcing a fresh set of efforts to be performed around rebuilding automation capabilities.
With DevOps frameworks in place, the approach to scripting is aimed to use the same set of engineering practices such as versioning and baselining as is generally done for application source code. Also, any infrastructure automation achieved through scripts are made a part of the overall application lifecycle management process and follow configuration management principles.
Infrastructure as code provides the ability to automatically instantiate a server in the cloud through configuring a set of text files and increase or reduce capacity with ease by modifying code. This also brings ease to the speed of deployment of applications to multiple servers in one go. With deployment artifacts brought under source control, one can utilize features like versioning and baselining and setup deployment workflows thus providing full configuration management capabilities.
For system administrators, it came as a huge benefit to manage the technology stack through software rather than manually by configuring hardware devices. With multiple environments to manage it becomes far easier to automatically set up a unique configuration than the manual process which was prone to errors. Through Infrastructure-as-Code, teams can make changes to the environment description and version the configuration model which generally is in well-documented code formats like JSON. The release workflows were then used to execute the configuration model to configure the target environments to provide large-scale ease around environment creation and provisioning.
Providing Visibility by Continuous Feedback
With multiple teams spread across geographies working towards a common goal, there is an imperative need to develop a collaboration framework. At times, there can be multiple communication channels in which information flows between development and operations team which can lead to a decrease in productivity. In such situations, providing visibility in the application lifecycle through information radiators enables the sharing of information and provide continuous feedback to all stakeholders.
Information radiators can be in different forms, ranging from dashboards and monitoring screens, to microservices health check applications, and are available for everyone to view easily without seeking for information. They also decrease the time to fetch information through emails, phone calls and meetings, and promote collaboration between development and operation teams on how to improve productivity and reduce time to market.
Some of the popular information radiators found useful are:
Another way of leveraging continuous feedback is actually directly from customers who operate in a dynamic business environment by providing them restricted access to test and pre-production environments. With role-based access controls in place, different stakeholders, both internal and external, can securely collaborate and experiment around new features and proposed enhancements and share ideas. They can get a feel of how things will work in real time before actually experiencing them on the production environment.
Gradual Evolution to a DevOps Journey
Adopting DevOps for an Agile organization can be seen as a journey. Generally seen, there are distinct stages in DevOps adoption and specific practices in each stage need to be followed to enable organizations to reach a particular stage.
Here are the six stages of adoption of DevOps by organizations:
Stage 0: Build the foundation
Stage 1: Normalize the technology stack
Stage 2: Standardize and reduce variability
Stage 3: Expand DevOps practices
Stage 4: Automate infrastructure delivery
Stage 5: Provide self-service capabilities
To move to the highest stage, an organization must have multiple departments, including development, operations, security, and other functional areas, collaborating together to provide IT capabilities provided as a service to the business rather than treating it as a cost center which executes work orders.
Once the highest stage is achieved, there are multiple benefits which can be realized like a few mentioned below:
- Incident responses to become automated – Every type of incident need not be automated and the team should focus on processes and systems that let one identify and resolve issues.
- Resources to be made available by self-service mechanisms – This enhances productivity to a large extent eliminating the need for people to wait for tickets to be approved, license keys to be obtained, or required environment configurations to be applied
- Re-architecture of applications based on business needs – This involves making fundamental changes to application architecture like moving to microservices, adopting containerization, or replacing components with cloud services can be done with relative ease by reaching this stage.
- Security teams participating and getting involved in technology design and deployment – Instead of leaving security aspects to be addressed once primitive problems around release pipelines have been addressed, organizations with a high level of DevOps adoption tend to involve security teams early in the game by first conducting a security review and then step by step integrating information security into different stage of software development lifecycle.
It takes the initials stages of DevOps adoption to implement automated mechanisms and achieve a certain degree of automation before useful metrics can be generated. Information radiators and success metrics mentioned in the previous sections of this whitepaper provide much more value for an organization with a high level of DevOps adoption as it becomes far easier to get an agreement on what needs to be improved next for the overall success of the business engagement.
Organizations today are working hard to respond better around changing market needs and are keen to adopt DevOps practices to improve how they work and respond to change. DevOps brings a culture of collaboration between development and operations team and fostering a culture of predictability around software development through automating development and release workflows helping businesses make faster decisions.
It is equally crucial for teams adopting DevOps practices to continuously monitor the state of component systems around health and performance parameters along with making information visible to different stakeholders so that proactive actions can be made around preventing incidents to occur and reducing overall time to market.
Opinions expressed by DZone contributors are their own.