apeescape2.com
  • メイン
  • ヒントとツール
  • バックエンド
  • 製品ライフサイクル
  • プロセスとツール
技術

Firebaseをサーバーレス化–モバイルおよびWebアプリケーションを簡単に

モバイルおよびWebアプリケーションには通常、バックエンドサーバーが必要です。 Webアプリケーションでは、コンテンツを配信するためにWebサーバーが必要です。アプリケーションは、ユーザープロファイルと画像やビデオなどのメディアも保存する必要があります。アプリケーションとサーバー間の通信は、多くの場合、API(通常はREST)を使用して行われます。

アプリケーションはさまざまな言語でコーディングされています。 iOSアプリケーションはSwiftまたはObjective-Cで記述されています。 AndroidアプリケーションはJavaまたはKotlinで記述されています。 Webアプリケーションは、HTML、CSS、JavaScript、および多くの場合、AngularやReactなどの複雑なフレームワークで記述されています。フロントエンド開発者は、関連する言語とそれに関連する開発ツールを知っている必要があります。

バックエンドサーバーは、Go、Java、PHP、Pythonなどのさまざまな言語で記述されています。これらの各言語には、複雑なアプリケーションの作成を容易にする独自のライブラリスイートがあります。



ほとんどの開発者は、自分自身をフロントエンドまたはバックエンドの開発者と見なしています。両方の役割に精通しているフルスタック開発者は比較的まれです。

バックエンドサーバーの実行と保守には、独自の課題があります。サーバーを構築、更新、およびバックアップする必要があります。偶発的または悪意のあるデータの損失や機密データへのアクセスを防ぐために、サーバーも保護する必要があります。さらに、サーバーに接続できるように、サーバーにはホスト名とIPアドレスを割り当てる必要があります。

Firebaseとは何ですか?

Firebase Googleが買収したモバイルメッセージングアーキテクチャとして始まりました。それ以来、相互運用する25を超えるコンポーネントのスイートに進化しました。 Google Cloud Platform 。

Firebaseはソフトウェア開発キット(SDK)で構成されており、モバイル開発者とWeb開発者がクラウド機能に簡単、安全、確実にアクセスできるようにします。これらは、ネットワーク接続の低下を自動的に補正します。コンポーネントを有効化、管理、保護するためのFirebaseWebコンソールがあります。より詳細に使用するためのコマンドラインツールとRESTAPIもあります。

一部のFirebaseコンポーネントは、他のコンポーネントよりもよく知られています。コンポーネント間の依存関係はほとんどないため、機能を段階的に採用できます。 Firebaseの認証と分析が最も広く使用されています。

Firebaseは、モバイルおよびWebフロントエンド開発者がバックエンドサーバーを必要とせずに完全なアプリケーションを開発できるようにするプラットフォームに進化しました。最近の機能強化により、サーバーレスソリューションが大幅に促進され、クラウド仮想マシンサーバーソリューションの実行可能でスケーラブルで費用効果の高い代替手段が提供されます。

Firebaseの料金と請求プラン

Sparkと呼ばれる基本的なFirebase課金プランは無料です。クラウドリソースの使用には制限がありますが、かなり寛大です。リーズナブルなサイズのアプリケーションを無料で実行できます。

Sparkプランでは、最大1GBのコンテンツと10GB /月未満の転送を含むWebサイトをホストできます。 Firestoreは、最大1GBのデータと最大10GB /月のネットワークトラフィックを許可します。クラウドストレージの制限は、最大5GBのデータと最大1GB /日のダウンロードです。

アプリケーションがより多くのリソースを必要とする場合は、従量課金制などの有料課金プランが必要です。 Sparkプランの無料制限は引き続き適用されます。請求可能な料金はかなり安いです。価格はで見つけることができます Firebaseの価格ページ 。

クラウドで実行される仮想マシンは、使用されていない場合でも、実行中に料金が発生します。 Firebaseサーバーレスソリューションはゼロにスケーリングします。つまり、リソースは使用中のみ効果的に実行され、使用されていないときは料金が発生しません。これは、ホリデーレンタルなどの季節限定ビジネスやコンサートなどの定期的なイベントのアプリケーションに最適です。多くの活動があり、その後数か月間活動がありません。

Firebaseを設定する方法

認証にはメールアカウントが必要です。 Googleメールアカウントをお勧めします。それらはで作成することができます https://mail.google.com 。

Google Cloud Platform(GCP)アカウントも必要です。無料トライアルが利用可能です ここに 。これにより、1年間利用できる300ドルのクレジットが提供されます。身分証明書としてクレジットカードが必要です。 Googleは$ 1を請求し、それを返金する場合があります。請求が有効で、請求可能なリソースが使用されている場合、クレジットカードから毎月引き落とされます。請求の仲介役を務めるGoogleプロバイダー企業もあります。あなたはクラウドの使用に対してプロバイダーに支払います、そして彼らはグーグルに支払います。彼らは独自の請求プランを持っており、無料トライアルを提供する場合があります。

使用状況を監視するには、クラウドコンソールの課金セクションを頻繁に監視することが重要です。ストレージなどのリソースを不要なときにアクティブに保つのは簡単であり、時間の経過とともにかなりのコストがかかる可能性があります。

FirebaseプロジェクトはGCPプロジェクトでもあります。 GCPプロジェクトを作成してFirebaseにインポートするか、Firebaseプロジェクトを作成してGCPプロジェクトを作成することができます。 Firebaseコンソールは ここに 。

アプリケーションの種類ごとに異なる設定が必要です。主なものはAndroid、iOS、およびWebアプリケーションです。セットアップ手順は公式にあります Firebaseガイド 。

一部の操作には、Firebaseコマンドラインインターフェース(CLI)ツールが必要です。これらにはNode.jsが必要ですおよびnpmツールがインストールされています。 macOSまたはLinuxで実行している場合、npmコマンドはsudoで実行する必要があります。

sudo npm install -g firebase-tools

認証と承認

Firebase認証は、おそらく最も広く使用されているFirebaseコンポーネントです。ユーザーは、いくつかの認証メカニズムから1つ以上を選択できます。これらは、メールアドレスとパスワード、電話番号、およびフェデレーションIDプロバイダーであるGoogle、Facebook、Twitter、およびGitHubです。任意の数の認証メカニズムを有効にできます。

Firebase UIは、使用するメカニズムの入力をユーザーに求めます。

Firebase認証

Firebaseは、クライアント側の数行のコードから呼び出すことができる認証用のユーザーインターフェイスを提供します。認証を手動で行うためのAPIもあります。認証が成功すると、バックエンド検証に使用できるIDトークンが生成されます。

APIを使用すると、管理ユーザーはプログラムでユーザーを管理できます。操作は次のとおりです。

  • ユーザーの作成、更新、および削除
  • メールアドレスや電話番号などの検索条件でユーザーを検索します
  • アカウント作成日時や最終ログイン日時などのアクセス情報
  • 既存のワークフローを使用せずに、電子メールアドレスと電話番号を検証します

ほとんどのモバイルおよびWebアプリケーションは、多数のユーザーがアプリケーションにサインインすることを望んでいます。たとえば、Google Mailアカウントを持っている人は誰でも、Google認証を許可する任意のアプリケーションに対して自分自身を認証できます。アプリケーションへのアクセスを特定のユーザーに制限するには、承認の形式が必要です。これは、電子メールアドレスとアクセスロール間の関連付けをデータストレージに保存することで簡単に実行できます。認証が成功すると、電子メールアドレスがデータストレージで検索されます。ユーザーが正しい役割で存在する場合、アクセスが許可されます。それ以外の場合、ユーザーは強制的にログアウトされます。

Firebaseホスティング

Firebaseホスティングを使用すると、JavaScriptを含む静的なウェブコンテンツを、ウェブサーバーを必要とせずにクラウドでホストできます。コンテンツは、グローバルコンテンツ配信ネットワーク(CDN)のエッジにキャッシュされます。これにより、世界中のどこからでもコンテンツにすばやくアクセスできます。

1つ以上のウェブサイトをFirebaseコンソールのFirebaseプロジェクトのホスティングセクションに追加することでホストできます。コンテンツはSSLを介して配信され、フォームの2つのURLが与えられます。 https://site-name.web.app そして https://site-name.firebaseapp.com 、ここでsite-nameプロジェクト名またはユーザー指定のサイト名のいずれかです。

ドメインのDNSレコードを変更できれば、独自のドメイン名からサイトをホストするのは非常に簡単です。 FirebaseConsoleのサイトにドメイン名を追加します。次に、DNS TXTレコードが提供されます。このレコードをドメインのDNSに追加して、ドメインを所有していることをGoogleに証明する必要があります。 TXTレコードが表示されると、サイトのDNSAレコードを取得できます。 SSL証明書がサイトに自動的にプロビジョニングされます。証明書がプロビジョニングされると、サイトはグローバルに利用可能になります。原則として、DNSの更新と証明書のプロビジョニングには数時間かかる場合があります。実際には、プロセスは20分で完了することができます。

ホスティングにコンテンツを追加するには、まず、サイトのディレクトリを作成し、cdコマンドラインからそれに。次に、Firebaseにログインして、プロジェクトディレクトリを初期化します。

firebase login firebase init

プロジェクトと必要なクライアントサービスを選択するように求められます。サービスはいつでも後で追加でき、この段階で選択する必要はありません。

firebase.jsonというファイルを作成します。このファイルは、Webサイトのルートディレクトリと除外するファイルを定義します。 .gitignoreも必要になりますファイルをバージョン管理から除外するファイル。

{ 'hosting': { 'public': 'public', 'ignore': [ 'firebase.json', '**/.*', '**/node_modules/**' ] } }

次に、静的コンテンツをパブリックディレクトリにコピーします。最後に、サイトをクラウドにデプロイします。

firebase deploy

Webコンテンツを変更するには、コンテンツファイルを変更し、deployコマンドを発行するだけです。各デプロイは、FirebaseConsoleにバージョンとして表示されます。シングルクリックで以前のバージョンにロールバックできます。

Firebase Hostingは、URIをファイル、Cloud Functions、CloudRunに書き換えることもできます。これらのサービスにドメインを割り当てる必要がないため、これにより作業が大幅に簡素化されます。リライトは、firebase.jsonのホスティングセクションにリライトセクションを追加することで定義されます。サービスが存在しない場合、ホスティング展開は失敗します。

{ 'hosting': { 'public': 'public', 'rewrites': [ { 'source': '/xxx', 'destination': '/profile.html' }, { 'source': '/yyy', 'function': 'profile' }, { 'source': '/api{,/**}', 'run': { 'serviceId': 'cloud-api', 'region': 'europe-west1' } } ] } }

データストレージ

Firebaseは、クラウドベースのデータストレージにアクセスするためのクライアントAPIを提供します。ストレージには次の3つのタイプがあります。

  • リアルタイムデータベース
  • Cloud Firestore
  • クラウドストレージ

これにより、モバイルクライアントとWebクライアントは、サーバーを必要とせずにデータを保存および取得できます。

リアルタイムデータベース

Realtime Databaseは、クラウドでホストされるNoSQLデータベースです。リアルタイムデータベースのデータは、接続されているすべてのデバイスにリアルタイムで自動的に同期されます。 Android、iOS、およびWebへのクロスプラットフォームで動作します。データはJSONツリー構造として保存されます。データへの読み取りおよび書き込みアクセスを制御するようにセキュリティルールを設定できます。

各デバイスは、データベースのローカルコピーを保持します。これは、ネットワークに接続されていないときにデータが利用可能であることを意味します。再接続時に、データのローカルコピーとクラウドベースのコピーが同期されます。

データは、リスナーを使用してアプリケーションによって読み取られます。リスナーは、JSONツリーのノードをリッスンします。コンソールまたは別のユーザーによってデータが変更されるたびに、リスナーコールバックが新しいデータ値で呼び出されます。 RealtimeDatabaseはクエリもサポートしています。各クエリは、ノードとそのすべての子ノードを返します。

デフォルトでは、セキュリティルールはデータへのアクセスを許可していません。ルールは、グローバルに追加することも、JSONオブジェクトの個々のノードに追加することもできます。セキュリティルールは、データへの読み取りおよび書き込みアクセスを制御し、検証を実行できます。

リアルタイムデータベースは、深くネストされたデータ構造を必要としない小さなデータに最適です。無料の制限は1GBのデータです。

Cloud Firestore

Cloud Firestoreは、RealtimeDatabaseの代わりと見なされています。リアルタイムデータベースの機能を拡張します。データはJSONツリーではなく、ドキュメントの階層コレクションにあります。各ドキュメントは、キーと値のペアのセットとオプションのサブドキュメントで構成されます。クエリを使用すると、より複雑なフィルタリングと並べ替えが可能になり、完全なドキュメントのみが返されます。クエリはサブドキュメントを返しません。

CloudFirestoreはまもなくCloudDatastoreに取って代わります。データストアモードまたはネイティブモードで実行できます。すべてのデータストアアプリケーションは自動的にCloudFirestoreに移行されます。

Cloud Firestoreは、比較的小さなデータに最適です。深くネストされたデータ構造を持つことができます。無料の制限は1GBのデータです。

クラウドストレージ

クラウドストレージは、画像やビデオクリップなどのファイルを保存するためのものです。モバイルクライアントとウェブクライアントは、Firebaseを使用して、バックエンドサーバーを必要とせずに、クラウドとの間でファイルを直接アップロードおよびダウンロードできます。無料の制限は5GBのデータです。

クラウド機能

Cloud Functionsは、サーバーレスアプリケーションを作成するための重要なテクノロジーです。クラウド関数は、JavaScript、TypeScript、Python、またはGoで記述でき、Googleクラウドに直接デプロイされます。関数は、HTTPリクエスト、またはクラウドストレージへの書き込みなどのクラウド内のイベントによってトリガーされます。

クラウド関数は一度に1つのリクエストしか処理できませんが、クラウドは関数を複製することで関数を自動的にスケーリングします。 Pythonで記述されたCloudFunctionは、Flaskライブラリを使用してHTTPリクエストを処理します。この関数は、リクエストオブジェクトをパラメータとして受け取り、レスポンスの本文を返します。

単純なPythonCloud Functionには作業ディレクトリが必要であり、エントリポイントはファイルmain.pyにあります。

def simple_cloud_function(request): return 'It worked'

依存関係はpipによって管理され、requirements.txtというファイルに入ります。

Flask==1.0.2

関数はgcloudを使用してデプロイされますコマンドラインツール。関数名、言語、およびトリガーを指定します。

gcloud functions deploy simple_cloud_function --runtime python37 --trigger-http

関数のURLはデプロイメント時に表示され、describeコマンドを実行することで見つけることができます。

gcloud functions describe simple_cloud_function Url: https://europe-west1-project-id.cloudfunctions.net/simplecloud_function

Cloud Functionsは、GoogleCloudおよびFirebaseAPIを呼び出して、バックエンド機能を提供できます。これらは、実行の開始と実行時間に関するログ情報を提供します。追加のロギングは簡単に追加できます。ログは、Stackdriver LoggingUIおよびgcloudを介して表示できます。コマンドラインツール。

gcloud functions logs read simple_cloud_function

関数は、Google CloudConsoleで表示および削除できます。

Google Cloud Console:機能

Cloud Functionsは、比較的まれにしか発生しない操作に最適です。使用例は、画像がCloudStorageにアップロードされるときにサムネイルを作成することです。無料の制限は、1か月あたり125,000回の呼び出しです。

クラウドラン

Cloud Runは最近、サーバーレスアプリケーションを大幅に促進する機能が追加されました。これにより、複雑なインフラストラクチャのセットアップを行うことなく、Dockerコンテナをクラウドで実行できます。 Kubernetes上に構築されたKnativeランタイムを使用するマネージドモードで実行できます。また、Kubernetes上に構築されているAnthosでも実行できますが、コンテナーをクラウド間で実行したり、独自のデータセンターで実行したりすることもできます。 Kubernetesクラスターはすべて自動的に実行されるため、セットアップして管理する必要はありません。

Dockerイメージに組み込むことができるすべてのアプリケーションは、CloudRunによって管理できます。需要に基づいてコンテナの数を自動的にスケーリングします。また、サービスが使用されていない場合はゼロにスケールダウンします。未使用のサービスは無料です。

Dockerコンテナーは、HTTP要求に応答するために、Webサーバーを実行する必要があります。 PythonサービスはFlaskを使用します。エントリポイントはapp.pyにあります。

ウェブサイトからメタマスクに接続する方法
from flask import Flask, request app = Flask(__name__) @app.route(’/api/profile’) def profile(): page = ’’’ Page content ’’’ return page

アプリケーションにはDockerfileが必要ですイメージを作成します。

FROM python ENV APP_HOME /app WORKDIR $APP_HOME COPY . . ENV PORT 8080 RUN pip install Flask gunicorn firebase-admin CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 app:app

Cloud Runコンテナーは、クラウドに直接デプロイされます。

gcloud run deploy --image=image_name --platform=managed --region=europe-west1 --allow-unauthenticated

サービス名、プラットフォーム、リージョン、または認証されていないものを許可するかどうかがプロジェクト構成で定義されていないか、コマンドラインで指定されていない場合は、プロンプトが表示されます。デプロイが完了すると、サービスのURLが表示されます。 URLは、gcloudコマンドを使用して取得することもできます。

gcloud run services list SERVICE REGION URL LAST DEPLOYED BY LAST DEPLOYED AT cloud-api europe-west1 https://cloud-api-h42ifbxkyq-ew.a.run.app [email protected] 2020-02-05T10:53:30.006Z

URLには、管理が難しい乱数が含まれています。ここで、FirebaseHostingの書き換えルールが最も役立ちます。

サービスは、Google CloudConsoleで表示および削除できます。

Google Cloud Console:サービス

Cloud Runは、RESTAPIのホスティングに最適です。毎月の空き制限は、180,000 CPU秒、360,000 GB秒のメモリ、200万リクエスト、1GBのネットワーク出力です。無料のネットワーク出力制限は、サービスが北米地域に展開されている場合にのみ適用されます。

認証

デフォルトでは、CloudFunctionsとCloudRunコンテナーは公開されており、インターネット上の誰でもアクセスできます。クラウドコンソールでIAMルールを使用すると、サービスをプロジェクトメンバー、Googleグループ、および個々のメールアドレスに制限できます。

制限が設けられている場合、不正アクセスは禁止されています。アクセスを有効にするには、IDトークンをリクエストヘッダーに追加する必要があります。 IDトークンは、gcloudコマンドを使用するか、Firebase認証プロセス中に取得できます。

gcloud auth print-identity-token

Authorizationヘッダーが必要です。

Authorization: Bearer id-token

概要

Google Cloud PlatformとFirebaseは、モバイルアプリケーションとウェブアプリケーションの開発を大幅に促進するさまざまな製品を提供します。クライアントがクラウド機能に直接アクセスできるようにするか、CloudFunctionsまたはCloudRunを使用してバックエンドコードをクラウドにデプロイすることで、バックエンドサーバーの必要性を完全に排除できます。

既存のアプリケーションは、サーバーレスに段階的に移行できます。実際、テクノロジーの進化の仕方は、従来の仮想マシンベースのサーバーソリューションが不要になることを意味する可能性があります。

基本を理解する

Firebaseを使用しているアプリは何ですか?

ユーザー認証、データストレージ、メッセージング、および使用統計を必要とするアプリ。

Firebaseはモバイルアプリ専用ですか?

いいえ、Webアプリや管理アプリにも使用できます。

Firebaseの利点は何ですか?

多くのアプリが必要とする、すぐに使用できる使いやすい機能を提供します。

Firebaseの目的は何ですか?

これは、モバイルおよびWebフロントエンド開発者がサーバーを必要とせずにクラウドベースのサーバー機能にアクセスできるように設計されています。

Firebaseはいつ使用する必要がありますか?

新しいアプリを開発したり、既存のアプリを拡張したりする場合は、Firebaseの使用を検討してください。

キャッシュを使用してWebファームでASP.NETアプリのパフォーマンスを向上させる方法

バックエンド

キャッシュを使用してWebファームでASP.NETアプリのパフォーマンスを向上させる方法
Linuxカーネル開発の25年を祝う

Linuxカーネル開発の25年を祝う

バックエンド

人気の投稿
同じマシンでのMySQLマスタースレーブレプリケーション
同じマシンでのMySQLマスタースレーブレプリケーション
TypeScript、依存性注入、Discordボットの操作
TypeScript、依存性注入、Discordボットの操作
3つの医療技術革新:より良い結果とより低いコストの推進
3つの医療技術革新:より良い結果とより低いコストの推進
Calabashを使用したAndroidおよびiOSUIテスト
Calabashを使用したAndroidおよびiOSUIテスト
Node.js / TypeScript REST APIの構築、パート2:モデル、ミドルウェア、およびサービス
Node.js / TypeScript REST APIの構築、パート2:モデル、ミドルウェア、およびサービス
 
最高のデータ視覚化ツールの完全な概要
最高のデータ視覚化ツールの完全な概要
機械学習理論とその応用の紹介:例を含むビジュアルチュートリアル
機械学習理論とその応用の紹介:例を含むビジュアルチュートリアル
AngularJS開発者が犯す最も一般的な18の間違い
AngularJS開発者が犯す最も一般的な18の間違い
GoogleスプレッドシートとAppsScriptの操作
GoogleスプレッドシートとAppsScriptの操作
自然言語処理アプリを構築する方法
自然言語処理アプリを構築する方法
人気の投稿
  • 不和APIの使い方
  • 請負業者のレートを計算する方法
  • c ++コーディングプログラム
  • ゲームのUIとは
  • 迅速vsObjectiveC 2017
  • 冷戦中に開発された新技術は、あなたに何を可能にしますか?
カテゴリー
Kpiと分析 アジャイルタレント 人とチーム 技術 ライフスタイル リモートの台頭 エンジニアリング管理 製品の担当者とチーム バックエンド 収益性と効率性

© 2021 | 全著作権所有

apeescape2.com