The traditional split of responsibilities between application development and its operation in production assumes that application performance-related efforts are developers’ business. At the same time, application availability and uptime are managed by operations teams.
Different tools for application development and production operations
This role split has also implicitly changed the way in which profiling and monitoring software has been packaged. We can identify the same type of disconnect there. We have profiling and debugging software on one side, which many see as part of the development process. On the other side, we have monitoring and alerting solutions optimized around notifying about problems, but not solving them.
As a result of this split, developers are limited when troubleshooting performance issues by not having access to live application execution insights. And since it is not possible to replicate production environments, many problems remain unsolved or take much longer to solve, which has a very high cost. Application downtime or bad performance are known to have an extremely negative impact on any business.
DevOps and NoOps tools
As logical as it may sound, this is not the only way things can work. Once we merge the two responsibilities by introducing DevOps, a different picture becomes more logical.
Let’s fast forward to DevOps and NoOps times. Since the responsibilities of developers and operations merged, application developers can be in control of the production environment. More importantly, this now makes production profiling and debugging solutions make sense. Obviously, these need to be specifically designed for production environments.
If we look at Go, a relatively new server-side language created by Google, we can already see evidence of this trend. Golang has built-in production-aware tools, such as a performance profiling toolset. It is safe to run in production and can be accessed remotely over HTTP.
In the nearest future, we should see more open source and commercial software that empowers developers with application execution insights, such as hot spot profiling, etc., from live systems. This will lead to faster applications and much lower MTTRs.