DevOps may be defined differently by different people but what many people agree is that the it was born out of the frustration in releasing the software. The two main players in developing and releasing the software have competing objectives. Ops on one hand wants to ensure five star customer experience, stability, minimize outages etc where as the developer is more focused on features, functionality, releases, deadlines etc. at its heart the goal of the devops movement is to encourage collaboration between these two teams in releasing a quality software. Towards that development practices like continuous integration which require developers to continuously check in the code and the code be tested in a continuous manner to ensure that issues related to quality is caught early on.
As much as continuous integration allows the developer to integrate their code on a continuous basis and be tested on a continuous basis its hard to imagine the objectives of devops being achieved without a solid integration with Application performance management tools. APM tools like CA APM monitors the performance of the application on a near real time basis and reports any anomaly. This goes with the principles of devops where the teams collaborate to ensure a successful release.
One of the popular tools in continuous integration space is Jenkins and with 100’s of thousands of available plugin it has become a de-facto standard when it comes to continuous integration. More and more companies are adopting Jenkins to ensure quality release and with CA APM Jenkins plugin the quality and reliability of the release is taken to a whole new level.
CA APM Jenkins plugin provides a two-way integration between CA APM and Jenkins, it not only allows you to pull APM performance data into Jenkins but also allows you to publish key attributes like build number, status etc to CA APM. Let’s take an example to understand this better – say Andrew the developer has implemented a new inventory search functionality and its been considered a key differentiator, Andrew also knows that this functionality could be heavy on some backend DB system and wants to make sure that its tested properly. Andrew is fortunate that his organization has adopted CI and devops and as part of that they use Jenkins and CA APM and leverage CA APM Jenkins plugin. CA APM Jenkins plugin integration allows the user to specify regex based KPI specifier to bring in all key metrics into Jenkins that Andrew can keep an eye on and allows him to set multiple fail conditions. For e.g if a KPI goes beyond a threshold then the build be marked as fail or if a particular KPI in comparison to another KPI breaches threshold ratio then again the build be marked as fail. It also allows key attributes like build number, status, date etc to be published on APM so that the APM admin, app owner etc can keep an eye on the build status without leaving CA APM.
Andrew for his new functionality leverages the plugin feature and configures a condition for “load” to “DB connection count”. If it breaches a certain ratio then he wants the build to be marked as fail and also be notified via email. This will allow Andrew to ensure if any time there are too many DB access/connection count compared to website load he be notified as well build status be set. He also configures another condition on DB response time.
As he checks in the code the Jenkins triggers a build and the tests are run. Because the application is integrated with CA APM, the test data is pulled into Jenkins by CA APM Jenkins plug. Any time the fail conditions are met the build is marked as fail and an email notification is also sent to Andrew and others. Andrew and his testers can look at the performance data in Jenkins either for that particular build or across multiple builds. The plugin also allows Andrew to click on the Jenkins dashboard and be taken in context to CA APM Webview. Once in APM Webview Andrew can select the traces tab for that metric and get a detail information using transaction trace and determine the class and the method that took the most time. Andrew can then fix the code and checks in the fixes. This time the performance was within the threshold limit and Andrew, the operations team and business are happy that issue was fixed before the code went into production and are able to deliver a stellar release to the production.
As you can see CA APM Jenkins plugin combines the power of CA APM and Jenkins to empower and help your organization in delivering a true devops experience.
If you want to find out more about the plugin pls visit https://wiki.jenkins-ci.org/display/JENKINS/CA+APM+Plugin