Aircraft Tracking project

Published: Mar 2, 2022 by adamfowleruk

Aircraft Tracking Demo

My Aircraft tracking demo is a multi-repo project that has various software and data service components to track aircraft using ADS-B transponder signals. This is the same way flight radar 24 and similar websites track worldwide aircraft.

Business problem we’re solving

Many systems today rely on a mix of live streaming data, ‘current state’ almost-live data, and historic data for analytics. Setting this up to track aircraft worldwide may be mind boggling to you right now, but I’ll show how you can apply a standard pattern to do this, and how simple applications are to write for a systems with many moving parts.

The same pattern exists for any Internet of Things application where you’re collating data from many sources in a streaming manner. Many IT systems are moving from a batch processing to a live event basis now, making reliable messaging systems like RabbitMQ key to powering your applications.

Example real world apps are the UK National Health Service’s (NHS) Spine-2 healthcare application integration backbone - supposedly the largest civilian messaging system in the world! This uses RabbitMQ at its heart to integrate all the apps.

Another recent example was the UK’s Office of National Statistics (ONS) using RabbitMQ to process the 2021 census data as it was being collected by thousands of volunteers in the field.

There are various external useful links for aspects of this project:-

Configuration values

This level 300 guide links to existing and project specific videos. For general videos you will need specific configuration data. This is shown in the below table:-

Setting Value I use in the videos
App namespace adsb
App deployment subdomain adsb.12factor.co.uk

Component tutorials

The following is what we’re going to set up. I’ll add links to videos and files as the work is done:-

  • A ‘baseline’ k8s system with HTTPS ingress and TLS certificates under a target domain
  • An ‘apps’ k8s layer, built on baseline, that provides postgres, redis/gemfire, and RabbitMQ
  • Talk through how the apps are built and work at the code level
  • Creating a secure, re-usable, software supply chain for buildin, testing and deploying the apps to Kubernetes
  • Packaging the app and infrastructure configuration for easy deployment using Helm charts
  • Creating a set of users and permissions for remote Raspberry Pi’s running PiAware / Dump1090-fa to send their data to our app
  • Setting up a Raspberry Pi ADS-B ground stations
  • Configuration and deployment for a set of message driven apps to process incoming data
    • Copy the ‘latest’ record into an in-memory datastore (Redis/Gemfire)
    • Copy all ‘track’ data into a relational database (Postgres/Greenplum)
  • Deployment of a set of UI and REST API apps:-
    • A rest-api to access all current aircraft data, a specific aircraft’s current data, and a specific aircrafts that full flight data
    • A ReactJS based website that renders the above REST data
  • Security lockdown of all the above for a production workload

Future optional enhancements to the base project above could include:-

  • Integration of something AI / ML like… I haven’t decided what yet…
  • Updating the UI to show updates just for visible aircraft, adding an idle viewer timeout, and streaming those updates rather than poll for them, saving bandwidth and processing power
  • A set of app monitoring tools to track application usage
  • High Availability and disaster recovery
  • Refactoring the deployment to use cloud hosted data services, if available

Other related posts on this blog site:-

Share