Microservices for Good: How Angel Flight West Uses Technology to Help People in Need
With the holiday season upon us, we thought it would be a fitting time to to highlight a wonderful non-profit organization and how they use technology for a great purpose.
Angel Flight West : A Mission for Good |
Angel Flight West and its Mission
Angel Flight West is a nonprofit charitable organization established in 1983 for the sole purpose of providing flights for those in need. Their network of 1,800+ volunteer pilots fly their own planes and pay for the costs out of their own pockets for these critical journeys.
Angel Flight West coordinates with members to fly organ transplant candidates, chemotherapy patients, clinical trials, abuse victims seeking relocation, disabled or sick children to Make-A-Wish programs or summer camp, and many other humanitarian reasons. The beneficiaries of the flight – passengers and their families, healthcare organizations, and others – never pay for anything, ever.
Angel Flight West serves the western part of the US including Alaska and Hawaii and is a member of the Air Charity Network which covers all 50 states. It is also one of the driving technology forces in the network, beginning with an early initiative with web technologies, and extending to present day with its increasing use of the cloud, microservices, and distributed technologies.
The Technology Stack Behind Angel Flight West
Back in 1999, Angel Flight West developed a web-based flight coordination system to manage the matching of passengers who need transportation with the pilots who can provide it. With this technology, Angel Flight West grew over a three-year period from approximately 1,000 missions per year to over 4,000. As they’ve grown, web technologies have enabled Angel Flight West to use a small staff to coordinate flights and keep organizational costs at a minimum. To date, this small team, along with the assistance of host and flight-day volunteers, has flown over 60,000 flights for people in need.
A Screen from FlightPlan.com |
Their system runs on a LAMP stack with PHP as the primary language and Symfony as the application framework. They use MySQL as their database and IronWorker for the increasing amount of asynchronous processing taking place in the background. They also use several aviation-specific websites including FlightAware for live flight tracking and FlightPlan.com for flight planning.
- Language – PHP
- Framework – Symfony
- Database – MySQL
- Async Processing – IronWorker
- Other
- Twilio (early stages)
- Google Maps
- FlightAware
- FlightPlan.com
Releasing as Open Source to the Air Charity Network
Angel Flight West regularly shares the software with others organizations in the Air Charity Network. They recently released the software as an open source application and set of services.
As part of this release, they have established a user community to fund enhancements, maintenance, and outreach. You can find more information at www.vpoids.org. With this move, they look to increase access to the software as well as accelerate development.
Using Microservices to Expand Their System Capabilities
The Angel Flight West system makes use of an application layer built in PHP and Symfony for the user-event response loop for website events as well as for access and storage of backend data which includes membership data, passengers, requesters, flight information, and other essential application data. The system also makes use of workers running within IronWorker to run processes asynchronously in the background.
This dual structure allows them to better segment real-time responses to user events from the processing of events and workloads in the background. An example of this latter type of processing is generating itinerary-form PDFs that get emailed to the pilots and passengers for each flight. This process is scheduled and generated using workers running within IronWorker. They also use asynchronous processing to download geolocation data from the Google Mapping APIs to provide distance information and driving directions for ground volunteers.
This type of distributed processing pattern – isolating task-specific actions within workers and then calling them directly or through webhooks – allows them to write and scale these background processes separately from their application. This approach was born out of the need to keep adding functionality to their system, but do so in a simpler and more isolated structure. One future project they have outlined using this microservices approach includes creating a capability that matches available flights with volunteer pilots and generate targeted alerts. They’re also looking at integrating Twilio into their stack for sending text alerts and updates for travel days, in which case they would look to expose these actions as thin microservices.
Definition of a Microservice
The general definition of a microservice is that of a small, RESTful, HTTP API that provides a simple interface for a single processing event. Generating and sending a form is but one example. Other examples including anything that might take a workload and generate a result. A microservice is a logical progression of an embedded function in a program or an action or method call in an object-oriented framework. The difference is that the interface is via an HTTP request and that the processing is handled independently by the microservice ideally in a distributed asynchronous manner.
The beauty of building small microservices instead of continually embedding functionality into a monolithic app is that Angel Flight West can have engineers donate time to build very specific functions.
This development approach lets them better compartmentalize their engineering work – allowing volunteer developers to take projects from idea to completion independently while reducing any overhead integrating the capabilities into a major new app release. One or more developers can write a worker to perform a task, wrap it with a webhook interface and produce an output in whatever language might be appropriate to the task. Angel Flight West uses PHP but it could be any language given their worker platform supports every major language.
This structure increases development speed by letting them use a small team with interchangeable parts to innovate at a faster pace. It also reduces risk because changes in a microservice do not extend into the other parts of the system. And it scales seamlessly because the services use a framework that gives them the concurrency and workload processing they need without having to provision it directly.
A Cause for Good
From its days of implementing early web technologies to its sharing of its solution and its release as open source to its growing reliance on microservices to power new capabilities, Angel Flight West and its small team of technologists have shown they are innovators when it comes to delivering tools to aid in its mission.
But the best technology and technical stack in the world doesn’t do much good unless it solves a problem or is in service of a cause.
In the case of Angel Flight West and the thousands of flights they provide to those in need, that cause is unquestionably a good one.
Godspeed to Angel Flight West, its aviators, staff, and volunteers on this December morn.
What Stephan Fopeano, Chief Technologist for Angel Flight West, says about their evolving technical stack and Iron.io helps power their asynchronous processing.
What does the combination of PHP and Symfony give to you?
Mason Flying Above Arizona |
How big is the main application and how have you distributed the workloads?
Take us through the development of a worker / microservice?
Matthew Checking if the Pattern is Full |
How does a microservices platform help you?
Priscilla w/Pilot Bryan Painter |
What do you think the impact of microservices and distributed cloud development is for large organizations?
What other functions does technology serve for the organization?
Kenasyn and Mom w/Pilot Jamie Griffin |
Any recommendations for organizations and companies large and small who want to get things done fast using small nimble teams?
How can readers find out more about Angel Flight West and how can developers get involved?
To find out more about Angel Flight West on our website as well as our recent stats in the enclosed table. If you’re interested in a deeper view, you can see our transparency report at GuideStar. If you’re a developer and want to get involved – even building out a small component – please connect with us via the website.
We’re always looking out for donations of time and money. But we also look for help in spreading the word whether that’s via a private mention to a friend or a tweet or a facebook post. We love it when the efforts of our pilots and volunteers receive public mention and praise.
We’re just as happy though when people simply read about what our team members do and the many silent thank you’s, smiles, and prayers that result.
About Stephan Fopeano
Stephan Fopeano |
About Angel Flight West
About Iron.io
To try the Iron.io platform for free, sign up for an account at Iron.io. Included with the free plan is a 30-day trial of advanced features so that you can see how running code in the cloud at scale can change the way you think about application development.