- Describes a poor customer experience created by poorly implemented distributed systems.
- Illustrates the complexity and interconnectedness of the multiple business entities that participate in a single retail transaction.
1140 words, estimated reading time 5:00 minutes.
This is the third article in a series on distributed computing written for technology managers and systems designers.
Previous articles in this series
For additional information about big data and distributed computing, see this series’ other articles:
This article illustrates how trying to buy a discounted airline ticket processed by multiple organizations — each using distributed systems that didn’t communicate properly — produced a circle of irresponsibility.
Strange Charges on my Statement
I saw an unfamiliar charge from Vueling Airlines on my online bank transaction history. So I contacted my bank to initiate a dispute.
Disputing the Charges
To my surprise my bank ruled in favor of Vueling Airlines and gave them my money. I appealed that decision and once more my bank ruled against me. So I appealed for a third time, then started making phone calls and writing.
So Who Is Responsible?
When a customer tries to get a refund, the number of business entities involved — the customer, the bank, the agents, and even the airlines themselves — can’t readily determine who is responsible.
After I spent several days investigating the unauthorized charge, I eventually learned that although Vueling Airlines was the name on my bank statement they weren’t ultimately responsible for the problem.
Vueling was just a link in the chain of distributed systems. Because each business entity in the chain was working with their own set of data, it was difficult to identify the business entity responsible for reversing the charges.
Here are the companies in the order which I contacted them to resolve my unauthorized charges:
- Level Air: Level Air is an International Airlines Group (IAG) subsidiary or “virtual airline” for low-cost airlines. I had tried to buy a ticket with Level Air previously, so it was the first company I contacted. Level Air verified that it had processed a ticket, and gave me the associated Vueling Airlines ticket booking number. The Level Air agent added that the transaction had been originated by Air Integration at Fareportal.
- Fareportal: When I tried to contact Fareportal, its phone number redirected me to its subsidiary, CheapoAir.
- CheapoAir: CheapoAir’s agent found no transactions for my name, email, phone number, or debit card. That was because the Vueling Airlines booking number I had was useless: Vueling and CheapoAir use different booking codes. So I contacted Vueling.
- Vueling Airlines: Vueling’s customer service representative told me that because Vueling doesn’t fly to the United States, my ticket was an impossibility. He then said that if what I said happened had happened, then there was a security breach and I should call the police. Then he hung up.
- CheapoAir: I called CheapoAir back. They promised to call Vueling, then call me back. That didn’t happen. Follow-up emails produced no results, then stalled out. So I asked to speak to a CheapoAir manager. The manager read the now-lengthy email thread, then sent me back to Vueling.
- Vueling Airlines: I called Vueling for a second time. I asked to speak to a manager. He said he would call Level Air for me because he believed that Level Air, not Vueling, needed to issue a refund. The Vueling agent also gave me flight details, including the airline, Iberia Airlines.
- Level Air: I called Level Air for a second time. The representative told me that because Fareportal had emailed them the booking, Fareportal was responsible. Level provided me with a Fareportal transaction number.
- CheapoAir: I contacted CheapoAir for the third time This time the agent told me the Fareportal transaction number was actually a Fareportal travel agency identifier. Which took me back to Step 1, above.
After completing the preceding circle with no one taking responsibility, I contacted the Better Business Bureau (BBB). A representative from Fareportal contacted me and proceeded to investigate. I presented my research to my bank. This time they approved my third claim and refunded the Vueling Airlines charge.
Overview of the Passenger Service System
In order to understand why it was so difficult to resolve my issue, it’s necessary to understand the multiple distributed systems the airlines use to sell tickets and reserve seats.
The monolithic systems and providers combine to form a system called the Passenger Service System (PSS). The following diagram shows the relationships of the PSS’s primary components.
The core of the PSS is the Airlines Reservation System (ARS) , used by each airline internally. Each airline publishes ticket information to the Global Distribution System (GDS)  accessed by all other airlines [2b], virtual airlines [2a], and travel agencies [2c].
- For information about virtual airlines, see https://en.wikipedia.org/wiki/Virtual_airline_(economics)
- For more on airlines’ codeshare agreements, see https://en.wikipedia.org/wiki/Codeshare_agreement
One Possible Explanation
As best I can tell, what seems to have happened is as follows.
Fareportal rejected my attempt to buy a ticket because at the same time I was trying to make my purchase, someone else bought the same ticket. (See my previous article).
The Global Distribution System (Figure 3) then reported the same seat was still available. Perhaps this was because the other buyer didn’t complete the purchase. Because the system’s data reported that seats were still available, Fareportal transmitted the booking to Level Air.
Processes need synchronization for both simultaneous and sequential tasks. Transactions must be able to do roll-back (cancel) if there is some failure, and commit (complete) after the transaction is validated. This diagram of process synchronization shows how processes must acquire critical resources so they can’t be modified by other processes during a transaction.
For additional information see:
A Systems Audit
My incorrect charges originated from the airlines’ practices of Yield Management and Dynamic Pricing. Airlines try to maximize profits by dynamically changing the price of tickets in response to current inventory and other airlines’ prices.
Doing that properly requires real-time inventory reporting and synchronization of transactions. As we have seen, when any part of the combined systems do not have the most current data, or if transactions are not properly synchronized, it becomes extremely difficult to identify which part of the system was responsible for a given problem.
The airlines industry needs auditing of the consistency and timeliness of data presented to consumers, focusing on inventory system reliability, and finally looking at stakeholder accountability. This account illustrates how poorly designed and implemented distributed software systems can produce a poor customer experience and make it difficult or impossible for users of those systems to isolate and correct problems.
More about Yield Management and Dynamic Pricing:
About the Author
Software Engineer, Consulting CTO, Blogger
Blake Rogers is a Principal Engineer at Telegraph Hill Software, with 25 years software development experience in Silicon Valley. As senior software engineer and Interim CTO, he provides strategic technical leadership and hands-on development.