What's in store for software development trends in 2020?
Of the software development trends I see across all my clients, the move to truly distributed computing is the most prevalent. For this reason, application observability is gaining importance.
With distributed computing, some of the work is done on the client side, which might be mobile, web or even internet of things. An example shows how failure in this system can lead to a mess: The client side hits an API, which is a transmission interface within an application or from one application to another. For complex projects, APIs might call other APIs, which call databases, which gather data and send it back along this complex chain. When the database represents an application's single source of truth for data, the APIs might call an always-up cache for reads, and writes might go to a writer tool that inserts the change into the source of truth.
When something goes wrong in this system, testers can find it incredibly challenging to determine where the error originated, especially when all these components and links can change.
Application observability describes a system where the tester types in the userid and gets a complete trace of the information flow. Observability tools can show that a call to the API was rejected, the time this rejection occurred and the exact URL. Through application observability tools, testers can also learn about trends, such as what fails often and the biggest problems, and how to fix them. With that kind of data, you can distinguish one-time, minor failures versus deficiencies that dramatically affect the customer base.
Observability is knowledge, and knowledge is power. When a Scrum team has no idea how a code change broke a large system, they must exhaustively test and retest. Minor problems can live on the server for weeks.
If you empower that Scrum team with data, it can figure out how many customers a problem affects and how often. Simply put, observability helps the team debug individual production issues and assess their impact. As systems become more distributed, this knowledge is huge.
Teams can implement application observability in various ways. I recommend a stack trace, but through the systems, along with time-based logs.
Matthew Heusser is managing director and principal consultant at Excelon Development.