Skip to content
Briebug

Assessment case study · Network performance monitoring software company

NETSCOUT: a migration strategy to move a monitoring UI off AngularJS

NETSCOUT needed to move its nGenius Pulse UI from AngularJS to modern Angular before AngularJS reached end of life. We ran a timeboxed architecture assessment and delivered a migration strategy.

  • AngularJS
  • Angular 9
  • Angular Elements
  • Nx
  • NgRx
  • TypeScript

The situation

  • The nGenius Pulse UI was built entirely on AngularJS, and AngularJS was going end of life on June 30, 2021.
  • Discovery notes counted over 200 pages to migrate, and few engineers were fluent in modern Angular.
  • NETSCOUT had to decide whether to migrate in one release or in several, and it also wanted a dark mode.

What we found

  • The UI relied on $scope and $rootScope contracts.
  • Test coverage was lacking.
  • The startup flow was unclear.
  • State and cache handling were unclear.

What we did

Architecture assessment

We reviewed the AngularJS page framework and documented goals, findings and a proposed architecture.

Hybrid proof of concept

We built an Angular 9 and AngularJS hybrid proof of concept on the site overview page, with a proposed page framework and hybrid router code.

Incremental migration path

We recommended Angular Elements over ngUpgrade and an AngularJS to Angular bridge, so current development could continue during the migration.

State and test strategy

We recommended separate data services, caching, NgRx state management, and unit and end-to-end test coverage of at least 90%.

Build-out plan

We laid out a three-quarter plan in 3-week sprints covering TypeScript, the hybrid app, dark mode, NgRx state, tests and cross-training.

The result

  • NETSCOUT received the nGenius Migration Plan in March 2020.
  • NETSCOUT moved into a prototype phase on the site overview page.

Tell us what is broken.

A short call with a senior engineer. Tell us what is happening, and we will tell you honestly whether an assessment is the right next step.