「ニュースパス」開発でのサーバーレス活用、「ServerlessConf Tokyo」レポート(後編)
Gunosyが語る「サーバーレス」とモバイルアプリのいい関係
2016年10月13日 07時00分更新
Gunosyにとってメリットの大きいAWSサービスは「Cognito」「SNS」「Kinesis」
続いて松本氏は、ニュースパスで利用しているAWSのサービス群を具体的に紹介していった。
「さまざまなAWSのサービス、そして『AWS Mobile SDK』を利用しているが、特にメリットが大きかったのは『AWS Cognito』『Amazon Simple Notification Service(SNS)』『AWS Kinesis』の3つだ」
AWS Cognitoは、モバイルアプリにおけるさまざまなAWSサービスへの認証/認可を一元的に担うほか、ユーザー管理、さらにユーザーにひも付いたデータ(キーバリューストア)のサーバーや他デバイスとの同期(リモートシンク)、といった機能を提供する。「CognitoとMobile SDKを組み合わせると、クライアントサイドからKinesisやSNSへのアクセス認可を得て、直接やり取りできるようになる」。
ニュースパスでは、このCognitoのシンク機能を使って、APIを介することなく、ユーザーの設定値を「Amazon Elasticsearch」に保存する流れをサーバーレスで実現しているという。具体的には、クライアント上で設定が変更されると、Cognitoが自動的に同期を行い、それをトリガーとしてLambdaがイベント通知を、SNSを介して自社開発のシステムに通知する。あとはユーザーの設定変更がElasticsearchなどに保存される、という流れだ。
次のAmazon SNSは、iOSとAndroid(さらにそのバージョン間)の差異を吸収する目的で利用しているという。プラットフォームごとに異なるデバイストークンをそのままバックエンドで使うのではなく、SNSを介して共通のSNSエンドポイントに変換してから使う。
「われわれのニュースアプリにおいて通知機能はサービスの要。SNSを使うことで、クライアント側のOS(の違い)を気にすることなく運用ができる」
3つめのKinesisは、アプリ内のすべてのイベントログを収集するために使っている。ログデータの収集と解析は、同社ビジネスにおいて非常に重要な要件であり、そこから「手間のかからないログ収集基盤」を模索してきたと、松本氏は語る。Kinesisの場合、クライアントのMobile SDKを通じて直接ログが収集できるうえ、スケーラブルであり、ストリーム集計やバッチ集計のサービスへも連携しやすいという。
なお、クライアントサイドのログコレクタには、クックパッドが開発した「Puree(ピューレ)」を使用している。Pureeは、クライアント上のイベントをバッファリングしながらサーバーに非同期送信する仕組みを持っており、通信できなかった場合の再送処理なども自動で行ってくれる。