FirebaseとAWS(Amplify)の機能を比較してみた
Firebaseとは
モバイル・Webアプリケーション向けのプラットフォーム
Firebaseの主な機能は三種類に別れています
ビルド
・ データベース:Cloud Firestore
・ 認証:Firebase Authentication
・ ストレージ:Firebase Storage
・ クラウド関数:Firebase Functions
・ ホスティング:Firebase Hosting
リリースとモニタリング
・アクセス解析:Firebase Analytics
エンゲージメント
・Firebase Cloud Messaging(FCM)
他にも色々な機能がありますが、ここでは割愛します。
Amplifyとは
AWSを⽤いたWeb/モバイルアプリを開発するプラットフォーム
大きく分けて4つの機能があります
- ライブラリ|Web・モバイルアプリとAWSを統合するためのOSSライブラリ
- UIコンポーネント|クラウドに接続されたUIコンポーネントOSSライブラリ
- CLI|コマンドでバックエンドを作成・管理する
- Console|ビルド、テスト、デプロイ、ホスティングを実現できるサービス
Amplify ライブラリ
ライブラリの中からカテゴリを選んで機能を実装できる
Amplify UIコンポーネント
JavaScript用のライブラリ
ログイン機能やチャットボット機能などが実装できる
CLIとConsoleの詳細は割愛します。
アプリ構築
Firebaseでのアプリ構築
- データベース:Cloud Firestore
- 認証:Firebase Authentication
- ストレージ:Cloud strage
- クラウド関数:Cloud Functions
- ホスティング:Hosting
Amplifyでのアプリ構築
- データベース:DynamoDB
- 認証:Amazon Cognito
- ストレージ:S3
- クラウド関数:API Gateway+Lamda
- ホスティング:S3+CloudFront
FirebaseとAmplifyの比較
データベース
Firebase:Cloud Firestore
AWS:DynamoDB
二つともNoSQLタイプのデータベース
必要に応じて自動的にスケールアップ・ダウンするため、リソースの管理が不要
認証
Firebase:Firebase Authentication
Amplify:Authentication(Amazon Cognito)
アプリでのユーザー認証に使われるライブラリ
ストレージ
Firebase:Cloud strage
AWS:S3
お金があれば無限にデータを保存できるストレージ
クラウド関数
サーバーレス環境でスケーリングも可能。サーバーCPU使用率やメモリのことなんて考えなくて済む。
Firebase:Cloud Functions
他の機能とHTTPSリクエストに応じて、バックエンドコードを自動的に実行できる機能。
AWS:API Gateway+Lamda
AWSの場合はAPI Gateway+Lamdaを使うと同様のことができる。
API Gateway:APIを作成、公開、管理するためのAPI管理ツール
ホスティング
Firebase:Hosting
Hostingだけを使えば世界中に配置されるFirebaseのCDNエッジサーバに保存され、どこからでも高速に配信可能。
AWS:S3+CloudFront
S3+CloudFrontを使うと同様のことができる。
その他の機能 アクセス解析
Firebase:Firebase Analytics
モバイルアプリとウェブアプリのユーザー行動を追跡・分析するための無料の分析ツール
AWS:Amazon Pinpoint+Amazon QuickSight
Pinpoint:プッシュ通知やメール、SMSメッセージなどを送信、追跡、分析するためのサービス
QuickSight:ビジュアル分析とインサイト共有のためのビジネスインテリジェンス (BI) サービス
まとめ
両方に共通して言える点
コストが安い:料金体系は使用量ベース。
バックエンドやインフラのことを考えなくて済む。
Firebaseの長所
シンプルで開発者にとって使いやすい
全機能が最初から統合されているためわかりやすい
Googleのサービス、GCPとの連携がしやすい
Firebaseの欠点
NoSQLデータベースを使用するしかないため、クエリが複雑になる
NoSQLデータベースしか使えないので、大規模かつ複雑なアプリケーションにはあまり向かいない
AWS Amplifyの長所
アプリを大規模にスケーリング可能
SQLサーバー使いたいなど多数のAWSシステムと連携可能
AWS Amplifyの欠点
豊富な機能とサービスが存在するため扱いが難しい
結局どちらのサービスを使ったらいいの?
・Firebaseを使ったほうが良い場合
アプリやプロトタイプの開発には、手軽で早く進められる
Flutterでモバイルアプリ作るのに向いている(Amplifyも4月からサポート済み)
・AWSを使ったほうが良い場合
大規模なプロジェクトや、AWSの他のサービスとの統合を考えている場合
ローコードでWebアプリやWebサイトを開発したい(Figmaとの連携機能)
Discussion