Wednesday 26 October 2011

Why is ticketing hard?

Everyone has to deal with the hard limitation of supply. If you oversell a book, or you run out of jeans or mars bars or whatever, you can just order / print / make more. With tickets, although very occasionally an extra performance is scheduled in response to demand, if you sell out, that's it. Which is why everyone hits the phones and the website at 9:00:01 when the tickets went on sale at 9:00:00, and it also means that speed of transaction processing is limited by needing to keep a completely accurate count of exactly how many tickets are left. Even if you've a million tickets to sell, you still need to know precisely how many remain before you let someone put one in their basket.

If you ever do anything popular, you will have to content with the spikiness of demand. Unless you're JK Rowling, you're unlikely to cause such a burst of traffic when your book goes on sale that you affect Amazon's servers in any way. Take That can still crash the TicketMaster site. Most things that aren't tickets sell at a relatively reasonable rate, spread out through the day. When hot tickets go on sale, EVERYONE hits the site at once. The number of servers and telephone operators you need to handle peak load is thousands of times that which you need to handle average load, and the rest of the time they sit round doing nothing and costing money. And this spike of demand is caused in part by the second factor...

If you have assigned seating, it matters which ticket you have. Whilst you are being hammered by a massive load of people all hitting the site at once, and keeping track of the remaining stock, you also need to make sure that you sell seats that are next to each other, and that your customer is getting seats B14, B15 and B16, and not B14, B15 and C20, because someone else nipped in to by B16 from under you whilst you were in the middle of processing the transaction. This effectively forces you to process requests one at a time (within each part of house), without any of the concurrency that would usually give you better performance.

Once you've got over the simple (!) stock control problem, you have to consider the pricing. Which is usually ridiculously Byzantine. There will be price breaks in the auditorium, different prices for matinees, student and OAP and child concessions, early bird discounts, members schemes, special offers, promotional codes, coach ticket rates, booking fees, per ticket fees, transaction fees, delivery fees, and anything else that a venue can invent, usually in the name of "promoting accessibility" but with the usual result of making sites run slower and the lives of box office staff harder.

No comments:

Post a Comment