Skip to content
Network management platform UI: threshold alarms, KPI drill-down viewer with performance charts, and a network dashboard with a cell map

Network Management Platform for a Telecom Operator

2019 — 2021
2 minutes read

For two and a half years I was the primary developer of a platform that a mobile operator's engineers use to monitor network performance and manage its configuration.

The problem

Radio-network engineers have two pain points. The first is heavy performance data: KPIs across Ericsson and Nokia equipment, UMTS and LTE networks. The second is configuration: a mistake in a hand-edited file goes straight into the live network. The platform covered both in one web application: KPI analytics, alarms and reports, plus schema-driven forms that generate validated configuration files.

My role

Remote full-stack developer, 2019–2021. A small team had been building the product since 2015; during my time on it I was the most active contributor, taking tasks from spec to production deployment.

What I built

  • KPI query optimization. Profiled and rewrote the heaviest analytics queries: fixed a broken reporting view, removed an unnecessary JOIN, picked the right indexes, and restructured query generation to get rid of temp-table filesorts. The worst query went from ~800 seconds to ~25.
  • Scheduled reports subsystem. Wrote the spec first, then built it from scratch as a separate Dockerized Node.js service: cron schedules, XLSX report generation, email delivery. Hooked it into five analytics modules, and recurring reports started reaching engineers on their own.
  • Schema-driven configuration forms (datafill). The module where engineers fill in parameters of network sites (base stations) and the system generates configuration files from that. Added support for multiple schemas per sub-network and built a schema management UI with JSON validation, so a mistake in a form definition shows up before any files are generated.
  • Frontend migration to Vue.js. Step by step, embedded new Vue components into the legacy Knockout/Durandal frontend. That let the app modernize without a rewrite from scratch.
  • Production support. Got to the bottom of a data-pipeline incident: after a dependency upgrade, the collector importing vendor data silently broke. Fixed it and backfilled the missing data. Rolled out updates to the operator's server in supervised sessions, with a security review on the client's side.

Results

The platform was in production with the operator's engineers the whole time I worked on it. Heavy reports stopped hanging for minutes, and recurring reporting became automatic. Configuration is now assembled in validated forms instead of hand-edited files.

Stack

Node.js · Express · Vue.js · MongoDB · MySQL (MariaDB) · Docker · node-cron · XLSX automation

Share this post