このページの本文へ

「ニュースパス」開発でのサーバーレス活用、「ServerlessConf Tokyo」レポート(後編)

Gunosyが語る「サーバーレス」とモバイルアプリのいい関係

2016年10月13日 07時00分更新

文● 大塚昭彦/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

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などに保存される、という流れだ。

CognitoやLambda、SNSなどを使ったサーバーレスでのユーザー設定変更保存システム。松本氏は、処理が数珠つなぎに進むこの仕組みを“ピタゴラスイッチ”だと紹介

 次のAmazon SNSは、iOSとAndroid(さらにそのバージョン間)の差異を吸収する目的で利用しているという。プラットフォームごとに異なるデバイストークンをそのままバックエンドで使うのではなく、SNSを介して共通のSNSエンドポイントに変換してから使う。

 「われわれのニュースアプリにおいて通知機能はサービスの要。SNSを使うことで、クライアント側のOS(の違い)を気にすることなく運用ができる」

Amazon SNSを活用し、モバイルプラットフォームの差異を吸収

 3つめのKinesisは、アプリ内のすべてのイベントログを収集するために使っている。ログデータの収集と解析は、同社ビジネスにおいて非常に重要な要件であり、そこから「手間のかからないログ収集基盤」を模索してきたと、松本氏は語る。Kinesisの場合、クライアントのMobile SDKを通じて直接ログが収集できるうえ、スケーラブルであり、ストリーム集計やバッチ集計のサービスへも連携しやすいという。

 なお、クライアントサイドのログコレクタには、クックパッドが開発した「Puree(ピューレ)」を使用している。Pureeは、クライアント上のイベントをバッファリングしながらサーバーに非同期送信する仕組みを持っており、通信できなかった場合の再送処理なども自動で行ってくれる。

スケーラブルかつ扱いやすいログ収集基盤としてKinesisを採用

カテゴリートップへ

  • 角川アスキー総合研究所
  • アスキーカード