12306-by-aliyun

昨日の午後、阿里雲のプログラマーを自称し、今年の春運(春節の帰省ラッシュ)プロジェクトにも参加した知乎ユーザーが初めて明らかにした、阿里は昨年の初めからすでに鉄道予約サイト12306と協力を始めており、今年の春運までに、12306は残りチケット照会業務の75%を阿里雲に委託していた。

そのプログラマーによると、2014年初めに阿里と12306の技術チームは残りチケット照会システムをどのようにクラウド上に置くかを議論し始め、国慶節ゴールデンウィークにテストを行い、「効果は良かった」とのことだ。

今年の春運期間中、ネットユーザーの間では、12306のチケット争奪・発券の効率が例年より大幅に速くなったとの声が広く上がった。さらに前売り期間が60日に変更され、十分な猶予時間が与えられたことや、いくつかの新しいルールの制定により、チケット争奪の集中度は以前ほどではなくなった。こうしたさまざまな対策を同時に講じたことで、今年の帰省は例年のように不満が溢れることはないように感じられ、12306の対応も皆に評価された。

以前から、双11の買い物ラッシュを処理してきた淘宝や京東といったサイトに12306を運営させればいいという声が常にあった。今、この冗談がついに実証された。12306は確かに全国の力を結集しており、公式以外の民間の力も排除しておらず、これも商業と市場の強力な力を示している。

そのプログラマーはさらに、12306のユーザーニーズと双11期間中のサーバーニーズは異なると明かした。また、人々の誤解を解き、12306のチケット争奪効率とサーバー運用に影響を与える重要な要素は、購入プロセスではなく、残りチケット照会の部分だと述べた。実はこれも非常に理にかなっている。私たちはチケットを求めて何度も更新するうちに、更新しても見つからないことに気づく。チケットを取得できた人は座席がロックされ、その後の45分間は好きな時間に支払いを選択できる。つまり、チケットが買えないのは、チケットがすべて誰かに買われたからではなく、チケットがすべて照会されてしまったからだ。

具体的には、Alibaba Cloudに12306の負荷を分担させる手順は次のとおりだ。

1. 残りチケット照会モジュールを12306の既存システムから分離し、独立してデプロイできる能力を持たせる。
2. クラウド上に独立した残りチケット照会システムをデプロイする。これにより12306とクラウドの両方に残りチケット照会システムが存在することになり、スケジューリングがより柔軟になる。
3. いくつかの安全対策。
4. 稼働状況に応じて、クラウド上の残りチケット照会と12306本来の残りチケット照会は互いに補完し合い、リアルタイムの負荷状況に応じてアクセス比率を調整し、クラウドの弾力性を十分に活用する。

照会が完了した後、ユーザー情報と購入プロセスは現在も12306自身のサーバー上で行われる。クラウドと既存システムの連携、およびそこに潜む可能性のあるセキュリティリスクに対して、阿里雲もいくつかの安全対策を講じて協力・防御している。

2014年1月、「元淘宝エンジニア」による、当時批判に晒されていた12306を弁護する記事があり、自身が知る技術的ボトルネックを通じて、12306はすでに十分に良い仕事をしていると証明した。現在インターネット上では、サーバー運用の経験を持つ人々による12306への弁護や称賛が数多く見られる。そのプログラマーもこの記事を引用し、次のようにコメントした。

このプロジェクトに関わってからあっという間に半年近くが経ち、感慨も多い。皆さんもご存じの通り、双11は阿里の技術チームにとって小さくない挑戦であり、私は4年間参加したが、そのうち2年は特に厳しいものだった。当時、技術チームはよくビジネス側から非難された。それは今の皆さんの12306に対する態度と同じだ。しかし客観的に言えば、双11の大セールは阿里の技術の成熟を促し、春運も12306がより未来志向の技術を採用する後押しをした。

彼は最後に、12306のエンジニアがシステムが稼働したばかりの頃を振り返って述べた言葉をもう一つ引用した。

12306はインターネットの新人であり、「親の七光り」とも呼ばれるかもしれない。見た目は醜く、とてもバカで、体も弱い...だから初めて姿を見せた時、それは失敗に終わった。その日、中国中のインターネットの大物たちやネット民がそれを見つめ、基本的に全国のネットユーザーがその家に押し寄せた。その日、それはダウンし、同じ日に非難の声が殺到した...実は私たちは分かっている。彼らが非難していたのは12306ではなく、この時代なのだ。

原文の出典:http://cn.technode.com/post/2015-01-16/12306-by-aliyun/