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
Stephan Fopeano: PHP is of course a very common language, so there are tons of resources available for developers that speeds work and promotes best practices. Being open source is very important for us as a non-profit, for cost reasons and also to make sure our application will be maintainable into the future.
Symfony is a great framework which speeds development time. It provides a set of reusable PHP components designed for web projects like ours. It doesn’t hurt that it’s a solid standard and trusted by some of the best PHP applications around.

How big is the main application and how have you distributed the workloads?

The application itself is reasonably complex, since it manages flight coordination, membership, a customer database of passengers and requesters, as well as metrics and other miscellaneous functions.
Where distributed workload processing is key is in functions that are triggered by user actions. Iron.io lets us get all the work done based on these triggers but doing so in the background without making the user wait.

Take us through the development of a worker / microservice?


Matthew Checking if the Pattern is Full
For our first workers, we hired a consultant on Elance. He helped us figure out the basics of the architecture and the environment, and he helped us establish some best practices. Based on this work, we’re off and running. The basic structure will be the same for each new capability – one or more task-specific workers running on a worker queue operated through a webhook.

How does a microservices platform help you?

Non profits are always looking to economize and are short on resources for infrastructure. Developing microservices and creating workers gives Angel Flight West the ability to use resources as needed, and more importantly, to try new ideas without upfront costs.
One way we do this is to use the distributed processing capabilities inherent in the Iron.io platform to see if an idea is going to work, figure out the metrics, and them raise funds to support expansion and growth if and when it proves successful. Having the ability to scale a new feature without us having to manage any infrastructure is key to increasing our speed and pace of development.


Priscilla w/Pilot Bryan Painter

What do you think the impact of microservices and distributed cloud development is for large organizations?

While each organization in the Air Charity Network is pretty small, a good deal of complexity emerges from the fact that 10+ organizations use instances of the same application each with some slightly different needs and expectations for what they system should do.
Using a microservices pattern helps us build in new functionality that’s tailored to specific needs of individual organizations, in a flexible, agile manner without compromising current capabilities or putting an unnecessary burden or block on future development.

What other functions does technology serve for the organization?

In addition to helping us run the operations, Angel Flight West has become increasingly dependent on marketing and outreach. We estimate that we are only serving about 10% of the people who could use our services.


Kenasyn and Mom w/Pilot Jamie Griffin
We’re making good use of digital marketing channels and services but we have big plans to get the more of the word out, especially where it counts – those whose lives are in turmoil and where financial, physical, and emotional difficulties can make ordinary trips extraordinarily difficult.

Any recommendations for organizations and companies large and small who want to get things done fast using small nimble teams?

Development of an application of any merit is a team effort that’s largely based on passion for a cause. In our case, we have our eyes on the prize of using aviation skills and resources to benefit those in need. It’s our cause and our mission and that singular focus helps eliminate ego and creates a great environment of cooperation, which is also critical for working effectively together. I don’t know if it maps to all organizations but it certainly works here.

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
Stephan Fopeano is no longer a current pilot himself but has found a way to be a part and give back to the aviation community by bringing his technical skillset to evolve Angel Flight West’s technology. He has been working with Angel Flight West since 1989, bringing 20+ years of software development and data analysis experience.
Stephan is founder and owner of Meliorist Technology, a product development and product strategy consulting for big data applications, predictive analytics, and dashboard development. Clients include Angel Flight West plus ten other charitable aviation groups across the country, Disney/ABC, Sony Pictures Television Networks, CNN, PBS, Scholastic Media, as well as many small non-profits and start-ups. You can reach him at webmaster (at) angelflightwest.org.

About Angel Flight West

For those whose lives are in turmoil, the financial, physical, and emotional burdens can make ordinary trips extraordinarily difficult. That’s where Angel Fight West comes in. Their network of 1,800+ volunteer pilots fly their own planes and pay for all costs out of their own pockets, in order to make these critical journeys.
Their pilots are engineers, scientists, and teachers. Doctors, lawyers, and corporate executives. Retired commercial pilots and young entrepreneurs. But as different as these men and women might be, they all have two things in common: The love of flying, and the desire to touch people’s lives.

 


 

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.