4-minute read
Snapshot
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.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.
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.