loader from loading.io

Beyond Root Cause Analysis in Complex Systems

Code[ish]

Release Date: 04/27/2021

How Salesforce Leverages Heroku show art How Salesforce Leverages Heroku

Code[ish]

Robbie Birbeck, VP of Digital Enterprise Technology at Salesforce, joins Julián Duque to talk about how Salesforce leverages Heroku. Filmed at the Palace Hotel in downtown San Francisco, the big star of this episode is Agentforce, which helps Salesforce employees with IT and HR questions, among others. 

info_outline
Building Agentic Apps with RubyLLM show art Building Agentic Apps with RubyLLM

Code[ish]

Vestmark manages more than 1.7 trillion in assets, and its CTO, Freedom Dumlao, joins Julián Duque to discuss how AI is helping its advisors in their day-to-day work. Filmed at the Palace Hotel in downtown San Francisco, the pair discuss the role of AI in development and why all its new products are being built using Ruby. 

info_outline
Engineering Excellence and AI Productivity show art Engineering Excellence and AI Productivity

Code[ish]

In our second video special from the Palace Hotel, Julián Duque is joined by Shiva Nimmagadda, Vice President of Excellence, True AI and Analytics at Salesforce. Together, the pair discuss the various ways his team is using AI to improve developer efficiency, productivity, and output.

info_outline
AI Workflows for Support Ticket Integration show art AI Workflows for Support Ticket Integration

Code[ish]

Filmed at the Palace Hotel in downtown San Francisco, this week’s episode of Code[ish] is the first in a short series of video specials!  To kick things off, Julián Duque is joined by Keegan Bakker, CEO of audience engagement platform Audata, to explore how Heroku helped the app grow from a hobby idea to a powerful tool for major organizations across the globe.

info_outline
AI Agents and Open Source show art AI Agents and Open Source

Code[ish]

This week on Code[ish], host Julián Duque connects with Rizel Scarlett from Block, Inc., to discuss how agentic AI is changing the FinTech landscape. Block, Inc. is the parent company behind popular services like Square, Cash App, and many more. 

info_outline
Getting to the Heart of Twelve-Factor Apps show art Getting to the Heart of Twelve-Factor Apps

Code[ish]

On this week’s episode of Code[ish], Vish Abrams joins Jon Dodson to talk about the role of AI, the ways Twelve-Factor aids developers, and how science fiction shaped a little of their own history.

info_outline
Introducing Heroku Vibes show art Introducing Heroku Vibes

Code[ish]

This week’s episode is an exciting one because we’re talking about our brand-new release, Heroku Vibes! Mauricio Gomes joins Jon Dodson to go over what Heroku Vibes is, what it’s capable of, and how it could be a game-changer for developers and non-developers alike.  Join the pilot by visiting

info_outline
Talking Traces and OpenTelemetry show art Talking Traces and OpenTelemetry

Code[ish]

Jon Dodson has an 11-year Heroku veteran with him on the podcast this week, Principal Member of Technical Staff Alex Arnell. Together they talk through the native integration of OpenTelemetry in Heroku Fir, the benefits of traces over traditional logs, how they assist debugging, and what’s next for observability in modern development.

info_outline
Heroku in the Wild: Vanshiv on Using the Right Tools show art Heroku in the Wild: Vanshiv on Using the Right Tools

Code[ish]

You won’t find too many developers with more experience in the Salesforce ecosystem than our guest this week! Not only is Gaurav Kheterpal a Salesforce MVP and Trailblazer, he also still uses his original Salesforce org from 2007. He joined Julián Duque to discuss how Vanshiv Technologies delivers client work with Heroku, the importance of embracing AI, and why it’s vital for developers to keep an open mind in choosing the right tool for the job.   

info_outline
What’s Possible with Heroku AppLink show art What’s Possible with Heroku AppLink

Code[ish]

This week we’re taking a deeply technical dive into our newest feature: Heroku AppLink! Jon Dodson is joined by Chris Wall, Salesforce Architect and creator of AppLink, to explore what AppLink offers developers and how it brings Heroku and Salesforce closer together. 

info_outline
 
More Episodes

In this episode of Codeish, Marcus Blankenship, a Senior Engineering Manager at Salesforce, is joined by Robert Blumen, a Lead DevOps Engineer at Salesforce.

During their discussion, they take a deep dive into the theories that underpin human error and complex system failures and offer fresh perspectives on improving complex systems.

Root cause analysis is the method of analyzing a failure after it occurs in an attempt to identify the cause. This method looks at the fundamental reasons that a failure occurs, particularly digging into issues such as processes, systems, designs, and chains of events. Complex system failures usually begin when a single component of the system fails, requiring nearby "nodes" (or other components in the system network) to take up the workload or obligation of the failed component.

Complex system breakdowns are not limited to IT. They also exist in medicine, industrial accidents, shipping, and aeronautics. As Robert asserts: "In the case of IT, [systems breakdowns] mean people can't check their email, or can’t obtain services from a business. In other fields of medicine, maybe the patient dies, a ship capsizes, a plane crashes."

The 5 WHYs

The 5 WHYs root cause analysis is about truly getting to the bottom of a problem by asking “why” five levels deep. Using this method often uncovers an unexpected internal or process-related problem.

Accident investigation can represent both simple and complex systems. Robert explains, "Simple systems are like five dominoes that have a knock-on effort. By comparison, complex systems have a large number of heterogeneous pieces. And the interaction between the pieces is also quite complex. If you have N pieces, you could have N squared connections between them and an IT system."

He further explains, "You can lose a server, but if you're properly configured to have retries, your next level upstream should be able to find a different service. That's a pretty complex interaction that you've set up to avoid an outage."

In the case of a complex system, generally, there is not a single root cause for the failure. Instead, it's a combination of emergent properties that manifest themselves as the result of various system components working together, not as a property of any individual component.

An example of this is the worst airline disaster in history. Two 747 planes were flying to Gran Canaria airport. However, the airport was closed due to an exploded bomb, and the planes were rerouted to Tenerife. The runway in Tenerife was unaccustomed to handling 747s. Inadequate radars and fog compounded a combination of human errors such as misheard commands. Two planes tried to take off at the same time and collided with each other in the air.

Robert talks about Dr. Cook, who wrote about the dual role of operators. "The dual role is the need to preserve the operation of the system and the health of the business. Everything an operator does is with those two objectives in mind." They must take calculated risks to preserve outputs, but this is rarely recognized or complemented.

Another component of complex systems is that they are in a perpetual state of partially broken. You don't necessarily discover this until an outage occurs. Only through the post-mortem process do you realize there was a failure. Humans are imperfect beings and are naturally prone to making errors. And when we are given responsibilities, there is always the chance for error.

What's a more useful way of thinking about the causes of failures in a complex system?

Robert gives the example of a tree structure or AC graph showing one node at the edge, representing the outage or incident.

If you step back one layer, you might not ask what is the cause, but rather what were contributing causes? In this manner, you might find multiple contributing factors that interconnect as more nodes grow. With this understanding, you can then look at the system and say, "Well, where are the things that we want to fix?" It’s important to remember that if you find 15 contributing factors, you are not obligated to fix all 15; only three or four of them may be important. Furthermore, it may not be cost-effective to fix everything.

One approach is to take all of the identified contributing factors, rank them by some combination of their impact and costs, then decide which are the most important.

What is some advice for people who want to stop thinking about their system in terms of simple systems and start thinking about them in terms of complex systems?

Robert Blumen suggests understanding that you may have a cognitive bias toward focusing on the portions of the system that influenced decision-making.

What was the context that that person was facing at the time? Did they have enough information to make a good decision? Are we putting people in impossible situations where they don't have the right information? Was there adequate monitoring? If this was a known problem, was there a runbook?
What are ways to improve the human environment so that the operator can make better decisions if the same set of factors occurs again?