Understanding software architecture and data flow is vital when building any maintainable system and debugging the errors. While we are searching for life on Mars, our architectural diagrams and debugging tools remain manual and lifeless. Let’s use GraphDB, pandas, and Python to add life to them.
Before I dive into how to draw less and debug just a little, let’s recap your life as an engineer, which likely looks like one of the following:
If you’ve fallen victim to any of these scenarios, behold! Your prayers have been answered!
In the first half of this talk, we’ll describe an approach that can automatically identify the software design and data flows within your systems. To achieve this, we use algorithmic scrapers and metadata profiling techniques that integrate with distributed trace, code structure, language dependencies, contribution ownerships, and other sources to avoid the toil of manually updating software architecture diagrams and debugging tools.
In the second part of this talk, we will dive deeper into the details of how to use Python data engineering libraries to enrich the collected data and process it for storage in a graph database. The graph structure not only signifies the relationships between components in a real-world manner, but also helps in generating multiple views of the software architecture in an easy and comprehensible fashion. Now, instead of the architecture and data flow diagram being a static JPEG, those auto-generative views can be compiled into interactive and immersive UIs for debugging.
My team built a debugging visualization tool for our organization, Bloomberg, but the approach we took is germane to all tech organizations. We want to share the challenges and lessons we learned during our journey to help you build a similar tool for your organization because why not “Code More, Draw Less, and Debug Just a Little”?!
Yash Saboo is a Software Engineer at Bloomberg, where he is focused on building highly-available, consistent, and reliable workflow platforms for Bloomberg’s Dividend Forecasting Engineering team. His work generally lies at the intersection of distributed systems, databases, and machine learning. As a grad student at the University of Illinois Urbana-Champaign, he studied computer science.