Edited at

スマホアプリのサーバーサイド構成のパターン

More than 1 year has passed since last update.


取りうるパターン


  • クラウドサービスを使う


    • MBaas



  • 自前のサーバーを用意する


    • VPS

    • AWS



今回はMBaasを主に使うケースについてまとめた。


サーバーサイド環境を用意すると嬉しいこと


リモートプッシュ通知が実装できる


  • アプリがアップデートされた時、毎日オススメの記事をプッシュ通知で送るなどの施策はサーバーサイド側の用意が必要


実現手段の候補


  • Firebaseで管理画面から送る

  • Firebase + 自前サーバーで特定タイミングで送る


アプリ共通の設定ファイルを用意することで細かい調整を行える


  • 広告の表示のON/OFF

  • キャンペーンの表示ON/OFF


実現手段の候補


  • S3のバケットに設定ファイル(yaml,json)を設置

  • Dropboxに設定ファイル(yaml, json)を公開

  • 設定用のDBをMBaasや自前サーバーに用意


アプリのログを取得することができる


  • ある機能をユーザーが利用する時にどういう動線からその機能を訪れているかを計測できる

  • モバイルアプリの画面で何を切り捨てるかという判断にも有用


実現手段の候補


  • Google Analyticsにイベントを送る

  • Firebaseにイベントを送る


アプリをアンインストールしても状態を保存しておける


  • アプリをアンインストールしても情報を復旧してあげることができる


実現手段の候補


  • ユーザーアカウントの機能を作ってサーバーにデータを保存する

  • UUIDを発行して1端末=1ユーザーで認識できるようにする (ログイン不要)


アプリのクラッシュレポートをとる


  • アプリが想定しないエラーでクラッシュしてしまった時にすぐわかるようにする


実現手段の候補


  • FirebaseのCrash Reportingを使う


    • CrashlyticsがFirebaseに統合されたのでデファクトスタンダードになりそう



  • Bugsnagを使う

  • Newrelicsを使う


ユーザー同士のコミュニケーション機能を作る


  • ランキング機能、リアルタイムチャット機能など


実現手段の候補


  • 単純なチャットやランキング機能だけなら自前サーバー無しでもできそう


    • ランキング: Google App Script + Lamda

    • チャット機能: Firebase



  • この辺は知見がないので知りたい


結論


  • 個人でアプリを新しく作る時はサーバー側はMBaasでも十分そう

  • 人気が出てきてから、自前サーバーの構成に移行すればいいのではないか

  • スマホアプリに必要なサーバーサイドの機能には特殊なものはそんなにないなという印象だった