🐬

FirebaseとAWS(Amplify)の機能を比較してみた

2023/10/20に公開

Firebaseとは

モバイル・Webアプリケーション向けのプラットフォーム
Firebaseの主な機能は三種類に別れています

ビルド
・ データベース:Cloud Firestore
・ 認証:Firebase Authentication
・ ストレージ:Firebase Storage
・ クラウド関数:Firebase Functions
・ ホスティング:Firebase Hosting

リリースとモニタリング
・アクセス解析:Firebase Analytics

エンゲージメント
・Firebase Cloud Messaging(FCM)

他にも色々な機能がありますが、ここでは割愛します。
https://firebase.google.com/products-build?hl=ja

Amplifyとは

AWSを⽤いたWeb/モバイルアプリを開発するプラットフォーム
大きく分けて4つの機能があります

  1. ライブラリ|Web・モバイルアプリとAWSを統合するためのOSSライブラリ
  2. UIコンポーネント|クラウドに接続されたUIコンポーネントOSSライブラリ
  3. CLI|コマンドでバックエンドを作成・管理する
  4. Console|ビルド、テスト、デプロイ、ホスティングを実現できるサービス

Amplify ライブラリ

ライブラリの中からカテゴリを選んで機能を実装できる

Amplify UIコンポーネント

JavaScript用のライブラリ
ログイン機能やチャットボット機能などが実装できる

CLIとConsoleの詳細は割愛します。
https://aws.amazon.com/jp/builders-flash/202106/awsgeek-amplify/?awsf.filter-name=*all

アプリ構築

Firebaseでのアプリ構築

  1. データベース:Cloud Firestore
  2. 認証:Firebase Authentication
  3. ストレージ:Cloud strage
  4. クラウド関数:Cloud Functions
  5. ホスティング:Hosting

Amplifyでのアプリ構築

  1. データベース:DynamoDB
  2. 認証:Amazon Cognito
  3. ストレージ:S3
  4. クラウド関数:API Gateway+Lamda
  5. ホスティング:S3+CloudFront

https://tech.gmogshd.com/try-aws-amplify-be/

FirebaseとAmplifyの比較

データベース

Firebase:Cloud Firestore
AWS:DynamoDB
二つともNoSQLタイプのデータベース
必要に応じて自動的にスケールアップ・ダウンするため、リソースの管理が不要

https://firebase.google.com/products/realtime-database?hl=ja
https://aws.amazon.com/jp/dynamodb/

認証

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) サービス

https://firebase.google.com/products/analytics?hl=ja
https://pages.awscloud.com/rs/112-TZM-766/images/A3-01.pdf
https://aws.amazon.com/jp/quicksight/

まとめ

両方に共通して言える点
コストが安い:料金体系は使用量ベース。
バックエンドやインフラのことを考えなくて済む。

Firebaseの長所

シンプルで開発者にとって使いやすい
全機能が最初から統合されているためわかりやすい
Googleのサービス、GCPとの連携がしやすい

Firebaseの欠点

NoSQLデータベースを使用するしかないため、クエリが複雑になる
NoSQLデータベースしか使えないので、大規模かつ複雑なアプリケーションにはあまり向かいない
https://www.geekly.co.jp/column/cat-technology/firebase-merit/

AWS Amplifyの長所

アプリを大規模にスケーリング可能
SQLサーバー使いたいなど多数のAWSシステムと連携可能

AWS Amplifyの欠点

豊富な機能とサービスが存在するため扱いが難しい

結局どちらのサービスを使ったらいいの?

・Firebaseを使ったほうが良い場合
アプリやプロトタイプの開発には、手軽で早く進められる
Flutterでモバイルアプリ作るのに向いている(Amplifyも4月からサポート済み)

・AWSを使ったほうが良い場合
大規模なプロジェクトや、AWSの他のサービスとの統合を考えている場合
ローコードでWebアプリやWebサイトを開発したい(Figmaとの連携機能)

https://qiita.com/KNR109/items/ab88c8f9a014fdccfba3

Discussion