Editor’s note: This post was originally written for the eG Innovations blog. You can check out the original here.
Competition is a funny thing. To gain or keep an edge against your competitors, you may need to push the envelope to use newer technologies and processes. But done wrong, that very technology or process could lead to your ruin.
This is where we are with DevOps. The methodology that became popular in the mid-to-late 2000s is embraced by many companies . Done the right way, it will help your organization challenge its competition to keep up with customer and user demands. But done incorrectly, it could lead to more challenges, leading to degraded user experience and product performance. To mitigate these challenges, your organization needs to include application performance monitoring (APM) as part of its DevOps implementation.
The DevOps movement started around 2008 as a way to deal with the idea of agile infrastructure. Around this time, organizations were making the move from developing monolithic applications installed on user desktops to service-oriented architecture (SOA) applications. SOA began to break up the applications into smaller bits and pieces. To accommodate this shift, infrastructures had to change and become more agile to support SOA applications.
As SOA gave way to microservices applications and the increasing rise of web applications, the traditional way of developing and deploying applications was not working. DevOps was created to bring together the development and IT operations teams, which have historically been at odds with each other. Developers want to make software changes as quickly as possible to meet business needs, but operators want to limit those changes to keep the infrastructure they manage more stable.
DevOps brings them together, breaking down the traditional silos. In theory, development and operations collaborate to bring your organization’s products and services to market faster, more reliable, and secure.
Theory is also a funny thing. In theory, your DevOps team will move fast, break things, kick butt, and take names. But without the appropriate steps, implementing DevOps can lead to some performance-related challenges when deploying applications so fast.
DevOps Performance Barriers
Deploying code as quickly as possible will help get features to your organization’s customers faster. But what happens when that code degrades the performance of those features? A DevOps transformation done wrong can lead to some performance challenges for your applications.
When you’re releasing code as quickly as possible, some features may degrade in performance from one release to the next. It could be something subtle in development that turns into an application slowdown in production. Remember the old saying of doing something “faster, cheaper, or good.” You can only pick two. So faster isn’t always better or even good.
Unknown Production Issues
Unless your development environment is a replica of your production, you can be in for a rude awakening once your applications get deployed to production users. Having a one-for-one, dev-to-prod environment is often not the case. Some organizations can support it, but others can’t, whether due to people, money, or both. You have to make do with what you have. And when that happens, a common challenge is running into production issues not known to even exist in development.
Production Issues Occur Anyway
No matter how good your software development process is, production issues will occur anyway. The complex nature of today’s IT infrastructure running your applications as microservices across tens or hundreds of instances means something’s bound to go wrong. The physical connection between two hosts could go down. It has nothing to do with the software, but that’s Murphy’s Law.
To mitigate these challenges, you need to track application performance as it moves through your DevOps toolchain. Integrating application performance monitoring with your DevOps tools will greatly benefit in avoiding or minimizing the above challenges.
APM Benefits for DevOps
If you introduce performance monitoring tools to your DevOps implementation, you’ll be able to ensure that the reasons your organization decided to implement it won’t ruin them. Adding APM benefits DevOps in many different ways
Catches Bugs Early
Using an APM tool as part of your DevOps implementation can help catch those bugs that turn into production issues. Your DevOps tools can help you catch bugs that misrepresent a new feature. But what about a bug that makes a call for something that causes a brief spike? In production, that brief spike could be much longer with more users in the system. An APM tool can help identify the exact line of code that caused the spike in development. The bug is fixable in development before getting to production, and this saves everyone else some potential troubleshooting time.
Gets to Full Visibility
With microservices, today’s applications have their components in various parts of your infrastructure. Integrating an APM tool with distributed tracing into your DevOps toolset provides the visibility needed to see what’s happening across all application components. When certain requests slow down, you’ll be able to identify where this is happening and make the appropriate fixes. This will help improve your application’s reliability across all components and reduce the costs of time spent trying to find the root source of an issue. Also, with a converged IPM/APM tool, you’ll also be able to identify how specific infrastructure resources are impacted as well.
Provides Insights and Trends
Part of DevOps is continuous improvement. Having an APM tool in place tracking the production application performance, you’ll be able to see where you can make improvements. What features are users requesting the most? Which of those features is performing more slowly? With an APM tool, you have that data that can be fed back to your developers so you can prioritize those features and plan appropriately.
Best Practices for an APM and DevOps Marriage
The benefits of APM and DevOps coming together can help give you control over your increasingly complex infrastructure. But to get these benefits, you should follow some best practices.
- Settle on one APM tool for Dev and Ops. Too often, developers are using one tool and IT operations is using another. You want to ensure that your Dev and Ops teams are using one APM tool so that they are looking at the same data from the same source.
- Shift testing left. If you’re using one APM tool, make sure to implement it early in the development process. Don’t wait until the application is in your staging or pre-production environment to start collecting data. Let developers and IT operators see application performance from the beginning. This will allow issues to get addressed early and avoid them getting to production.
- Integrate with other CI/CD tools. Don’t just add monitoring to your infrastructure. You need to integrate APM with your existing DevOps CI/CD tools. This way, code commits can trigger data collection on demand, if needed. Also, detected code-level performance issues should go directly to existing tools developers use such as ChatOps platforms.
- Get the right people. All of the above starts with getting the right people. Like any marriage, you need people who are willing to listen, admit mistakes, and collaborate to get problems solved. Developers and IT operators with a siloed mindset may not ever accept working together. You need people who will come together for the greater good of the organization.
Be the Marrying Type
For your organization to have a shot at beating its competition, you need DevOps to fulfill its goal of helping to adapt quickly to changing user needs. Marrying APM with your DevOps implementation offers many benefits for reaching this goal.
Each organization is different but using the best practices above should get you started. Get the right people together to create the collaboration needed between your development and operations teams. This way, you can get problems solved in your infrastructure, and ruin your competition.