PayPay“100億円祭”の裏側で何があったのか システム障害と苦闘したエンジニア
コメント
注目のコメント
AWS側はお金に糸目をつけなければ、青天井でリソースを増やせるのですが、外部サービスとして呼び出しているYahoo! Japanの決済系サービスがボトルネックとなってスループットが上がらず、障害を引き起こしたと。
マイクロサービスは非同期で作るのが主流ですが、ボトルネックがあれば、待ちキューが伸びていく一方になるので、早晩タイムアウトが発生します。
マイクロサービスでは、サーキットブレーカーパターンといって、問題のあるサービスを切り離して(使用しないようにして)、障害がシステム全体に波及しないようにしますが、PayPayのサービスの性質上、決済系を切り離すわけにはいきませんからね。
グループ会社とはいえ別会社なので、APIコールの総量、頻度は要求仕様として契約を取り交わしているでしょう。そのため、想定以上の負荷がかかっても、緊急対応としてYahoo!側のリソースを増やしてもらうことができず、PayPay側の機能を制限するなどして、APIコールを削減したのでしょうね。
ちなみに、Yahoo! Japanのインフラは下記のとおり。大規模なプライベートクラウドをOpenStackで管理しています。
https://cloud.watch.impress.co.jp/docs/event/1166834.html
https://www.okinawaopenlabs.com/ood/2017/wp-content/uploads/sites/4/2018/01/OOD-OpenStackonKubernetesZoku.pdf元中の人なので、多くは書けませんが、誤解があるようなので補足させて下さい。
ヤフーの決済のバックエンドが詰まったと解釈している人が多いようですが、プレゼンの内容は、ヤフーの決済システムに接続する為にPayPayが開発したGWが詰まったという内容です。あくまでPayPayが開発したシステムの話であって、ヤフーの決済システムがボトルネックになったとは、言っていないと思います。PayPayのインフラはAWSで大量トランザクションを処理できたけど、自社決済サービスのリソース不足で障害が起きた模様。
これは、ハイブリッド・クラウドを採用している企業は、みんなが直面する悩ましい問題。一部をクラウドにしただけでは、オンプレがボトルネックになり、全体システムの可用性が上がらないという。
=引用=
インフラ構築の手間を短縮するため、Amazon Web Services(AWS)を利用した。ただ、顧客のクレジットカード情報などは、ヤフーのシステムに保存する形式を採った。
システム障害の原因の1つに、外部決済システム(ヤフー)と連携するサービスのリソースが不十分だったことを挙げる。決済情報を参照するために「ヤフーのシステムにリクエストを送るようにしているが、(その部分の処理が)詰まってしまい、他の部分にも影響が出た」という。