個人間で手軽に物品の売り買いができるフリマアプリ「メルカリ」。2013年のリリース以降順調に成長を続け、2017年末に世界累計1億ダウンロードを突破した。

そのメルカリにおいて2017年6月22日、ログイン後の画面が他のユーザーに表示されたかもしれないという事故が発生した。パフォーマンス改善に向けてCDN(Content Delivery Network)プロバイダの切り替え作業を実施した際の出来事で、表示される可能性のあったユーザーは該当時間にWeb版メルカリを使ったユーザー、最大で約5万4000人になる。

顧客からの問い合わせにより発覚したこの問題は、約1時間のうちに対処された。さらに、コーポレートサイトおよび自社のエンジニアブログにおいて問題の原因や対応方法について明確かつ簡潔に情報を公開したことに関しては、好意的な反応も多く見られた。

実はこの想定外のトラブルに対して迅速かつ誠意ある対応を行うことができたのは、メルカリのカルチャーに依るところが大きい。担当したメルカリ 取締役の濱田 優貴氏と、プリンシパルエンジニア 長野 雅広氏に話を聞いたので、その模様をお伝えする。

メルカリ 取締役 濱田 優貴氏(左)と同社 プリンシパルエンジニア 長野 雅広氏(右)

CDNの切替で想定外の問題

事故当日の朝、メルカリWeb版のコンテンツキャッシュをしているCDNのプロバイダ切り替えが実施された。

しかしこれによって、本来キャッシュされるべきでない情報がCDN側にキャッシュされ、該当時間帯にアクセスした顧客に、他の顧客の情報が表示されてしまった。

この問題に気づいたのは、CDNサーバを切り替えてから約5時間後。個人のユーザーから指摘を受け、直ちに検証に入り、1時間で対応を完了した。

事故やその対応の詳細については、同社のエンジニアブログをご覧いただきたい。

メルカリのプリンシパルエンジニア 長野 雅広氏は当時の状況について、「当日の朝に切り替え作業をしていたこともあり、カスタマーサポートから連絡を受けた段階で、即座にCDNが原因かもしれないと疑いました。そこでキャッシュサーバの切り替えを中止して従来の設定へ戻し、Webサイトをメンテナンスモードに切り替えました」と振り返っている。

なぜ想定外のトラブルに迅速な対応ができたのか

セキュリティ事故が発生した際にありがちなのが、意思決定者への報告や相談に時間がかかってしまい対応が遅れてしまうというケースだ。なぜメルカリはここまで迅速な対応をとることができたのだろうか。

普段はSlackによるチャットベースでのコミュニケーションを主軸に置く同社。Slackのチャンネルは、人事や財務に関わる一部のチャンネルを除いて基本的にはオープンにしておくという方針で運用している。

カスタマーサポート担当者からエンジニアに対して障害の可能性を報告するチャンネルも、そうした方針を踏襲し、だれでも閲覧できる状況にあるという。

「このチャンネルでは普段、『取引画面が見えないという問い合わせが今日は多いんですけど、何か起きてないですか?』といったような、カスタマーサポートからエンジニアへの情報共有が行われています。今回の事故の際も、はじめはこのチャンネルでの情報共有によって異変に気付きました」(長野氏)

同社ではもともと、大きな異変があった場合には経営陣も含めて迅速に情報を共有する体制になっていた。濱田氏によると、「事故発生時における細かいフローが予め決まっていたわけではなく、重要な情報に関しては、役職関係なくSlackでダイレクトに通知するようになっていました。このような体制があったからこそ、すぐに対応できたのではないでしょうか」と、迅速にトラブル対応できた原因について考察する。