10 p.m. (the night before)
Battle strategy drawn, detailed plan with what-if scenarios constructed.
9:50 a.m.
Synchronisation protocol initiated
9:55 a.m.
Logging in to IRCTC
9:58 a.m.
Service unavailable
10 a.m. onwards
Facepalm ?

Sounds familiar?
10:00 a.m. (especially on Thursdays) is India’s collective nail-biting time. At least 25 million people wait in queues or in front of computer screens anxiously calling up others, all for a Tatkal rail ticket. Come 10:20 am, Facebook sees thousands of posts swearing at IRCTC. Many software engineers offer free tips to fix their booking system. There’s a separate class of jokes on IRCTC. Somebody started an e-petition to press the government into fixing the booking problems. One person even asked on Quora about the best way to kill the people who built the website!
A quintessential rail fan, I’ve clocked hundreds of thousands of rail miles. In addition, I’m also an unofficial booking agent for my whole extended family. Given this, I have experienced more of the frustration. As a web technologist, I too set out with my wish list of “fixes” that IRCTC should do, starting with better database indexes, ditching Windows, and so on. After understanding the complexity of the problem, I’m now cautious about those suggestions.
First, a little background:
- Indian Railways’ computerised booking was first built in 1985 by CMC. Since then it has been upgraded many times and the current backend infrastructure was implemented by Centre for Railway Information Systems (CRIS). It continues to own and maintain the backend infrastructure. I have worked with well-meaning smart people in IRCTC, CRIS and other arms of Indian Railways. They are willing to bring changes within their domain, but the organisation is too big a matrix for individuals to make a big difference.
- Over 8 billion trips per annum are undertaken in Indian Railways and bulk of the booking happens through this system. Even on a record-breaking day, Amazon only sold 13.5 million items worldwide, whereas Indian Railways on the whole sells more than 21 million tickets on any average day.
- Of these, IRCTC books around 250 million tickets per annum. It operates just the outermost web layer. So, while webserver configurations, website architecture, and other improvements will play a role, problems with booking a ticket are spread across every layer up to the database. Moreover, the failures at each stage of booking compound because a person who failed at the last step will start afresh right from log in.
- The “real fixes” are not the more obvious ones.
- The problem is not just the insufficiently responsive ticketing interface, but the huge demand-supply ratio. Even if the whole process was totally seamless, we would’ve only ensured that the first 20 million or so people got their tickets every day, but 3 times as many people will still be left without a reservation. That’s a whole different issue for another day. ?
How do other railways cope?
Figure 2: Passenger volumes in rail markets (Source: DST Technology Commercialisation Report, IC2 Institute, University of Texas – Austin)
Of the bigger networks, there is no unified ticketing solution for all of Europe, although a start-up called Silverrail is attempting to do that. Since Japan has mainly short journeys, they would not have a huge need for advance reservation of berths. Even in Germany, the demand-supply ratio is much lower than in India and hence they may not be required to handle the peak demand at the time of opening of the Advance Reservation Period. Only China has a comparable situation. And they seem to be facing similar or even worse problems than in India.
What can be done in India?
Now for the fixes. Remember that failures compound at every stage. If we fixed anything in the innermost layer, the impact is manifold.
1. Stagger opening times
If the train leaves in the forenoon, let the opening time be 8 a.m. and if it leaves in the afternoon, let the opening time be 10 a.m. This one move alone will splice the peak-time traffic into halves, roughly. And, the demand reduction applies to the entire pipe, not just the web servers. One issue with this approach is that passengers who have an afternoon train as first preference and a forenoon train as a backup will have reduced flexibility. But, this is only a small price to pay for better experience on opening days.
2. Decouple seat selection
Tickets are commodities, while seats and berths are not! This adds to the complexity. Let’s say Amazon had an inventory of a million toothbrushes and 2 million people try to buy the same item. I’m assuming they’ll just need to decrement the counter and complete the transaction with buyers on a first-come first-served basis, without worrying about which exact toothbrush will go to whom (at the time of sale). In contrast, Indian Railways offers a precisely labelled berth or seat to a ticket buyer.
In database terms, a row-level lock is obtained on the berth, while thousands of transactions compete for that! A better way would be to sell tickets first and allot the berths later. If passengers can handle the sophistication, they can even do a check-in later, but I think we’re still quite some time away from that. The current logic for berth preference can be retained, but applied as a separate step. In reservation centres, there can be a separate berth allotment counter for confirmed ticket holders.
3. Process payments separately
Another huge bottleneck is in processing payments. It involves a series of menu selections by users each causing pages to load followed by complex handshakes between IRCTC, third party gateways, and the banks, security checks and so on. Each step is prone to failures too. On the whole, 29% of attempted payments failed.
Why not deduct money before ticket booking begins for the day and return it if booking is unsuccessful? Actually, IRCTC is instead considering a smarter move by which passengers can keep prepaid cash with them. Apart from the obvious performance improvement, the economic implications are huge. Imagine crores of rupees lying with them without a need to pay interest? Already, Indian Railways benefits from having an Advance Reservation Period of 4 months. Together, effectively, passenger money is deposited several months in advance. Remember Dell?
4. Eradicate hoarding of reservations
When we piloted Pyka in Salem Railway Division, I used to travel by the Ernakulam Express often. Whenever I checked, the tickets had a long waitlist and I invariably booked in Tatkal. However, when I boarded the train, about 10% of berths lay vacant!
I once saw a man selling reserved tickets in New Delhi Railway Station and asked him the price for a ticket to Lucknow. He quoted 8 times the price, no surprise there. I then told I need an upper berth and not a side-lower. He looked in his wad of tickets and pulled out an upper berth ticket booked in a fictitious male’s name with roughly my age.
Imagine the number of combinations for which he would’ve pre-booked tickets! He would cancel his unsold inventory at the last minute causing a loss to the railways and unserved passengers. Now you know why Ernakulam Express had vacant berths for a journey that got oversubscribed initially?
An ID card should be made compulsory to prevent proxy travel. And, it’s good to know that Indian Railways has started enforcing this rule now.
5. Infrastructure
The Comptroller and Auditor General of India’s audit report has pointed out a number of issues with the telecom backbone of Indian Railways among other things. The core infrastructure should be upgraded.
6. The usual suspects
Once an order of magnitude improvement has been made through the above changes, regular performance improvement measures can be undertaken which will give incremental benefits. To start with, such a high-traffic heavily-transactional website should not be using a Content Management System CMS (IRCTC uses BroadVision’s CMS). No point having banner ads and other link baits while the user is still midway booking his or her ticket.
The Windows stack should be replaced with a UNIX stack. Cloud hosting with load balancers should be considered. Web servers should be optimised to the maximum extent. Gzip compression should be enabled. Sessions should be managed better by failing gracefully. For example, when payment processing fails, why should the user start from the login page again? HTML and Javascript should be minified and compact. Once I tried editing the mark-up of the ticket so that it fits a single page. I noticed a lot of whitespace and HTML comments saying Kavitha fixed this, John changed that, and so on!
Conclusion
Indian Railways is facing scale problems almost unique to itself. While there are improvements required at every stage, there can’t be a significant improvement in ticket booking experience without making core changes. All these performance improvements can reduce passenger frustration by completing the booking experience faster without many failures, but still will not do anything to the number of people who end up not getting a reservation.
Inadequate supply is the larger issue that needs to be tackled by improving the efficiency of the system, increasing the prices a little more than the current levels, and then investing a lot in capacity building. I have met people like Prof.Raghuram who have researched transportation systems for decades and have come up with concrete recommendations. Do we have the political will to implement them taking along the powerful trade unions?
[About the author: BalaSundaraRaman (Sundar) is a co-founder of Ideophone which is a solution provider for travellers and commuters. Besides being a rail fan, he has worked with various arms of Indian Railways from the divisional level up to the Railway Board in his efforts to launch a novel wakeup call service called Pyka, based on Ideophone’s technology. Comments welcome over email at sundar@ideophone.in or @oligoglot on twitter. Image credit]
NextBigWhat invites insights from guest authors (read the guidelines here). If you interested in sharing yours, connect with us.
Recommended Read : IRCTC only sold 27 tickets on day one!