[レポート] モバイル開発におけるデータストアの選び方 #AWSSummit

2015.06.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS Summit Tokyo 2015 "モバイル開発におけるデータストアの選び方" [Dev-04 Mobile] のセッションレポートです。 スピーカーはアマゾンデータサービスジャパンの 清水さんです。

AWS Mobile サービスの紹介

aws_mobile_services

Mobile SDK

  • クロスプラットフォーム
  • 共通の認証
  • ネットワーク状況を自動ハンドリング
    • オフライン対応
  • メモリフットプリントの削減
    • メモリ/ストレージなどのリソースを必要なだけ使う

2-Tier アーキテクチャ

  • EC2を介さないアーキテクチャ
  • Cognito
    • キーとなる認証サービス
    • Facebook、Googleなどの認証プロバイダ又は独自の認証
    • ゲストアクセスも可能
    • テンポラリのCredentialを発行するとこができる
      • Credentialを埋め込まなくて良い

データストアの選び方

4つ紹介します。

Cognito Sync

Cognito Identity との密な連携、特定のユーザーに関連したシンプルなテキストデータの保存

  • アプリデータ、設定、状態などを保存
  • クラスデバイス、クロスプラットフォーム
  • 20MBまで
    • KVSで1024個
    • バイナリデータはBase64で文字列化する
  • オフライン
    • 一旦ローカルに保存されるので、電波が悪くてもシームレスに動作する
    • インテリジェントな同期
    • 柔軟なコンクリフトの解決
  • 複数アプリからの参照も可能
  • SNS Mobile Pushとの連携
    • データ同期時にSNSでPush通知が可能
  • Kinesisとの連携
    • データ同期時にKinesis -> Redshift -> BIツール など
  • Lambdaとの連携
    • データ同期時に何だかの処理が可能

DynamoDB

複雑な構造、検索が必要なテキストデータの保存 高い信頼性、スケーラビリティ、低レイテンシ、NoSQL

  • Object Mapper
    • テーブルと各言語のオブジェクトをマッピング
    • 全件取得、検索、保存などシンプルな操作
  • DynamoDB Stream(プレニュー)
    • データ操作をトリガにLambdaやKCLワーカーと連携可能

S3

メディア、コンテンツなどのサイズの大きなデータ 安全、耐久性

  • Transfer Manager
    • 分割Upload
    • 電波が悪い場合のDownload再開
    • 進捗の取得、停止、レジューム
  • Lambdaとの連携
    • 画像変換してメタデータをDynamoDB、実データをS3など

Kinesis

アプリ内で頻発する行動イベントログなど、ストリーミングデータの保存

aws_mobile_strages

  • Kinesis Recorder
    • ある程度ローカルに保存してから一括して送信
    • オフライン対応
  • 例えばゲームアプリのユーザー行動イベントログが向いている
  • ログが多い場合にローカルストレージの容量を意識する
  • Kinesis -> KCL -> Redshift -> BIツールでデータ解析
  • Kinesis -> Lambda -> DynamoDB, SNS Push エラー通知など

まとめ

モバイルアプリ開発において、コストやパフォーマンスの点から2-Tierアーキテクチャが注目されています。また、その中で複数のストレージが提供されユースケースに応じて何が最適なのかを選択する必要があります。その手がかりになったセッションでした。 最後に”AWSを活用して本来の業務へ集中しよう!”というまとめでしたが、オフライン対応などの時間がかかる割には他のアプリと違うような価値を提供しないようなな所はAWS SDKにお任せして、”本来考えるべき所に集中して良いもの作ろうぜ”、とう素敵なメッセージでした。