“As with any kind of software, the best for the job is one whose function matches your data structures,” said David Brian Ward, CEO and Founder of Telegraph Hill Software.
David and his team were searching for a tool that could effectively manage, in both cloud and virtual environments, the complex and frequently changing interdependencies of their components.
In this week’s 5-Minute interview (conducted at GraphConnect San Francisco), we discuss how Telegraph Hill Software successfully deployed Neo4j to develop a Software-as-a-Service (SaaS) solution for their customers.
Q: Tell us a little bit about Telegraph Hill Software.
David Brian Ward: We founded the company in San Francisco about six years ago, and we work primarily with the fast-growing SaaS startups in the San Francisco Bay Area. We provide outsourced product development services, elite engineering teams, and staff augmentation — really whatever is necessary on the technical side of the business.
Q: Talk to us about how you use Neo4j.
Ward: We’ve worked with Neo4j in a variety of capacities, including to model social networks in a workforce management application for grade and high school teacher networks. This included modeling the teacher within the school district and the administration, for example.
We also use Neo4j to manage IT cloud infrastructure at scale for some of our clients. We’ve worked together on a mutual customer — Lending Club — in which the Neo4j graph database was used to manage hundreds of thousands of hardware and software components as part of a software as service (SaaS) solution.
Q: What made you choose Neo4j?
Ward: As with any kind of software, the best software for the job is one whose function matches the data structures.
In this particular case, Neo4j was the perfect repository match for mapping networks of hardware and software components with complex interdependencies that change rapidly in near-real time in cloud and virtual environments. We first started this project using relational databases and some key-value stores, but once we started using Neo4j we quickly identified it as our solution.
Q: What are some of the most interesting or surprising results you’ve had since working with Neo4j?
Ward: One of the most surprising discoveries was how easy it was to learn the Cypher graph query language. It’s just not that different from SQL and the training curve was very efficient. The other surprise — which we had hoped for and turned out to be true — was the extensibility of the graph database.
We represent hundreds of thousands of virtual components and constantly extend and enrich the entities that we represent. This has turned out to be really easy to do with a minimal DevOps workforce. That’s one of the benefits: the cost efficiency of using Neo4j for this sort of application.
Knowing everything about Neo4j that you know now, what would you do differently if you could go back to your very first project?
Ward: Going back to the fact that the workforce is mostly based and experienced in SQL, we would have made less of an effort to encapsulate what’s different or unique about Neo4j.
If you have the right repository data structure for a particular application, you should adopt it without hesitation. This is a realization we hope to bring to other customers around the world.