はじめに
FirebaseはmBaaSにカテゴライズされ、自前でWebサーバーをホスティングせずとも手軽にデータ管理を行うことができるGoogle製のクラウドサービスです。ソケット通信による双方向のリアルタイム参照/更新も魅力の1つとなります。
利用料金
プランは無料、月額固定($25/month)、従量課金の3プランがあります。
https://firebase.google.com/pricing/
###例)1レコードあたり100Byteとした場合
100Byte = ID(10Byte)+名前(20Byte)+住所(50Byte)+電話番号(10Byte)+ その他(10Byte)
無料(SPARK) | 月額$25(FLAME) | 従量課金(BLAZE) | |
---|---|---|---|
同時接続数 | 100 | 無制限 | 無制限 |
データ容量 | 約1,000万件 | 約2,500万件 | 約1,000万件 |
データ転送量 | 約1億I/O | 約2億I/O | 約1,000万I/O |
※同時接続数の無制限の実態は10,000件まで
※データストレージ(ファイル等)、ホスティングコンテンツ、TestLabは割愛
※制限が超過する前にメールが配信される
※SPARK、FRAMEプランの場合、制限値が超過した場合はAPIのレスポンスにエラーが戻る
(自動的にスケールするわけではないため莫大に請求されることはない)
※以前までは使用量を監視する機能はなかったが2016年7月末にコンソール画面に使用状況タブが用意され可能となった
###料金支払い方法
コンソール画面にログイン後に、左下のアップグレードから進むとクレジット登録画面に進みます。
※個人名などの情報は伏せています
##管理者の権限管理
Firebase用の管理ページから管理者アカウントの追加/削除/ロールの変更などが可能です。
##Firebaseの障害情報
Firebase自体は毎週7分程度のダウンタイムがあるようです。※こちらのスライド参照しました
以下のページにて現在のfirebaseのステータス(障害情報)が確認できます。
https://status.firebase.google.com/
##セキュリティ
データアクセスに関するセキュリティについて、基本的には全体、オブジェクト(DBのテーブル)単位、データ(DBのレコード)単位で指定が可能となります。
※考え方としてはオブジェクトのセキュリティは緩くして、レコード単位で絞っていくイメージです。
基本的な概念として、firebaseのデータアクセスはアプリ(Webサイト)にログイン認証機能を設けて自分のデータのみ編集可能とし、他者のデータは閲覧のみまたはアクセス不可とするような考え方です。
ユーザー認証の仕組み、ユーザーデータ自体はfirebaseでも用意されております。
(Google、facebook、twitter、自前用、匿名などなど)
ログイン後はuidが割り振られ、先ほどのルールに記載することが可能です。
※以下はサンプルです。$uidとログイン後のuidが一致した場合のみ読み書きできるなど
{
"rules": {
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
管理画面など自前のサーバーから自由にアクセスしたい場合などは工夫が必要がそうです。
サーバーサイドから利用するFirebase
##その他(オフラインの挙動)
オフラインの挙動(こちらから抜粋)
スマホやPCから書き込まれたデータはローカルストレージに保存された後、サーバに送信されます。このとき、もしネットワーク障害が発生してもデータはローカルに保存され、ネットワークが復帰次第サーバに送信されて通常のFirebase処理を継続します。