「独身の日(W11)」を支えるAlibaba Cloudのインフラ技術の変遷(デブサミ2019夏)

f:id:sbcloud:20190729155849j:plain

SBクラウド株式会社 ソリューションアーキテクト 寺尾 栄作

7月2日に開催された「Developers Summit 2019 Summer(通称:デブサミ)」にて、SBクラウド Alibaba Cloud ソリューションアーキテクトの寺尾 英作が登壇し、アリババが年に一度実施する世界最大のショッピングフェスティバル「W11(独身の日)」を支える“裏側”について講演を行いました。

 

独身の日(W11/ダブルイレブン)とは?

f:id:sbcloud:20190729160513p:plain

2018年の独身の日イベントの様子。写真はアリババグループのダニエル・チャンCEO(Source:www.alibabagroup.com)

独身の日(W11/ダブルイレブン、中国での表記は双11)ショッピングフェスティバルとは、毎年11月11日にアリババが運営する ECプラットフォーム「天猫(Tmall)」や「淘宝網(Taobao:タオバオ)」などで2009年から実施している世界最大規模のセールイベントのことです。

もともとは「買い物で独り身を励ます」というコンセプトでスタートし、独身に見立てた「1」が4つ並ぶ11月11日に毎年行われていることから「独身の日」と呼ばれています。

寺尾は「独身の日は“天猫でショッピングフェスティバルをやりたい”という話が社内であがったことからスタートしています。同年にAlibaba Cloudが誕生していますが、これはW11を行ううえでインフラを強化するためにつくったものだったんです」というエピソードも披露しました。

ちなみに、独身の日の発案者は現在のアリババグループCEOであるダニエル・チャン氏と言われています。

開始から10周年を迎えた2018年は、1日で2,135億元(約3.5兆円)の取扱高を記録し、過去最高を更新。ちなみに、この金額は日本国内の最大手ECサイトの1年間の取扱高とほぼ同等の数字になるようです。

独身の日は現在、中国国内だけのイベントではなく、グローバルに展開する世界的なショッピングフェスティバルへと成長を遂げています。

 

時間軸で見る「独身の日(W11)」の成長率

f:id:sbcloud:20190729161214p:plain

続いて寺尾は独身の日の成長率について紹介しました。2009年は取扱高が100億円程度でしたが10年間で361倍の3.5兆円にまで成長。ピークトランザクションは1,227倍の49.1万回/秒になっています。

「これだけ巨大なショッピングフェスティバルを無事に終了させるためにはインフラが非常に大事で、独身の日の当日は1つのホールに何百人ものエンジニアが集まり、複数のチームに分かれて、24時間体制で状況を見守り、対応しています」(寺尾)

f:id:sbcloud:20190729161319p:plain

独身の日のアリババ社内の様子。社員は赤いTシャツを着て参加するのが恒例(Source:www.alibabagroup.com)

現在ではインフラ構築が整い、ほぼトラブルなく世界最大のショッピングフェスティバルを運営できるようになっていますが、最初はトラブルの連続だったようです。

また、想像を超えるレベルの成長を遂げてきた独身の日を当初のインフラでまかなうことは不可能であり、独身の日を成功させるために、アリババグループ社内では毎年さまざまな“挑戦”と”改善”を重ねてきました。

 

2009~2013年の独身の日は「挑戦~システム化」

f:id:sbcloud:20190729161851p:plain

独身の日がスタートしてから約5年間の2009~13年は「挑戦~システム化の時期」とも言える時期です。

この頃は、課題を見つけてはシステム化することを繰り返していたようです。たとえば、CDNキャパシティ予測。2010年には朝10時にCDNのキャパシティが不足し、徐々にアクセスが遅くなり、最後はアクセスできない事態が発生していました。

そこで2010年は画像縮小でトラフィックを圧縮、20111年は全部門でトラフィック帯域予測を作成、2012年はトラフィック容量計画を自動で予測と、段階を重ねて課題を解決してきました。

f:id:sbcloud:20190729162558p:plain

また、2013年に様々な反省を踏まえて作られたリソース管理の手順書が2,000を超えたことから手動管理の限界を迎えました。

「このときはECや広告などのオンラインサービスを担うSigmaと、計算業務などを担うバッチジョブ向けのFuxiと、2種類のリソーススケジューラを開発することで解決しました」(寺尾) 

f:id:sbcloud:20190729162658p:plainこのようシステム化を繰り返して解決をしていったものの、“ダブルイレブンの驚異的な負荷を与えたら動かなくなる”という事態が発生。「そこで同年に大規模な負荷テストを何度も実施し、600以上のバグを改修しています。これにより、システムの信頼性を向上することができました」(寺尾)

 

2014年の独身の日は「最も順調で安定」

f:id:sbcloud:20190729163449p:plain6回目を迎えた2014年は「最も順調で、安定したダブルイレブン」となりました。

しかし、ひと通りのシステムが完成して安定して動くようになったものの、2013年頃から今後の拡張性に課題が見えるようになりました。対策として、水平拡張を当初は検討しましたが、一部に集中管理のコンポーネントがあったため、システムをそのままコピーして複数のユニットに負荷を分散する方式を採用しました。

「最初の年はCDNでアカウントIDをハッシュして、アカウントAはユニット1、アカウントBはユニット2としましたが、これでは片方のユニットが落ちると半分のユーザーが使えなくなるので、まだシステムとしては完成とは言えませんでした」(寺尾)

f:id:sbcloud:20190729164303p:plain

また、2013年は同一リージョンで二重化(1都市2ユニット)をしていましたが、2014年は別リージョンで二重化(2都市2ユニット)に 、さらに2015年は全てのシステムをアップグレードしてマルチアクティブ化(3都市4ユニット)を行うなど、確実に進化を遂げてきました。

 

2015年の独身の日は「モバイルアクセスの急増」

f:id:sbcloud:20190729164817p:plain

7回目となる2015年のポイントは「モバイル」でした。中国国内でインフラが整備されモバイルのアクセス率が約50%に達しました。

この年を契機にモバイルの購買率が大きく向上していきましたが、リソース管理はPCよりもモバイルのほうが予測しづらいため、急増したアクセスに対するリソースの確保が課題となっていました。

「そこでオンライン業務のSigmaと計算業務のFuxiの真ん中に、リソースプールを融通しあうシステム“Level 0”をつくりました。SigmaとFuxiはそれぞれ使う時間や経路が全く異なっていて、使っていない時間は遊んでるサーバーになってます。そこで2つの間に混合用のクラスタをつくり、モニタリングして、混み合いそうなほうに融通するようにしました」(寺尾)。

この施策により、以前はCPUの平均利用率が10%程度と、CPUリソースをフルに使えていない状態でしたが、これを40%程度まで向上することができました。

 

2016年の独身の日は「セキュリティレベルのアップ/Cloud DBAの開発」

f:id:sbcloud:20190729194645p:plain

独身の日も8回目の2016年になるとシステムが成熟してきました。この頃はアリババグループ社内からの要求も「システムの安定から、信頼できるインフラにする」というアプローチに変わってきたようです。

また、アリババグループ監査部門からは「セキュリティを高めるために、実行した全SQLをデータベースに保存するように」というリクエストがあがってきました。

全SQLは非常に膨大な量であり、通常のデータベースでもパフォーマンスが落ちるため、SQLログは検証時しかとらないシステムがほとんどのようです。さらに、ダブルイレブンという大規模なトランザクションが発生するシステムで、全SQLを保存することは非常に困難な要求でした。

そこで、Alibaba Cloud上の大量のデータを取るためにいろいろなシステムを検証した結果、自社のデータベースサーバーAliSQLにRocketMQにデータを送るコネクタを作って処理することにしました。

SQLを保存するためにアプリケーションの性能に影響を与えてしまってはいけませんが、このような構成を取ることでアプリケーションへの影響は軽微にすることができたようです。そこからAlibaba Cloudのストリームデータ処理プラットフォーム RealtimeComputeで処理を行い、最終的にはTSDBという時系列データベースに保存するという形にたどりつきました。

jp.alibabacloud.com

f:id:sbcloud:20190729163732j:plain
「AliSQLはMySQLベースをチューニングしたものです。最初はOracleを使っていて、次にMySQLでクラスタを組んでいましたが、それでもパフォーマンスが出なくなったので、独自の改善を入れてAliSQLをつくりました。AliSQL は500スレッドの負荷を与えてもOracleの数倍の処理能力がある、多重のコネクションに強いSQLサーバーです。オープンソースで公開しているので、興味があれば見てみてください」(寺尾)。

github.com

全SQLを保存することで大量のビッグデータが手に入り、どのSQLが問題を起こすのか、良いのかを学習することができるようになりました。そのデータをもとに、自立インテリジェント診断エンジン「CloudDBA」というプロダクトを開発しています。

「これは現在、中国リージョンのみで提供しているものです。アリババの中で診断してデータを貯めて、それをもとに自立的に復旧などの改善をするインテリジェントなデータベースをつくるべき、というビジョンをもちながら開発を進めていて、その第一歩として生まれたプロダクトです」(寺尾)。

 

2017年の独身の日は「コンテナのデプロイ時間の削減」

f:id:sbcloud:20190729165241p:plain

9回目の2017年の頃は、コンテナ技術がだいぶ社内に普及してきていたようです。

「普及すると次に問題になるのが、コンテナのデプロイ時間が想定よりも長くなることです。アリババクラウドが長年開発してきたコンテナエンジンに『Pouch』があります。新しいコンテナをつくろうとするとき、イメージのレポジトリからデータをとってきますが、そうするとシングルポイントになってトラフィックが輻輳し、コンテナの立ち上がりが遅くなるという状況が発生します。本来、数秒で準備できるはずだったコンテナが遅れてしまうと、さばく予定のトラフィックがさばけなくなります」(寺尾)

github.com

この問題を解決するためにつくられたのが「Dragonfly」というファイル配信システムでした。

f:id:sbcloud:20190729165421p:plain

「P2Pの技術を活用して、イメージをレジストリではなく、近くのホストからとってくるという技術を開発しました。これによりコンテナのデプロイ時間を50%削減することが可能になりました」(寺尾)

github.com

 

過去最高の実績となった2018年の独身の日は「レイテンシーの改善」

f:id:sbcloud:20190729165626p:plainそして、最後は取扱高約2,135億元(約3,5兆円)を記録した10周年の2018年について。

「2018年は"ストレージとコンピュートの分離"を行いました」(寺尾)

ストレージとコンピューティングリソースを切り離すのはリソーススケジューリングの自動化をするに当たり必要なことでした。その中で高いI/O性能を要求するデータベースは最後の難関となっていました。

「2017年はデータベースとストレージの間をTCP 25Gのネットワークで結び、半分力業で帯域を増やしました。ストレージエンジンは独自開発の分散ストレージエンジンPangu 2.0を使ってスピードを速くしています。2018年はTCPをRDMAに変えたことで、直接、Pangu 2.0のSDKを使ってアクセスできるように改善しました。これによりレイテンシーが50%改善しました」(寺尾)

これによって、さらにリソーススケジューリングの柔軟性を上げることができ、メンテナンス性や可用性、コスト削減といった面で非常に大きく進歩することができました。

f:id:sbcloud:20190729165720p:plain寺尾は下記のように締めくくり、講演を終えました。

「W11はアリババにとってもチャレンジと進化のためのイベントです。その進化の過程で生まれたPouchやDragonflyはオープンソースとして利用していただくこともできますし、Alibaba CloudではECSやRDSなど、すぐに使えるプロダクトも多数用意しています。中国はすぐ隣の国ですが、知らない技術もたくさんあるので、みなさんにも興味をもって取り組んでもらえたらうれしいです」

登壇者プロフィール

寺尾 栄作

寺尾 英作(てらお えいさく)

SBクラウド株式会社 ソリューションアーキテクト

1998年Linuxと出会い、インターネットに可能性を感じてサーバを触り始めた結果、そのまま長年インフラエンジニアを務める。その後は、数社のエバンジェリストを務め、2018年にSBクラウド入社。好きなものは、地下アイドルと、写真。

<関連記事>

www.sbcloud.co.jp

www.sbcloud.co.jpwww.sbcloud.co.jp
www.sbcloud.co.jp