Giving Developers the Tools They Need to Innovate
The word “innovation” has come to mean various things. For many, it draws up images of great modern innovators. For developers, it’s the driving force behind a day’s work.
It’s the ability to get quick feedback early and iteratively in the development cycle in order to get an idea out into the market quickly, and course correct if it’s not perfect. For developers, innovation doesn’t just mean coming out with a disruptive, market-shifting product or service. It means finding ways to increase speed to market, reduce cost, deliver high-quality software, better rates of customer adoption, and decrease risk in product and service delivery (McKinsey).
DevOps = Innovation
This is all made possible by the continuous delivery principle inherent to DevOps. In the past, so many good ideas would die off because it could take upwards of nine months between ideation to production to release (thank you, waterfall development).
DevOps has been the answer to this problem. It has put developers at the center of the process, giving dev and engineering teams immediate feedback to shorten the process. But what gives developers, engineers, and operations teams the ability to enable DevOps?
Enter: an inside-out view into cloud environments.
The secret sauce to DevOps
Traditionally, developers have relied on internal pillars of observability—metrics, tracing, and logging. These are elements you have inside of the system that communicate the status.
Logs communicate different types of errors and events, such as who accessed the system, what they accessed, application errors, and much more. Tracing gives us a view of all the services involved in a single distributed transaction by reporting timings and events while following the request path. Metrics enable you to report everything from very specific counters and timings to broader, more business-relevant system performance indicators customized for your environment.
But it’s having an inside-out view into cloud environments enabled by combining these internal monitoring functions with the external user experience perspective that rounds out a developer’s visibility into application environments and truly enables DevOps and in effect, innovation.
With user experience monitoring, you get feedback from outside your system about the overall experience from a user’s perspective during utilization. This includes how an application is rendering (i.e., images are loading too long) to whether user-initiated requests are taking too long (i.e., communications between systems isn’t efficient and we are making too many API calls). These types of activities combine to affect the user experience in a positive or negative way.
Putting it all together
Let’s think about the inside out view—metrics, traces, and logs (internal) plus user (external)—comprehensively in terms of enabling innovation.
Logs can tell you if you have processes that need to be streamlined so you can improve your overall application performance. The key to getting the most out of logs is to think of log management not as a jumble of discrete events within files littered across the distributed system, but as different pieces of an interconnected whole. Collecting log files from all the relevant sources, and then interleaving and interrelating them is like building a jigsaw puzzle. Once you have all the pieces of information connected, you have a complete story of how the system performed. This interconnected approach not only greatly simplifies troubleshooting and debugging, but also turns your event logs into real, actionable data. Data that can provide you with insights and help you spot patterns, and data you can use to spot opportunities for innovation. With this knowledge, you can streamline the entire experience, innovating by increasing the speed at which you can deliver information to the user.
When it comes to tracing, it’s all about analyzing performance to enable innovation throughout your DevOps processes. For steady state problems, tracing can identify latencies, resource, and capacity usages; for anomalistic request flows, tracing can identify problems with communication failures or timeouts. Understanding this context in terms of application performance provides the opportunity to innovate the DevOps process and strengthen system performance overall.
Tracing can also drive innovations by means of reducing cost and overhead. For example, tracing can enumerate what a component depends on, and what depends on that component—understanding these dependents allows you to identify which work is driving up expense. For example, if component A adds significant workload with requests to component B, you can understand that this increase in transactions also increases spend with your cloud vendor. All of this data can be used to focus performance and cost reduction innovations back into the DevOps process.
When it comes to metrics, system performance data is directly linked to key business performance indicators—important factors when it comes to increasing innovation. With metrics, we can understand how to measure and track the performance of key transactions, components, and applications to prioritize performance improvements when systems inevitably go down or fail. This helps us to enable our systems and applications to be resilient and fault tolerant—particularly relevant factors when the environment is your source of revenue.
For example, if each time your transaction processing service goes down it takes more than two minutes to recover—translating into an average of 10 lost sales or $10,000 drop in revenue—devoting resources to understanding and preventing the issue will be a priority. In this way, metrics can focus attention and resources on system areas that will have the most impact and feed into the continuous improvement process.
In DevOps, customers are the users of the application, and their desires and expectations are constantly changing, making innovation a necessity. If you want to stay in business, you need to know what users want, and be aware of how those desires change over time.
For example, if this week users want apples and next week they want pineapples, identifying this shift before your competition affords the opportunity to wow your customers, increase revenue, and turn your users into faithful customers. User monitoring can help you detect these shifts and anticipate future user needs. Are there more searches for a particular item? Are there fewer visitors on this product page than last week? Are users spending more or less time on the setup page? These elements can be early warning signs of a shift in user needs and expectations. In harnessing these insights and feeding them into the DevOps process, you can drive innovation and stay ahead of the competition.
Visibility = DevOps = Innovation
Without the ability to visualize cloud environments from the inside out, developers would have no way to iterate or make their apps and websites better.
Logs will give you the detail, traces will connect the pieces to form a path, and metrics will give you a detailed performance view. User experience will round out your external perspective.
If you know how fast something is, you can make it faster. If you can measure, you can monitor. If you have visibility across users, metrics, traces, and logs, you can guarantee the most efficient DevOps processes—you can guarantee innovation.