Defense Software Modernization

Modernizing the United States Navy’s tactical weapon’s system.

Role
Software Engineer

Location
Austin, Texas

Tools
C / C++, Go, JavaScript, Docker, Prometheus, Grafana, RTI DDS, Git, Linux, Draw.io

Challenge

This project had the goal of modernizing the US Navy's Cooperative Engagement Capability (CEC) system. As shown in the figure to the left, CEC is a system crucial to tactical tracking and engagement by collecting, aggregating, and controlling both local and networked data on warships, jets, and sensors. For example, by aggregating entity position data from different sources and vantage points, a strategically placed asset is able to better address an adversary entity. Although a powerful mechanism, the software responsible for CEC data aggregation was programmed in the 1990s and is due for an update.

Solution

To demonstrate modernization capability of the CEC system, myself and a colleague applied containerization techniques to a program representing the current CEC software. This process converted the C++ program monolith into a set of microservices with telemetry capabilities. To simulate data into the program, a simulator with the capabilities of recording and outputting data over a network was programmed in Golang. Telemetry is collected by a Golang program and aggregated in a Prometheus database. The image to the right represents the program's custom UI, taking aggregated telemetry at different endpoints and displaying with Grafana.

Design and Development Choices

Containerized with Docker and orchestrated with Kubernetes, the C++ and Golang microservices communicate over an internal network using the RTI DDS publisher/subscriber messaging service by Real-Time Innovations. Telemetry collected through an external Golang microservice is aggregated by Prometheus and displayed on a Grafana dashboard. Machine processing metrics are collected using Node Exporter, providing CPU and Memory usage. The Grafana dashboard is edited using a JavaScript plugin to produce custom graphics.

Result

The US Navy was impressed with the project outcome, which simulated data, sent it to a containerized parser, and interfaced state data between a set of threaded functions. Data throughput was recorded and compared for both the monolithic and microservice versions of the program using the Telemetry engine. This verified the performance of a modernized system to the customer.