So why has this become important now? How is DevOps any different from what organizations have been following for product lifecycle management? In today’s digital world, with the influx of the ‘Millennials’, customer expectations are changing fast. Added to their always-on mobile devices, and staying connected through social networks, customers need smarter business interfaces that offer connected experiences. To stay responsive to the ‘new-age’ customer, enterprises have to adopt agile and flexible models and business processes.
Through the adoption of Cloud technologies, IT today can provision resources on-demand to the users. The manual processes of provisioning the necessary resources for the application development lifecycle are getting automated, thus reducing the time to procure new development and test environments from weeks to hours. The release lifecycle of the applications have shrunk drastically with this automation. Thus, DevOps can deliver rapid responses to meet the changing customer demands in the digital business.
The road to DevOps: Not so easy
Implementing DevOps within an organization comes with its own set of snags. The main challenge is a culture change. Typically, the operations teams maintain control on resource provisioning and have a complete visibility on resource consumption. They use traditional processes defined for a standalone infrastructure to reclaim unused resources. These processes, if applied as is to a Cloud-based environment, will negatively impact delivery speed.
The development and testing teams typically don’t understand the challenges of the operations team. They expect the development and testing environments to be made available as and when required, tailored to their functional needs. They don’t own the responsibility of ensuring the sanity of these environments. On the contrary, in a Cloud-based environment, ensuring the stability of the environment is a user responsibility.
Finally, the silos further prevent cross-leveraging, innovation, and exchange of ideas. Developers, on the one hand, are driven by the urge to deliver new features. The operations arm, through their process-driven approach, are focused on the more traditional aspects of availability, robustness, and cost efficiency. These differing sets of priorities often lead to longer project timelines. To keep pace with the speed at which the business expects projects to be delivered requires the development, test and operations team to collaborate, to ensure quick turnarounds for any issues in the application development lifecycle.
- Development Team
- Testing Team
- Operations Team
Your DevOps journey: How to do it right
Enterprises have to setup the necessary tools, with the right level of automation, to embark on their DevOps journey. There are multiple tools available today, each of which addresses one or more parts of the jigsaw puzzle that makes up the entire DevOps flow. Enterprises have to design their solutions to suit the requirements of relevant stakeholders in the business. The success of DevOps is heavily dependent on the level of automation in place, and the presence of an orchestrator at the core of this, who is adept in the knowledge of the various tools that make up this jigsaw puzzle. This is typically a one-off engineering activity. Once the tools are in place, the team responsible for running the process must be able to sustain it and implement continuous improvements to the process.
In smaller organizations, having a separate team to run this process will add to costs. So it is expected that the Development, Testing and Operations team take collective responsibilities to keep this process running. With sufficient levels of automation, the DevOps process can be run without having a dedicated team.
DevOps: The game changer
DevOps represents an evolution in how IT services are delivered and supported and is a true game changer in Application Lifecycle Management.
More often than not, enterprises are limited by the availability of simulation environments for executing projects. The number of releases within a year is typically a function of the number of servers available for projects. Traditionally, such environments are re-built on existing servers across different release cycles. This can introduce problems like environment residues – objects or data from previous releases which cause unnecessary side-effects. DevOps with Cloud can help address this problem to a large extent.
Enterprises can use the Cloud to create simulation environments for the initial phases – Development, Functional Testing and System Testing. The DevOps process will ensure that these environments on Cloud are created from scratch for each deployment, eliminating environment residue side-effects. Technologies like Service Virtualization can help address the dependency on legacy systems, which is a major bottleneck while executing parallel projects. Though these parallel projects will eventually get serialized during User Acceptance Testing (UAT), this approach can significantly increase the number of releases for the organization annually.
Further, within each project, DevOps enables the Development and Testing teams to execute their tasks without waiting on the Operations team to make the environments available. As the developer checks in the code changes, the development builds are triggered. Each build automatically creates the artifacts and deploys it into the target development environment. Periodically, builds can be scheduled to deploy artifacts into the Test environments, where automated tests can be executed to test the sanity of the environment and application. Testers can be assured that environments are ready for them to execute their test cases.