2019年11月23日、楽天カードが突然使用不能状態となった。
楽天市場を運営している店舗オーナーは注文を受けられなくなり、そしてリアル世界でも楽天カードが通らないという事態に陥った。
楽天カードが原因ではなくデータセンターの障害が起きたから
今回のトラブルは楽天カードのみの障害ではなく、楽天カードのデータを管理するサーバーが九州電力系のデータセンターに収容されており、そのデータセンターの電源設備の障害によるものだった。
実際は、約260社のサーバーに影響があり、WEBサイトにつながらない・つながりにくい、メールの送受信ができないという大規模な障害事案だった。
どのようなことが起きたのか?
一番大きかったのは楽天カードがどこでも利用ができなくなってしまった事態が一番大きな障害となった。
この日は、Amazon.co.jpが、ブラックフライデーイベントで大きな売り上げを作っているとき、楽天市場はお買い物マラソンというそこそこ大きなイベントの真っただ中。
Amazonで購入するものの決済に楽天カードを使っていた人たちも決済できなかったはずだ。
楽天市場についてはクレジットカード決済を選択される方の大多数(ほとんどと言ってもいいくらいに)楽天カードを使用している。
電源設備の障害とは
今回は、データセンター側の電源設備の更新作業中に発生したトラブルからサーバーへ接続ができなくなったということなので、おそらく、電源供給がストップし、サーバーが止まってしまった可能性が高いのではないかと推測される。
サーバー機はPCと同じで、電源供給が止まれば止まる。
また、正規のシャットダウンではなく、突然シャットアウトするような電源の落とし方をしてしまうと、起動時に、HDDに対するクラスタチェックが入るため、半日~数日起動しないなどという事態が起きる可能性が高い。
今回、復旧に約半日かかっているのを考えると、もしかしたらクラスタチェックが入ったんではないかと推測してみる。
電源設備と言っても、私たちの家庭の配電盤みたいなもので電気を操作しているような簡単なものではなく、大型の、配電設備が数基設置されており、一般的には2系統・3系統と、電源供給網を有し設計しているのがデータセンターの配電設備で、さらには大型のUPS(無停電装置)も配置しているはずなので、1系統落としても、電源供給については安定して提供されなければいけないはずなのだが、今回なぜトラブルに至ったのか不明である。
おそらくであるが、1系統、電源設備の更新(入れ替えなのかな?)を行う予定だったが、その1系統を落とした時点でバックアップ用の2系統目、さらにはUPSが稼働しなかったのか、瞬断したのか。。。そのあたりが推測される。
もしくは更新した電源設備がパフォーマンス不足でいわゆるブレーカーが落ちてしまい、先のようなサーバーぶち切り状態になったのか、いくつかトラブルの要因が考えられそうだ。
11月26日更新
予想通り!停電の時間はたったの7秒だった!
データセンター側からの発表で、停電が発生した時間は7秒程度だったことが発表された。
また、今回のメンテナンスでUPSを10分間切った状態の最中におきた停電だった。
不幸に不幸が重なった形だが、それすらもカバーしなければいけないのがデータセンターなので、この手落ちはかなり痛い。
また、7秒の停電がここまで引っ張るということはやはり、クラスタチェックが入ったのであろうということが想像できる。
楽天カードの場合、トランザクションのチェックがかなり重要
停電のような、正規のシャットダウン作業を経ずにマシンが落ちてしまった場合、HDDのデータの整合性を確認するためクラスタチェックが入る(設定次第だが、安全性を考えれば普通はチェックするように設定する)。
また同様に、長期間電源を落としていなかった場合もチェックが入る。プラス、さすがに楽天カードのマシンでこれはないかなと思いながら、ハードウェアRAIDの1次キャッシュメモリに費用をかけていなかった場合、停電になった瞬間の1次キャッシュが消え飛ぶ。
日中の時間帯であったこともあり、リアルに決済をしている最中だったかたもいただろう。1~3秒で数百~数千あってもおかしくない。
ましてや、Amazonは、ブラックフライデーイベントの真っただ中だったわけで今、決済していますという方もいたはずだ。
そういうリアルなデータの整合性チェックをしないと、とりっぱぐれ、二重決済が起きかねない。
そう言ったこともありメンテナンスに入らざるを得なくなったのであろう。
世間的な影響の度合い
国内保有数No1を謳う楽天カードだから、その影響は計り知れない。
半日程度で決済はできるようになったといわれているが、その半日で失った売り上げはいかほどだったのだろうか。
楽天市場などのECについては、その売り上げ減を取り返すように、24日に売り上げが積みあがっていたようだ。
そして、この記事を書いているのは25日の午前だが、楽天は5の付く日は楽天カード利用でポイントが加算されるイベント、さらにはお買い物マラソン最終日で、それなりに盛り上がっているようだが。
スーパーや百貨店、コンビニなどの実店舗でもかなりの影響があったようだ。
ある店舗では店内アナウンスで『現在楽天カードが使えない状態になっていますのでほかのクレジットカードをご利用ください』というアナウンスが流れていたそうだ。
現在、日本ではキャッシュレス決済に対して国がポイント還元するという政策が実行中だ。
クレジットカードなどの現金決済以外で買い物をしたいという客が今まで以上にいるこの最中なので、大変な事態が起きたといってもいいだろう。
楽天カードはなにが悪かったのか考えてみる
今回のトラブルの原因は九電系のデータセンターにあるのは間違いない。
この件について楽天カードを攻めても仕方がないだろう。
しかし、世間的にかなりの影響を及ぼすシェアNo1の楽天カードだからこのような事態に陥ってはいけないのである。
しかしながら、楽天カード側として、当データセンターのサーバー群がトラブルで稼働しない状況に陥ったとわかった場合に別復旧先が準備されていなかったのかということが大変気になる。
データセンターレベルでのサーバーの二重化、三重化など行っておれば、パフォーマンスは落ちるがもう一方のデータセンターのみで稼働させることができたのではないだろうか。
決済を取り扱う関係から情報の二重化を避けたいのはよくわかるが、それらを加味したうえでさらに負荷分散を考えた運営をする必要があったのではないだろうか。
それら自身はどんなやり方でもできたはずだ。
九電系のデータセンタでよかったのか?
どんな関係性で九電系のデータセンターを利用するに至ったのかは全く知らないが、地方の電力会社のダークファイバーを使えば安定すると考えたのか、それとも安かったのか。
事情が分からないが、九電系だと聞いたとき少し面食らった。
少し高額だったとしても、IT系の大きなデータセンターで管理されているものだとずっと思っていた。
楽天グループの企業文化
今回、大きなトラブルが起きたことで、楽天カードのシステムは普段から1系統だけで、トラブルが起きると止まることが露呈してしまいました。
楽天市場に出店している店舗さんにお話を聞くと、セールイベント時などショップサイトが重くなる、決済ができないなどのトラブルがあることは知っていましたが、バックヤードの店舗の管理システムもどんどんおかしくなっていくそうです。
最たるものが、決済管理の部分で、カードや後払いサービスなどは与信といわれる審査が通らないと、正式な注文とならない(お金をもらうことができる保障チェックのようなもの。仮に相手方が支払わなかったとしても与信が通っている場合はカード会社などが補てんしてくれる。そのため与信が通らないと注文を正式に受付できない仕組みになっている。)のに、その与信が数時間経過しても通らない事態など日常茶飯事だそうです。
最近のECは、お急ぎ便のような即日発送などをサービスとして提供し、モール側も積極的にアピールしているのですが、与信が通らないと正式な注文にならないのに、注文から半日経過しても与信が通らず、結果その日に発送ができない、しかし、お客様側には何の通知も行かない(行くはずもない。その時点ではお客様側に何の不備もないので)ので、お客さんは昨日注文して明日届くはずなのに、まだ、注文受付メールすら来ない。この店舗はどうなっているんだ!とお怒りになります。
考えてみれば、これだって、システムの増強だけではなく、冗長化したりすることで、負荷分散をかけたりできるはずです。
決済のトランザクション処理があるので難しいのは重々承知ですが、不可能ではないと思います。
むしろそこはお金をかけてでも増強すべきですし、保険の冗長化を行っておいても当然のところなのですが、昔から今に至るまで改善されたというお話を聞いたことが無いです。
もちろん、何となくそう感じるだけなのですが、あまりそういう分野に気を置いていないのかな?と見えてしまいます。
表では綺麗な面白いことを謳いますが、システムやインフラが追いついていないのに、イケる!イケる!で突き進んできた結果のような気がします。
たまには振り返って、何がボトルネックになるのか見てみられたらいいのにと感じることがありますね。
今回の件も、市場の障害も、グループとしての企業文化がそうさせているのかもしれないですね。
クラウドのメリットとデメリット
しかしながら、楽天カードの思考はわからないでもないのだ。
決済に関するインターネット通信はインターネット網を介して、与信のチェックと、購入金額などの入力作業などで、1回の決済における通信量は微々たるものあ。
かつ、通信速度もWEBサイトほどの高速通信は要求されることもなく、1回の決済で1秒程度ですべてが終われば充分である。(3秒程度でもこちら側は何の意図もなく問題視しないだろう。)
なので、遠隔地で多少通信速度が劣ったとしてもカード決済の通信としては何の問題にもならない。
そうなってくると、ある程度の安定性と【費用面】が重要になってくるので、遠方の地価が安いため、全体的なコストが安価になる地方のデータセンターを選ぶのは理にかなった選択ではある。
しかし、様々なサービスがある中でなぜ電力系に走ったのかは気になるところだ。
電力系のデータセンターとは
大体どこの電力会社もデータセンターやプロバイダ事業を行っている。
これは理由があって、インターネット通信というものが一般化した時一番最初に手を付けた業界の一つが電力会社。
これは、電気の送電や発電などを制御するために、機械の運転を、インターネット網を通じて指令を出すためである。
インターネットが一般化する前は各々が独自の通信網を持ちその通信網で制御していたのだ。
インターネットという巨大なインフラが整備されたことで、そちらに乗り入れることで、大幅なコストダウンを図れたのだ。
しかし、送電などの制御をしている関係から、回線が細くてうまく指令を飛ばせなかったなどというわけにはいかないので過剰にトラフィックを持っているのだ。
また、過去に敷設した通信網があり、この通信網をそのままインターネットへ接続すれば少なくとも社内の通信はインターネットに乗り入れているとはいえ巨大なLANのような状態を作り上げることができ、各電力会社ごとに、その地域全体を接続できるくらいの通信網を有することになる。これのことを、業界では『ダークファイバー』と呼んでおり、余剰を持っている通信網を利用してプロバイダ事業やデータセンター事業を行うことにつながる。通信料金は自前である程度準備していることもあり、一般のプロバイダより安く提供できることから各地域では人気の高いプロバイダであったりもしている。
そんな立ち上がりの経緯があるデータセンターは各電力会社ごとにあるし、同じように、物流を担う大手運送会社などもダークファイバーを利用したプロバイダ事業を営んだり、ケーブルテレビなども、TV配信のための通信網を利用してインターネット接続が可能なようにしていたりする。
それらのプロバイダやデータセンター事業は専業とは違い、本業で利用している通信網の一部をインターネット網へ接続することで一般へ開放しているという側面もあり、今回のようなトラブルに弱いという印象は根強く残るのだ。
トラブル発生時の対応
今回の楽天カードについて残念だったのは、トラブル発生時のリカバリ策がなかったことだ。
九電のデータセンターがダメになった場合を想定して、北海道にバックアップシステムが動いており、トラブルが発生した場合、そちらに切り替えることでトラブルが数分で解決するなどという方法があったのではないかと思う。
今回のトラブルを簡単に言えば、サーバーと通信ができなくなった。が、通信さえできればまた決済できるようになるという状態で、保険も何もかかっていない。
これがもし、電源のトラブルではなく、テロらゲリラ、第三国からのミサイル攻撃でデータセンターが破壊されていたばあい、おそらくまだ復旧していないのではと思ってしまう。
小さな会社の小さなWEBサイトでさえ、バックアップデータから別のサーバーで復旧するような方策を意識しながら動いているのだが。。。これだけの社会インフラの一部であった楽天カードはすぐさま切り替えるサーバー先がなかったことが少し衝撃である。
データセンターの電力供給プラス自前のUPSなども検討するべき
中々コストの関係もあり、そうそう簡単にいかないのだが、楽天カードクラスの企業のデータサーバーであれば自前でも検討すべきことである。
データセンターは大体どこでも、供給ライン2系統プラスUPS(無停電装置)が走っていて安心ですと謳っている。
今回のデータセンターも当然同じような設備だったのにこのようなトラブルが起きている。
なので、相手の供給網にプラスして自社のサーバーに自己調達のUPSを1台はさんでおけば7秒の停電に関しては大きなトラブルにならなかった可能性もある。
家庭や会社の小さな部署に置くUPSと訳は違ってくるだろうが、それでも検討してもいいのではないかと思えるレベルの事案だ。
電気系統は思ったより弱い
私も以前、データセンターでラックを1台借りていたときの話である。
当時その業者で借りていたあるデータセンターを閉鎖し、新データセンターへすべてを移すという作業を5年越しほどで計画し実行していた。
当方も当然その流れに巻き込まれており、どこかのタイミングで引っ越ししてくれと依頼されていた。
入念に打ち合わせを行い、引っ越しの日時、スケジュールをデータセンター側と決定し、いざ引っ越しを行うこととした。
当時動いていたマシンはルーター旗を併せて8台。ドメインは1000ドメインほど稼働しているWEBサーバーたち。
利用しているお客様には3か月前から告知し、データセンターの移転等により半日~一日程度のメンテナンスに入り接続できない旨を告知。了承をいただいている状況。
そして、移転当日、旧データセンターで現状動いているマシンをシャットダウンし、ケーブル類を外し、養生を行ったうえで、タクシーにて新データセンターへ移動。
大体30分前後だった。
そこから新データセンターは入局の手続きが大変で20分程度手続きに時間がかかる。
そしてやっとのことで自社用のラックの目の前に到着した。
そこから各サーバーをラックにマウント。
電源ケーブルを挿し電源ONとしても。。。全く反応しない。
壊したのではないか?という不安の中、別のマシンの電源も付けてみるがまったくONしない。
タップの通電ランプを見ると消えている。
タップが壊れたのか?と疑い新しいタップに変えてみるがそれでもつかない。
あまりにもおかしいので、もしかしたらまだブレーカーがONになっていないのではないかと推測し、データセンターの担当者へ連絡。
すると1時間後くらいに返答があり、【スイマセン。電源敷設工事をしていませんでした】との回答。
ありえない。ありえない。
どうするのか聞くと、工事は2週間後ですと。
それはいいが、どうするのだ?この電気がつかないと動かないサーバーたちは。
当サーバーに割り当てられているIP網もすでに新データセンター側にルーティングしてしまっているそうだ。
結果、外についているコンセントからとりあえず電気を引っ張ることとなったが、外のコンセントから給電しているためサーバーラックのドアは閉められない、誰かがケーブルにけつまずいたらシャットアウトだ。
また、2週間後、電源工事が終わったらまた一度マシン群をシャットダウンし、電源タップにケーブルを挿し変えて再起動させる必要があり、無駄なメンテナンスが1件増えることにつながるのだ。
その後その会社はかなり大きなIT系の上場企業なのだが、社長と担当営業、その上長直筆のサイン入りの謝罪文が届いた。
プロでもこういうミスがあるのだ。ということを痛感させられたことがあったのを思い出す。
ファーストサーバー事件とは全く違うが、誘因は同じ
過去に当時Yahoo参加だったファーストサーバーというレンタルサーバーがデータを飛ばしてしまうという大事件があった。
その際には東急ハンズがデータのバックアップも取っておらず、サイトの復旧が困難になったという報告をするなどサーバー事業の歴史上大変大きな事件が起きたことがあった。
今回は事情がまったく違うのだが、トラブル発生を誘発した理由は同じなのだ。
ファーストサーバーの時は、サーバーのメンテナンス時に、データを消去するというプログラムにバグがあり、全データ削除という指令が飛んでしまい、かつ、緊急停止のような処理がなかったためなすすべなく全データ削除を眺めるしかないような状態だったそうだ。
今回のデータセンターのトラブルは電源設備の更新というメンテナンス作業の時に何らかのトラブルが起きたとのことだ。
このどちらも、安全性を確保しようとするメンテナンス作業の際におきたのだ。
この点に共通項がある。
メンテナンス作業は危険な作業
実際に自分自身がサーバーの保守などを任されている商売なので、本当によくわかるが、メンテナンスとは本当に危険な作業なのだ。
例えばソフトのアップデート1つでも、ちょっとした拍子に動かなくなることなどどれだけでもある。小さい話をすれば、WEBサーバーのアップデートをかけたら.htaccessが機能しなくなり、一度更新すると治るんだが。。。。というトラブルがつい最近のWEBサーバーのアップデートであった。
うちは大した数が無いのでひとつづつ更新していけば特に問題もないのだが、数万とドメインを預かる大手ホスティング業者にとっては大トラブルとなる。
メンテナンスの際はサーバーなり設備なりを『いじる』タイミングなのでトラブルが起きやすいのだ。
自分の身は自分で守ろう
今回のクレジットカードで防げる手立てがあるとしたら別の会社のカードを作っておくくらいしか方法がないが、WEBサイトなどの場合はせめて【バックアップを取得】しておくくらいのことはしておかないといけないだろう。
ホームページビルダーなどで作った平のコンテンツならPCにデータが残っているかもしれないが、WordPressなどのDBを利用したCMSツールの場合、サイト自身はすぐに作り直せても、コンテンツデータは手元にないはずだ。DBの中身のバックアップを取得しておかないと飛ばされたら0出発だ。
皆様が思っている以上にデータが飛びましたという事件は多数起きている。
それを踏まえて、自分の身は自分で守ろう。