サイバーエージェントでは、ユーザの投稿(注)をチェックし、不適切な内容は非表示にするといった監視業務を支援するシステムとして「Orion」を開発しました。このプロジェクトに関わった安田氏と藤坂氏、内藤氏、松井氏にお話を伺っていきます。
スマートフォン向けサービスを統合的に管理できる「Orion」
SNSの大きな魅力として、会員どうしで気軽にユーザ投稿をやりとりしてコミュニケーションを図れることが挙げられます。ただ、青少年にとって有害な内容が投稿されるなど、発信されたユーザ投稿の内容が思わぬトラブルに発展するケースも多いことから、投稿内容のチェックは欠かせないものとなっています。
こうした監視業務を支援するためのシステムとして、サイバーエージェントの研究開発組織である「Ameba Technology Laboratory」が開発したのが「Orion」です。このプロジェクトが始まった背景について、カスタマーサービス部門においてサービス健全化チームを率いる松井氏は次のように説明します。
「現在サイバーエージェントでは、多数のスマートフォン向けサービスを共通のプラットフォーム上で展開する『デカグラフ』構想を展開しています。このデカグラフのプラットフォーム上でも、既存のAmebaの各サービスと同様に、投稿されたユーザ投稿をチェックするしくみが必要だということで、Ameba Technology Laboratoryに開発しませんかと声をかけたのが始まりです(松井氏)。」
さらに松井氏には、既存のAmebaにおける監視システムの課題を解決したいという思いもありました。
「ユーザから通報を受けたうえでユーザ投稿をチェックする、あるいは投稿のすべてに目を通すなどいくつかのチェック方法がありますが、既存のAmebaでは通報監視や全件監視といった目的ごとに別システムで構築されたツールを使い分けていました。それで、デカグラフ向けに監視ツールを作るのであれば、監視方法にかかわらず一元的にユーザの投稿をチェックできるツールにしたいと考えていました(松井氏)。」
蓄積された大規模データ処理のノウハウをフルに活用
このOrionの話を聞いたとき、Ameba Technology Laboratoryに在籍する安田氏は“おもしろそうだと感じた”と言います。
「デカグラフは多くのユーザが利用するプラットフォームのため、監視ツールに流れてくるユーザ投稿の量も当然膨大になると予想できました。たとえば、ブログやなうなどのAmebaサービスへ1日に投稿されるエントリ数は数百万件ありますが、デカグラフへの投稿はそれ以上になる可能性が高いわけです。そういった部分がエンジニアとして興味深いと思いましたし、Ameba Technology Laboratoryには大規模データ処理のノウハウも蓄積されていたので、実現できるだろうとも考えていました(安田氏)。」
Orionの開発プロジェクトは、Ameba Technology Laboratoryと、サイバーエージェントのグループ企業で実際に監視業務を行うシーエー・アドバンスが共同で進めることになりました。バックエンドをAmeba Technology Laboratoryが担当し、そこで提供されるAPIを使ってシーエー・アドバンスがフロントエンドを開発するという形です。
単一障害点を解消し高い可用性を実現
このOrionでは、ログ収集に「Flume」、データベースに「HBase」、そして検索エンジンとして「Solr」といったオープンソースソフトウェアが使われています。Flumeを使ってユーザ投稿をログとして取り込み、必要な処理を行ったうえでHBaseに記録、さらに蓄積されたユーザ投稿の検索をSolrで可能にするという形です。
この中で、内藤氏が大変だったと話すのはHBaseの設計です。
「OrionでデータベースにHBaseを採用したのは、すでに構築されているHBaseのマルチテナントインフラを流用できることがおもな理由です。このHBaseに前段で処理したユーザ投稿を取り込んでいるのですが、とにかくデータ量が多いため、設計を誤ると投稿を取得するのに時間がかかるなどの弊害が生じるのです。そのような問題が起こらないように、効率良くHBaseにユーザ投稿を取り込むための設計を考えるのが大変でした(内藤氏)。」
Orionの開発で注意した点について伺ったところ、藤坂氏は単一障害点をできるだけ排除することだったと話します。
「投稿をチェックする業務を行うシーエー・アドバンスでは24時間態勢で監視を行っており、当然システムも24時間連続稼働が前提となります。このシステムが止まると監視も不可能となるため、基本的に単一障害点がない形でシステムを構成しています(藤坂氏)。」
さらに安田氏によれば、障害が発生してもダウンタイムは「最長で1分程度」ということで、可用性の高いシステムに仕上がっています。
後編では、このOrionの具体的な処理の流れなどについて解説していきます。