昨日、ハピタスにログインしたところ、ポイント残高が予想外に増えていました。過去のポイントが承認された?と思いましたが、思い当たる広告案件はなかったので、ポイント通帳を見てみました。

すると、12月28日付で「システム障害に関するお詫び【ランキングイベント:エントリー】」として10,000ポイントが付与されていました。本記事では、この「システム障害」に関する詳細を開設したいと思います。

システム障害の概要

オズビジョン(ハピタスの運営会社)の公式Webページにおいて12月28日に「システム障害のご報告と補填についてのお知らせ」というお知らせが投稿されています。

このお知らせによると、

  • 12月26日〜27日に友達紹介に関する処理が正しく行えていなかった
  • いくつかの条件を満たす方々にはお詫びとしてポイントが付与される
  • 現時点で不具合の原因の究明ならびに修正は済んでいる

ということです。

以下で、障害の内容を詳しくみていきましょう。

CDNにおける障害

公式による不具合情報

公式ページでは、

年末のアクセス集中時に正常にサービスをご提供するために、高負荷に耐えうる状況を作る目的で、PC版ハピタス、スマートフォン版ハピタスのランディングページをCDNにキャッシュする作業を行いました。

その際、本来キャッシュされるべきでない情報がCDN側にキャッシュされてしまい、該当期間にアクセスしご登録いただいたお客様の、紹介者様ID、登録経由元の関連付けが正しく行われない状態になっておりました。

社内にて別作業のテスト中に問題認識後、即時にCDNのキャッシュを停止しました。
これにより状況は収束し、現在は正常にサービスをご提供させていただいております。

PC版ハピタス、スマートフォン版ハピタスへのお客様のリクエストは、CDNプロバイダから弊社が管理するApache Webサーバを介してアプリケーションサーバに到達します。

今回、年末のアクセス集中による高負荷に耐久するため、弊社では以下のURLをCDNに5分間隔でキャッシュする処理を実装致しました。

上記のURLにアクセスすると、その後5分間は、他のお客様にも同じHTMLが表示されます。以降5分間隔でキャッシュはクリアされ、ページへのアクセスを起因に新たにHTMLがキャッシュに保存されます。
ランディングページの表示時に、ご登録されたお客様ごとに紹介者様IDと登録経由元情報をデータベースに保存する処理を行っておりますが、処理後のHTMLがキャッシュされてしまうことで、最初にデータベースに保存されたお客様に次のキャッシュ更新まで、全ての紹介者様ID、登録経由元情報が関連付けされてしまう事態に至りました。

不具合の認識後、CDNのキャッシュを停止。停止後にご登録されたお客様の紹介者様ID、登録経由元が正しく関連付けられる状態に戻しました。

と発表されています。

「年末のアクセス集中による高負荷に耐久するため」とあるので、年末から始まる出川さんによるテレビCMへの対策を行った結果、その対策が裏目に出た、とみて取れます。

CDNとは?

CDNとは、「Contents Delivery Network」の略で、ウェブサイトへの大量なトラフィックを裁くための仕組みの1つです。インターネットの世界において、大量なトラフィックを裁くことができるサーバーを構築することは、実は思っている以上に難しいことです。少ないトラフィックであれば問題なく動いているように見えるサイトでも、大量のトラフィックが集中してしまうと、そのトラフィックを処理しきれずにWebサーバーがダウンしてしまうことも珍しくありません。そのようなサーバーダウンを回避するために、動画や画像などの負荷の高いデータについてはWebサーバーが直接配信するのではなく、大量トラフィック・高負荷データを裁くことに特化したサービスが配信する仕組みを使うことがあり、このとき利用されるサービスを総称して「CDN」と呼んでいます。CDNは、世界中に存在するWebサーバーに「コピー」を作成し、各ユーザーは、一番近いネットワークにあるCDNのサーバーからコピーを取得します。

図にすると以下のようになります。

ハピタス自身のWebサーバーとユーザーの間にCDNサーバーが入ります。そして、ユーザーのアクセスに応じて、本来ならハピタスのサーバにアクセスして情報を取得すべきところを、CDNサーバーがコンテンツを一時的に保存しておき、保存データが存在するときはその保存データをユーザーに返すようにすることで、ハピタス自身のWebサーバーの負荷を抑えることができるようになります。

不具合の内容

このCDNサーバーを新しく追加するときには注意が必要です。それは、「各アクセスに対して、Webサーバー側で何らかの処理を行う必要があるかどうか」を見極めることです。CDNを使うことで、ハピタス自身のWebサーバーへのアクセスが省略されますが、それによるそこでしようとしていた処理についても省略されてしまいます。今回のケースでは、「友達紹介の関係付けを行う」という処理が省略されてしまい、結果として今回の障害に繋がったとみられます。

最近あった同様の障害

実は、CDNの利用に関する同様の障害は、ハピタス以外にも事例があります。最近の事例で一番印象に残っているのは、メルカリにおける「CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして」です。メルカリでも2017年6月にキャッシュすべきではないページがキャッシュされてしまい個人情報の流出に繋がる事故が発生しました。

ハピタスの対応

今回の不具合はハピタスにおけるキャンペーンと被ったタイミングで発生してしまいました。しかし、ハピタス側の対応は素晴らしく、各ユーザーに対してお詫びというかたちでポイントの還元が行われました。

友達紹介ランキングイベント

友達紹介ランキングイベントにエントリーしている方全員に10,000ポイント。並びに、各ランキングの現時点の上位入賞者に追加で10,000ポイントがお詫びとして付与されました。

ハピ友紹介制度

友達紹介ランキングイベントに参加していない方においても、この期間に紹介している可能性がある方には10,000ポイントがお詫びとして付与されています。

シェアハピ紹介制度

シェアハピページ内SNS、メールによる拡散ボタンを上記期間内に利用されているユーザー様全てに対して、1,000ポイントが付与されました。

登録ユーザー様

該当期間の間に登録されたユーザー様には一律で1,600ポイントが付与されたようです。該当期間に実施されていた各種キャンペーンをすべて実施したときに得られるキャンペーンポイントが1,530ポイントということで、そのポイント数が基準になっているようです。

まとめ

年末年始の忙しい時期でありながらも、ハピタスは障害の原因究明やその後の対策(お詫びポイント含め)を迅速に行なったように思います。こういった不足の事態への対応を見ることで、その企業・サービスの強さを知ることができると自分は信じています。今回の対応を見る限り、ハピタスは今後も伸びていくサービスの1つと思います。