Today, we are excited to talk about FlightAware Firestarter. FlightAware offers the most robust aviation data sets and predictive insights available in the industry. Some organizations leverage a query-based model called AeroAPI (formerly FlightXML). Enterprise organizations might prefer access to the entire database, Firehose. Firestarter makes it easier than ever to integrate data from FlightAware’s Firehose data feed into software applications of all shapes and sizes. In this post, we’ll be detailing our motivations for the development of Firestarter as well as how it can help you get started with Firehose.
Why we created Firestarter
Over the last 15+ years, FlightAware has amassed one of the largest repositories of aviation data in the world. One of our biggest challenges is figuring out how best to make this data available so that it can be used in any application our customers dream up. Our first foray into addressing this challenge came early on in the form of AeroAPI. AeroAPI is a query-based web API that makes it easy for developers to integrate our flight data into their mobile apps, websites, and other applications.
Not all types of applications are well suited to the query-based API model, though. In cases where a user needs to see the latest information with minimal latency, it makes more sense to push that data to the application instead of the application making periodic requests for it. It was from this concept that our Firehose Flight Data Feed was born. Firehose is a streaming data feed that provides up-to-the-second information about flights, delivering worldwide data as quickly as an application can consume it.
As powerful as it is, Firehose’s API model is not as familiar to many developers as the query-based model utilized byAeroAPI (and most other web APIs available today). There are a number of caveats that a developer needs to be aware of when working with a streaming data feed, such as detecting socket timeouts, reconnecting without data loss, and storing the data efficiently. Once we learned of these (and other) pain points experienced by our Firehose customers, we decided that we could go further in easing the integration of Firehose into their applications.
Enter Firestarter. Firestarter is a collection of services that will make it as easy as possible to quickly begin using Firehose data in new or existing applications. It can handle connecting (and transparently reconnecting) to the Firehose feed, processing the received data, storing it durably, and even presenting the data in a sample web application. Firestarter was developed by the same FlightAware engineers who work on Firehose itself and represents years of lessons learned about how to correctly work with aviation data. By using Firestarter in your applications, you can decrease your development time and increase the data value while remaining confident that your software will behave correctly in a variety of circumstances.
Firestarter was written to be...
...run by anyone
We want Firestarter to be usable in any environment our customers can think of. That’s why we architected it as a group of Docker containers. Using containers grants the following benefits:
- Minimize conflicts with existing software deployments
- Can be run on any OS that supports Docker (Linux, Windows, MacOS)
- Can be easily deployed on-premise or in the cloud
All of these benefits are crucial in making it as easy as possible to get up and running with Firestarter quickly. You can even run Firestarter on a low-powered laptop with a trivial amount of configuration and a single terminal command. Your existing software does not need to run in containers to integrate with Firestarter.
...integrated however you want
To ease integration with existing applications, we designed Firestarter’s services to be loosely coupled to one another. You are not required to run all of them together; instead, you are free to choose the pieces of Firestarter that are most useful to you. A good example of this is running just Firestarter’s connector service, which handles the socket connection to Firehose, and the queueing service, which saves Firehose messages to disk. The user is then free to consume messages from the queue and do whatever they want with them. Alternatively, the user can also run Firestarter services (called db-updaters) that read from the queue themselves and update database tables with flight information. These tables can then be queried however the user likes to display the data.
Firestarter was written to be read
We developed Firestarter not just as a piece of software to be run but also as a resource to help inform our customers of best practices when it comes to working with Firehose data. That’s why the project is open source (and available on FlightAware’s GitHub) and clearly documented. We chose Python as the implementation language for Firestarter’s services for its reputation of being easy to comprehend.
Conclusion: Firestarter Firehose
So, that’s Firestarter in a nutshell. We think it will be invaluable to anyone looking to integrate the live flight data available from FlightAware’s Firehose Data Feed into their application. Give it a try and let us know what you think!
Interested in learning more about Firestarter? Watch our on-demand webinar.
Written by Chris Roberts, FightAware Software Engineer
Chris Roberts is a Software Engineer 2 on FlightAware’s Backend crew with over 10 years of software development experience. He works on the Firehose and AeroAPI data products and spends much of his time thinking about how to make FlightAware's APIs more pleasant to use.