This guest post comes from Gabriel Torok, CEO of PreEmptive Solutions. PreEmptive’s big data application analytics allows developers to gain insight into their applications running in production, to hit quality goals, lower maintenance costs and increase user satisfaction. Gabriel’s blog may be found here.
By Gabriel Torok
The DevOps movement is about addressing market forces that demand faster release cycles by increasing coordination between development and operations. Traditionally, DevOps has focused on getting the application into production more quickly, especially through automation of deployment processes. If a new application version is deployed once a year, a manual deployment process may be sufficient. But if deployments are made every few weeks, automating the deployment process will save time, money, and significantly reduce errors.
Automating test and deployment processes is a great first step. But that is not enough. Issues still arise in production. And sometimes those issues are severe enough that they must be addressed immediately, totally disrupting the schedule. And often the resolution to such issues depends entirely on how quickly it is discovered, diagnosed, and fixed. If a serious issue is found quickly, it may be best to temporarily revert back to the previous version immediately. If the issue is not found quickly then the only option may be to move forward, working on a fix while the problem continues to grow.
The key to avoiding this type of high-risk scenario is to quickly identify the problem in production and focus the development team on the issue as soon as possible. Automation is again the answer. You need to discover your production issues immediately and automatically. And you need the information to diagnose the problem and make it actionable allowing the team to quickly fix the issue. You can’t wait or even expect that your customers will call you when they find a problem.
So, the focus of the next wave of DevOps will be reducing the time to discover and diagnose issues in production and effectively using data to continuously improve an application’s value. "Fast Feedback" will separate the high performers from the low performers. This wave will be supported by Application Analytics where real-time feedback from an application in production goes to a central location, where it can be aggregated for alerting and/or reporting.
Figure 1: Faster release cycles demand automated deployment to get applications out faster. Faster release cycles demand discovering and diagnosing production issues gaining insight quickly and through actionable analytics.
Application Analytics allow development organizations to meet pressing demands to build higher quality software across an increasingly diverse array of environments more quickly and in shorter release cycles. Frequent updates can greatly benefit from automated, actionable information to reduce the mean time to fix and improve an application.
Application Issues and their Feedback Loops
Figure 2: Feedback from Production improves Quality and keeps the focus on Customer Value.
Production Incident Detection
Reduce the Mean Time to Fix Applications – Gain Continuous Quality
Because you can’t simulate production, you have to assume that some incidents will appear in production. High performing companies must discover and diagnose production incidents as fast as possible. The response time requirements are typically measured in days/weeks. Let’s step through what this would look like with application analytics for a few scenarios:
1) An application is released in production. Very rapidly, failures come back and they are surfaced as work items in an ALM system. The development team has all the information to fix the problem, so they fix it, test it, close the work item and re-release the application to production.
2) An automated deployment tool does the first stage of a multi-phase release into production. Very rapidly, failures come back and one of them is very serious. Based on that issue, the deployment tool halts the deployments. Operations identifies the issue as serious, and redeploys the previous version while development works on a fix.
3) After an application is released into production, an infrequent, hard-to-diagnose issue crops up. Based on rules (frequency, people/customers affected, criticality, etc.), the issue is surfaced as a work item in an ALM system and appropriately triaged and assigned by the team lead.
Reduce the Mean Time to Improve Applications – Gain Continuous Value
Sharp insight into how users interact with applications in production allow teams hit quality goals, lower maintenance costs and focus on the issues that matter most to their customers. The response time requirements are typically measured in weeks/months. The scenarios might include:
1) The development team needs to prioritize which items in the backlog will get done for the next release. Gaining insight from analytics, they can validate which features would have the greatest positive impact on their customers and prioritize appropriately.
2) The development team would like to deprecate an older feature that is difficult to maintain. Using analytics, they are able to verify that almost none of their customers are still using the older feature and they can safely stop supporting it in future releases.
3) Issues that are not themselves fatal can sometimes set up the conditions that later cause an application to fail. Because of the insight gained from analytics, the development team is able to observe usage patterns that eventually precede failures and fix a problem that was otherwise undiagnosed.
Figure 3: Application Analytics allows organizations to gain sharp insight into applications running in production helping to hit quality goals, lower maintenance costs and increase user satisfaction.
A quick build-measure-learn cycle is not possible if the “measure” portion is not automated. This feedback loop can help your team efficiently validate your backlog priorities against real world usage patterns and prioritize bug fixes in an optimal manner.
DevOps originated with a focus on continuous integration and delivery where development and operations teams work together with the single goal of agile delivery to production. But development and operations teams need to keep doing more. They need to hit quality goals, lower maintenance costs and focus on the issues that matter most to their customers and analytics are a foundational piece. Efficient, actionable, fast feedback (provided in part by analytics) will separate the high performers from the low performers. High performing teams (the "DevOps poster kids") are beginning to invest heavily in analytics. The next wave is here.