懸念されたプッシュ通知基盤「Pusna」の性能不足

リクルートホールディングス傘下の企業として、各種サービスのシステム開発、WebマーケティングなどIT関連業務の一角を担うリクルートテクノロジーズ。同社は、リクルートが2012年10月1日付けでリクルートホールディングスへガバナンス体制をを変更すると同時に、主要事業部門の分社化によって誕生した。

リクルートテクノロジーズでは分社前の2011年から、リクルートグループのスマートデバイス向けアプリ用として独自開発のプッシュ通知基盤「Pusna(Push Notification Aggregator)」を提供してきた。アプリを起動していなくても、情報を的確なタイミングで知らせるこのプッシュ通知は、もはやスマートデバイスのユーザーだけでなく、アプリ配信側としても必要不可欠な機能だ。しかし近年、アプリ数およびスマートフォンユーザーが急激に増加。実際にグループ内で提供しているiOS/Androidアプリ数も2012年頃から爆発的に増加し、2014年秋時点ですでに360前後にまで達している。もちろんすべてのアプリがプッシュ通知を使っているわけではないが、そのニーズは確実に増えており、Pusnaの性能不足が懸念されていたという。

既存のPusna(プッシュ通知基盤)に対する仕様の策定

リクルートテクノロジーズ ITマネジメント統括部APソリューショングループの宮川典久氏は「APソリューショングループは、リクルートグループ全体のフレームワークやアプリケーション基盤などを横断的に提供している部署です。しかし、技術の進歩が早いIT業界において適切なサポートを行っていくためには、常に新しい技術を開拓していく必要があります。その一環として、課題を抱えるプッシュ通知基盤のリニューアルに至りました」と語る。 プッシュ通知基盤の再構築にあたり、当初は外部のASPサービスを使う選択肢も候補として挙げられていたが、ここで、宮川氏の「新しい技術を使って自分たちで作りたい!」という熱意が周囲を動かし、新たなプッシュ通知基盤の検討が始まったのである。

最新技術で約340倍ものスピードを実現した「Pusna-RS」

Pusnaが抱えていた具体的な性能面の課題としては、まず配信スピードの遅さが挙げられる。当時のスペックでは、1000万件分の配信を行うのに分割で約1週間もの時間が必要だった。たとえば朝のニュースをプッシュ通知で配信する場合、スピードが遅いと狙った時間に全ユーザーへ通知できず、まったくもってニュースアプリの意味を成さなくなってしまう。 また、高負荷にシステムが耐えられないことも問題だった。プッシュ通知は、ユーザーがアプリを起動するたびにデバイス情報を受け取るが、デバイス数の増加に伴いシステムの負荷も高くなっていく。当時はシステムダウンを防ぐため、各アプリ担当者のプッシュ通知時間を調整するといった運用対応を余儀なくされていたそうだ。 これらの課題を解決するべく、同社では2013年9月にリアルタイム性とスケーラビリティを兼ね備えた次世代型プッシュ通知基盤「Pusna-RS(Realtime&Scalable)」の開発をスタートした。

Pusna-RS概要

スピードについては、「AWS(Amazon Web Services)」が提供している分散キューサービス「SQS(Amazon Simple Queue Servise)」で各機能の高速化を図ると同時に、分散KVS(Key-Value Store)「Amazon DynamoDB」でI/Oの高速化を実現。スケーラビリティに関しては、単純化と分散が絶大な効果を発揮している。そのほか、「Node.js」をはじめとした今まで運用実績のなかった技術やソフトウェアも積極的に活用したそうだ。 こうして同年12月末に完成したPusna-RSでは、1秒あたり1万4000件以上という、旧基盤と比べて約340倍もの驚異的なスピードを実現。1000万件分の配信が、1週間からわずか12分にまで短縮された。スケーラビリティについても、登録デバイス数が数千万台を超えて1年以上が経過した段階でも、まったく問題なく安定稼動が可能となっている。

さらにPusna-RSを開発する上では、既存システムとの連携やレコメンドプッシュなどを重視していたのも大きなポイントだ。 「プッシュ通知は、アプリによって使い方が異なります。一般的に挙げられるのは、ニュースなどを全ユーザーに通知する、メッセージ系アプリのようにリアルタイムで通知する、特定ユーザーへセグメント別に通知する、という3パターンです。しかし最近は、ビッグデータの分析結果に基づいてパーソナライズして送るといったように、使い方も多様化してきています。こうした需要に応えるべく、Pusna-RSでは既存システムとの連携やレコメンドプッシュにも気を配りました。社内で開発したかった理由の1つがここなんですよねセキュリティ要件を満たしながら、様々なインターフェースを持つ社内システムと連携できる仕組みにしたかったんです」と、宮川氏は将来を見据えた開発思想について語る。 現在、Pusna-RSを使用しているアプリはリクルートグループ内で約50種類。ほぼすべての主要アプリをカバーしているほか、これまでPusnaを使っていなかったアプリでPusna-RSを導入するケースも増えているという。

エンジニアが“やりたいものに取り組める”社内環境

Pusna-RSの案件を含めて、リクルートテクノロジーズでこうした先進的かつエンジニア主導の取り組みが行えるようになったのも、積極的な社内体制の改善によるところが大きい。実は分社化した当時、同社では事業会社ごとに個別でアプリを開発していた。事業会社が異なれば、当然ながら技術面に関する同じような知見や新しい情報などが分散してしまい、グループとしての統一性も保ちづらくなってしまう。

リクルートテクノロジーズ
ITマネジメント統括部 スマートデバイスグループ
樋口勝彦氏

リクルートテクノロジーズ ITマネジメント統括部 スマートデバイスグループの樋口勝彦氏は「こうした背景から、弊社では約2年前に従来の“事業別組織”から“機能別組織”へと、大規模な組織変革を実施しました。そして現在は私の所属しているスマートデバイスグループが、リクルートグループ全体の主要アプリに関する知見の集約、各種情報の展開などをまとめて行うための開発を手がけています」と語る。

「Pusnaへの課題感は強く感じていたものの、アプリ基盤の専門性がなかったので宮川さんに相談したんです。そしたらすぐに“やってみよう!”という話になって、気が付いたら自分も開発することになっていました。実際にPusna-RSを運用するのは自分たちの組織なので、運用者目線で機能の取捨選択ができたことはよかったと思います」 Pusna-RSの運用を始めて1年。今では、運用時のQAも自分たちで解決できているという。

一般的な企業の場合、エンジニアの業務は他部署からの依頼ありきになる傾向が強い。そんな中、リクルートテクノロジーズではまったく逆で、エンジニアでも自発的に動く、発言するといったアクティブさが重視されている。もちろん提案する以上は、やり遂げる熱意と相応の技術力を持ち合わせている必要があるが、“自分のやりたいものに取り組める”環境が整っているのは、エンジニアとしてなにより嬉しいところだろう。 このようにリクルートテクノロジーズでは、エンジニアの積極性を活かし、楽しみながら仕事ができる環境を武器に大きな躍進を遂げている。そして今後もプロフェッショナル集団としてのスキルに磨きをかけ、リクルートグループ全体のIT業務を支え続けることだろう。