Implementing DevOps With an Integrated Tool Ecosystem
In this article, Sanat Singha explains how multi-tool integration support helps organizations perform the DevOps lifecycle.
Join the DZone community and get the full member experience.Join For Free
DevOps is the marriage of application development teams with system operations teams and their philosophies and actions. In an Agile environment, development, testing, and operations all must work together to meet frequent iterations, release, and delivery goals. This needs a collaborative development environment that supports data orchestration with other lifecycle tools.
This article will explain how multi-tool integration support helps organizations perform the DevOps lifecycle that includes continuous planning, Continuous Integration, continuous testing, continuous monitoring, Continuous Delivery, and continuous feedback mechanism.
The Drivers of DevOps
Today, with rising competition and the need for early-to-the-market, the whole software development industry is going through a paradigm shift. Agility has become inevitable across the organizations. Shorter ROI cycles, frequent releases, increased CRs, and the use of different IT systems and tool technologies have made the situation more competitive.
Currently, the industry as a whole demands higher transparency, maximum visibility, minimum turn-around time, lesser human intervention, and higher process efficiency at every stage of development to delivery.
Organizations that manage build, deploy, and delivery processes in specialized tools still face difficulties with data orchestration and process automation across tool-chain. In an Agile environment, developers and testers not only need to ensure that code changes work and integrate well but also monitor that frequent iterations do not make the product unstable. This needs cross-tool collaboration in a seamless manner.
The process chain of "Code a Build a Provision a Test a Defect Fix a Deploy a Release" needs to run continuously and smoothly without compromising on delivery deadlines and product quality.
Automation Is the Catch Line
However, in today’s world of Continuous Delivery and Sprint-based development, manually setting up the test, build, and deploy environment is burdensome and time-consuming. Software teams need to automate the entire cycle of build, provisioning, and deployment of test environments, including the tool, scripts, and test data to ensure rapid delivery. They also need to collaborate around the application architecture and monitor event-action based mechanism for seamless data flow across tool chains.
Reports show that the most important DevOps components are IT automation, Agile development, and collaborative teaming of personnel. Therefore, without centralized orchestration of tools, achieving DevOps is not a realistic situation. Since organizations spend around 73% of their DevOps budget in new tool acquisition, it is important that they know how to get them to work together to avoid DevOps obstacles.
Most organizations, in the process of connecting their existing and new toolsets, search for an integration methodology that is scalable, reliable, and easy to maintain. Point-to-point integration between tools helps but to a limited extent. Even a single change in integration rules involves complex coding and high maintenance across development, test, and deployment cycles.
How ESB-Based Integration helps
An ESB-architected integration hub connects both existing and new tools together and supports seamless data flow between them across DevOps lifecycle. Once integrated, cross-tool data from development and operations tools become readily available to every stakeholder for their use. The benefit of using ESB-based integration is that you can plug in or plug out any tool to the integration bus based on your connectivity requirements.
In a typical scenario, DevOps teams use a series of cross-functional tools starting from project planning to delivery and operations. Neither of these tools has built-in integration with each other, resulting in an inconsistent flow of information among tool users.
For example, project managers use Application Lifecycle Management (ALM) or Agile planning tool for detailing the scope of work and tracking progress. Developers upon unit testing (using another tool) check-in code to Source Code Management (SCM) repository from their IDE. They also perform code quality analysis before committing to SCM. When all these planning, unit testing, code analysis, and SCM tools are connected through common integration hub, developers can easily achieve Continuous Integration and manage everything from within the IDE.
After successful check-ins, build engineers trigger SCM tool for automated build and testing. Upon successful build, testers engage in continuous testing using manual and test automation tools followed by provisioning for continuous deployment. They also perform Load testing, API testing, Security testing using separate tools. All these need integration support for real-time data flow between build, and testing tools.
DevOps system also includes Application Performance Monitoring (APM) tool for Continuous monitoring of memory consumption, CPU usage, DB health and release tracking. Operations team use Help Desk and ITSM tools for continuous feedback generation and customer support. In addition, Delivery managers use Continuous Delivery tools for defining and tracking release pipeline through the graphical interface.
When all these tools are connected to a central integration hub, product release and help desk operations become faster and efficient. The integration between development and ITSM tools facilitates in continuous feedback generation which helps in continuous improvement of product quality.
In an integrated tool ecosystem, a project manager can create DevOps workflow based on business logic and automate the data movement across tool systems. Business analysts, developers, testers and delivery managers also get a real-time update on development progress and keep track of actionable items. Supervisors can route cross-tool data to a central repository and generate meaningful reports and analytics for taking business decisions.
ESB Integration Bus Facilitating Adoption of DevOps
An ESB based integration tool helps organizations to implement and leverage DevOps best practices by establishing connections across all participating tools. An integrated tool ecosystem helps achieve the following:
- Real-time collaboration between development, delivery, and operations tools.
- Continuous planning from requirements capturing and review to design and code analysis.
- Cross-tool traceability for defining relationships between various data objects.
- Test strategy implementation for continuous testing.
- Continuous Integration through automatic triggering of build on successful completion of code check-in.
- Continuous testing through workflow based automatic triggering of both manual and automated test cases.
- Schedule based test automation script execution enabling Continuous Delivery.
- Continuous monitoring of release quality through reports and dashboards.
- Automated defect identification and resolution for faster HelpDesk response.
- End-to-end traceability providing better release predictability and change impact analysis.
- Meaningful reports, metrics, and KPIs for quick decision-making.
- Continuous Delivery through tracking release pipeline.
Inter-Tool Connectivity Brings Continuity in the Development to Delivery and Operations Cycle
Let's consider a sample DevOps scenario in an IT Service organization. The organization uses an ITSM tool for managing support tickets submitted by customers. On Ticket submission, they automatically pass to an ALM tool as User Stories or Defects for internal development. On allotting to a sprint, developers and testers view the User Stories or Defects from IDE, SCM, and test tool. Once the coding is complete and codes get checked in at an SCM tool, an automatic build gets triggered using a build tool.
Upon successful completion of the build, tool provisioning is done through a VM. The successful build can be automatically deployed using deployment tool and automated tests can be executed through a test automation tool. Test results can be captured and linked with test cases and the source requirements for traceability. Defects, raised in the defect tracking tool for failed test cases can be automatically routed to developers for fixing.
DevOps Scenario Achieved in a Collaborative Tool Environment
Once connected to an integrated tool system, users get a complete visibility of tool records and their interrelationships from within their own tools. For example, developers, testers and help desk managers get complete traceability view between development artifacts and change requests or defects.
When all the tools participating in DevOps sync to each other, developers can easily view the support tickets reported by operations team right from their own IDE. The help desk team also gets a real-time update whether a change request has been implemented or a defect has been resolved by the development team. The latency in communication between dev and ops team gets eliminated to a great extent. Customers also get frequent updates from help desk team which makes them happy and confident about the product performance.
Implementing DevOps is not a “do once and for ever” type of task. Just deploying the right set of tools to the right users doesn’t serve the purpose. Proper connectivity between and across DevOps tools chain is a necessity to create a collaborative work environment around Dev and Ops teams.
Opinions expressed by DZone contributors are their own.