Every single day it gets more and less and more and less but mostly more complicated to conceive, research, plan, develop, build, secure, market, sell, support, enhance, evolve, etc. a product. What starts as two people burning the midnight oil after their day jobs end turns into teams of functions working together and apart to bring solutions to problems to reality. As a startup team snowballs through series A, B, C, D, E, F, G, and so forth, information accumulates. But where does it go?
Individuals are the ones with the most knowledge about a system. These are the people who are systems thinkers by nature or force who are tracking relationships in their heads, pull requests in their repos, and code within their teams.
What if this was a shared responsibility?
The tech industry has gone through a few attempts to solve this knowledge problem. But we’ve done it with a relational database model in mind. We needed data to be contained. Siloed. Relationships in containers. Just look at the movements of the recent past:
I believe the problem those movements were trying to solve was and continues to be a lack of context. We were building frameworks but we needed to be building… context. Simple as that.
Today, writing code is more complex. It’s no longer 100 lines of code to get a feature out the door. To solve this, companies keep moving people into new team configurations from Agile to Service Ownership. With the hope that the size and shape of the team will solve the context problem.
But in the wise words of my fellow co-founder and OpenContext’s CTO, Alice Chen: “The only reason we have things called DevOps and DevSecOps is that we can't see things from different points of view… What they fail to see and what there hasn’t been a tool that shows is that we all want the same group of information just sliced differently.”
In the next section, she shares some important background information about graph databases and how we’re using the technology to provide value through shared context vs. microservice mapping:
A graph database is a way of collecting and organizing information that stores both the individual data points as entities as well as the relationships between them to provide a full picture of an entire system.
Gartner predicts that “by 2025, graph technologies will be used in 80% of data and analytics innovations, up from 10% in 2021,” based on how helpful it is for rapid decision-making across teams and organizations.
Well if you want to get more technical, FreeCodeCamp has a detailed explanation of the two types of graph databases, but, simply put for our purposes: Graph databases store information/inputs as nodes and the relationship between the information/inputs as edges.
The difference between a relational database and a graph database is that in a relational database you need to know all the entities that will become tables in your relational database and how they relate to each other ahead of time. In a graph database, relationships don't have to be known—that's the whole point. The relationships between the nodes in a graph database are an entity in themselves.
It's the difference between having to design a relational database which requires knowing the whole data set ahead of time versus knowing parts of the data set and learning even more about it from the graph database.
As TechTarget puts it “The most notable difference between the two is that graph databases store the relationships between data as data. Relational databases infer a focus on relationships between data but in a different way. The relational focus is between the columns of data tables, not data points.”
If you’re just trying to map the knowledge of your company, by all means, use a relational database but if you’re trying to gain context that goes deeper than the surface-level knowledge you’re already aware of, a graph database is the way.
Graph databases are great for extracting relationships. That’s why most social media platforms and dating apps like Hinge use graph databases to map potential romantic matches based on having connections in common on other social media apps. They can show relationships between things that have no prior knowledge of each other.
Fraud is another sector that uses graph databases because it’s looking for relationships. It’s often trying to detect suspicious behavior by matching things like a high number of IP logins, for example.
If it wasn’t clear from the name, what we’re trying to do at OpenContext is provide context. It’s impossible to achieve context by asking the questions you’re already thinking about. We want to help organizations see with their own eyes what they’ve been missing.
With a graph database, OpenContext allows product teams across all functions—ops, devs, security, etc.—to input what information they do have access to and uncover all kinds of data about the relationships that exist buried under the surface. From there, the insights can be used to work smarter in every sense of the word.
Let’s take Stacie. Stacie is a new application developer at Sneakers which broke off from PlayTronics. Stacie wants to understand her team’s code. She’s part of team Whistler but knows that they impact teams Mother, Crease, and Arbogast. Stacie wants to find out who are the subject matter experts, and where the documentation around her code lives. Today, this takes around six months.
In order to identify dependencies without OpenContext’s graph database, Stacie needs to do a lot of research and leg work, for example:
With a graph database, we can take the teams to technical stack data and look at different slices. Stacie can see the Whistler code. View a cross-section of the code that impacts Mother, Crease, and Arbogast. Or look at the specific code path she is working on and how it connects to the rest of the technical stack.
Stacie can see a graphical view of the relationships associated with her code and who else depends on it by traversing as many steps through the technical stack as she needs. The Context Catalog becomes a way for the organization’s team to navigate the technical stack whether they have Service Ownership or not. The graph database does not care.
Leveraging a graph database model, Stacie will be able to identify the security owner for her team. Sneakers is concerned about keeping secrets safe. Marty, the head of Security, is her go-to for security questions. As part of the documents for team Whistler, she can track the how and why for Sneakers features, specifically why team Whistler’s security features are key differentiators from PlayTronics CEO, vision.
Let’s take it a little further.
Via the graphical view, Stacie has noticed that if this one load balancer goes down, three hops away, her team is going to be paged. This gives Stacie the information she needs to write some policies for alerting as well as, more detailed steps in the run book related to when to page team Whistler and why.
When it comes to systems thinking, Stacie can be mindful about tracking architecture changes. Specifically, moving from a monolith to microservices. We all know how challenging that can be.
With the graph database, Stacie can look at the technical stack holistically. She can also identify which teams are connected and how, and reach out to partner on timing, impact, and level of effort. She understands when to bring in Marty or team leads from Mother, Crease, or Arbogast.
Further, Stacie can make smarter and more efficient decisions by visually tracking the primary, secondary, and tertiary impact of the code paths during the migration creating a cleaner stairstep from monolith to microservices.
What users want is a way to traverse the code path, infrastructure, and teams. To do this, you need the fluidity of a graph database to capture those fuzzy pieces around the edges.
In fact, at OpenContext, we think being able to visualize context from a graph database view allows folks to:
The graph database is without emotion. It’s going to show you the good, the bad, and what needs attention now. We believe it’s a Systems Thinkers, Developer, Ops, Security, Release Engineer, QA, and Manager’s, new best friend.