drone capturing images of utility power lines

4-minute read


In the aftermath of a series of wildfires caused by aging infrastructure, one utility company began a systematic inspection process using images captured by drones and helicopters to identify maintenance needs before they become a problem. A cloud-based system to manage the images and the records relating to their inspection was quickly built based on the earliest approach to this critical initiative. When the limitations of this system became apparent, Logic20/20 built an architectural foundation to allow for efficient feature enhancements and reduced technical costs.

We brought our expertise and experience in

  • Database architecture
  • Application architecture
  • Test automation
  • Full-stack development
  • Enterprise application integration

Keeping West Coast communities powered up

One of the largest utility providers in the United States, our client delivers electric and natural gas service across 70,000 square miles of West Coast territory. Its staff of more than 20,000 employees serves approximately 16 million customers. The organization has received awards and other recognitions for its operational excellence and emergency response initiatives.
When the system’s limitations became apparent, Logic20/20 built an architectural foundation to allow for efficient feature enhancements and reduced technical costs.

Dealing with growing pains

Our client’s asset image analytics system was built to make a new, high impact process more manageable, and it fulfilled that purpose. However, as the new initiative evolved from a basic process to a series of stages to improve the quality of the inspections performance and address the nuances of inspection results, the system soon reached a point where every new feature resulted in one or more new challenges.

Implementing strategic solutions to streamline application development

In a common response to such issues, the first approach to clear these bottlenecks was to expand the application team. Fortunately, one of the new team members was a senior full-stack engineer from Logic20/20 who quickly realized that the bottleneck was caused by unmanaged technical debt. Project leadership put into place processes to reduce the technical debt, which stopped the bottleneck from tightening, but failed to reduce the struggle to add new features while the initiative continued to expand. The next step was to bring in a two-person team consisting of a Senior Solution Architect and a Senior Technical Lead from Logic20/20 to assess the system and provide recommendations. After almost 1,000 hours of interviews, code reviews, and initiative road map discussions, Logic20/20 recommended the following:
  • Take the tightly coupled, monolithic projects of the existing system and use them as a reference for what features were required to support both current and future functionality.
  • Divide the functionality into services based on what external systems they interacted with, what internal processes they managed, and the functions that were common across multiple processes.
  • Revise the database schema to eliminate confusing, constraining redundancies and provide an object model of data types that were managed within the system.
  • Replace the multiple repositories and the inherent version confusion between them with a monorepo so that the interaction of distinct apps, separated by system and process concerns, could easily be understood by any developer focused on specific apps.
  • Move from common JavaScript to TypeScript so that strict type definitions prevent runtime issues that are highly difficult to debug in production.
The network diagram of the two architectures, old and new, did not look very different. This was by design, as the external systems were still necessary. What did look very different is how the components within the boundaries of the image inspection scope were re-arranged to remove redundancies. Another key aspect of the new architecture was the introduction of a middleware layer through the use of Nest.js. Where previous features and functional enhancements were either built as complete one-offs or the result of cloning a collection of existing components that did something similar (resulting in double the maintenance), the addition of an opinionated library to manage interactions between the database and service clients provided a pattern that could be followed without adding redundancy when something new was needed. This pattern was expanded to cover different levels of complexity, as pictured below:
Solution deep dive service templates

By having app design patterns, the time that was required (and often skipped in the previous system) for solution design was reduced. This, combined with the monorepo, where all components were readily visible through implementation, eliminated redundancies that had previously piled up technical debt such as duplication of maintenance and refactoring work.

Logic20/20 eliminated redundancies that had previously piled up technical debt such as duplication of maintenance and refactoring work.

Achieving transformative outcomes

With a new architecture to follow, the application team was able to build a new system that is designed for expansion and easier to both maintain and troubleshoot, resulting in a significant reduction in the time it takes to deliver new functionality as well as production issues being resolved in minutes rather than days or hours. Logic20/20 provided key team members in the realms of database architecture, application architecture, test automation, and full-stack development to help the in-house team deliver the initial MVP in time to address the 2024 annual inspection cycle and plan their next functional expansion.
Monorepo workspace and packaging

Want to take your asset image analytics to the next level?

Scott Nelson
Senior Technical Architect Scott S. Nelson has over 20 years of experience consulting on robust and secure solutions in areas such as multi- and hybrid-cloud, system integrations, business process automation, human workflow management, and quality assurance innovation.