初めてでも簡単!本番環境でも安心!GCPでアプリケーションを開発してみよう!
- Cloud
- Cloud Firestore
- Error Reporting
- GAE
Googleが提供しているGoogle Cloud Platformでは、簡単にアプリケーションを作成するためのサービスを数多く提供されています。この記事では、まだGCPを利用したことがない方向けに、アプリケーションを作成する手順をご紹介します。
目次
GCP概要をご紹介
Google Cloud Platform(GCP)は、Googleが提供しているクラウドサービスの総称です。YoutubeやGmailなど、Googleの各種サービスでも同じ基盤を利用しており、サービスレベルの高い環境を利用することができます。
作成するアプリケーションについての説明
今回作成するアプリケーションについて簡単に説明します。
GoogleのドキュメントにはスタートガイドというGCPをこれから使い始める方に向けた情報を集約したページがあります。今回はその中のサンプルプロジェクトとして掲載されているBookshelfアプリケーションの作成を通して、アプリケーション開発の手順をご紹介します。
アプリケーションの構成
アプリケーションはGoogle App Engine上にデプロイします。また、Google App Engineはインスタンスにデータを保存することはできません。アプリケーションのデータを永続的に保存するため、Firestoreを利用します。また、アップロードされた画像ファイルの保存にはオブジェクトの保存に適したCloud Storageを活用します。
今回のアプリケーション開発に利用するサービス
従来型のアプリケーション開発では、例えば3層アーキテクチャに代表されるように、各機能ごとにサーバーをデプロイし、そのサーバー上にアプリケーションを構成して連携するといった構成が一般的でした。
クラウド環境においてはサービスとして提供されている部分に関してはサーバーを自分で構成せずに機能だけを利用することも可能です。運用をできるだけクラウド事業者側にアウトソースすることで、開発時の工数や負荷を軽減することができます。今回のアプリケーション開発ではGCPで提供されている下記のサービスを組み合わせて実現します。
Google App Engine
Google App Engine(GAE)は、フルマネージド型のサーバーレスアプリケーションプラットフォームです。GAEではインフラ部分をGoogleが管理するため、運用の負荷を軽減し、開発に注力することができます。GAEではJavaやPython、PHP、Go、Node.js、Ruby、C#といった多数の開発言語をサポートしています。今回はPythonを利用してアプリケーションを実装します。
Firestore
FirestoreはNoSQLのドキュメントデータベースです。GAEではインスタンスの再起動によりデータは都度削除され、インスタンスに情報を保存することはできません。そのため、永続的なデータの保存をFirestoreで実装します。
【Firestoreについて詳しく知りたい方にオススメの記事】
【トップゲート主催】ゲーム業界様向けGCP活用のポイント〜Firebase / Firestore編〜
Cloud Storage
Cloud Storageは大容量データの長期保存に適したオブジェクトストレージです。地理的に冗長化されており、高い可用性やセキュリティが担保されています。今回は、アプリケーションで利用する画像データの配置先として利用します。
Cloud Logging
Cloud Loggingは、様々なソースから取得したログデータを保存し、リアルタイムで分析することのできるスケーラブルなログソリューションです。今回はログをモニタリングし、イベントを確認します。
Error Reporting
Error Reportingは、アプリケーションで発生したエラーを監視し、分析と集計を行います。サービスをリアルタイムで常時監視することで、エラーの発生時には迅速にアラートを受信することが可能です。
アプリケーションの作成
ではここからは実際にアプリケーションを作成する手順と、簡単なポイントを解説していきます。
1. Googleアカウントの作成
GCPを利用するには、Googleアカウントを作成する必要があります。もし利用できるアカウントをお持ちでない場合にはこちらから作成してください。
2. GCPコンソールへのログイン
先程作成したアカウントでGCPのコンソールへログインします。GCPを初めて利用する場合、無料トライアルを利用することができます。是非登録して無料枠を活用しましょう。
3. プロジェクトの作成
アプリケーションをデプロイする前に、まずはプロジェクトを作成します。プロジェクトとはGCP内でリソースやユーザーの管理に使用する単位のことで、全てのサービスはプロジェクトと紐付けられます。
コンソールの画面上部からプロジェクト選択画面を開きます。
「新しいプロジェクト」から任意の名前を入力し、プロジェクトを作成します。この時プロジェクトIDを設定することができますが、グローバルで一意である必要があります。今回はBookshelfというプロジェクト名を設定しました。
4. Firestoreを作成する
事前に周辺環境を整備するため、データベースであるFirestoreを作成しておきます。
コンソールのナビゲーションメニューから「Firestore」->「データ」を選択します。
Cloud Firestore モードの選択画面で、「ネイティブモードを選択」をクリックします。
データベースのロケーションを選択します。ここで選択したロケーションはプロジェクトのデフォルトのロケーションとしても利用され、プロジェクト内のApp EngineやCloud Storageでも同じロケーションが適用されます。ここではasia-northeast1(Tokyo)を選択し、「データベースを作成」をクリックします。
5. 各サービスのAPIを有効化する
各サービスをAPI経由で実行するため、それぞれのAPIを有効化します。APIの有効化は、ナビゲーションメニューの「APIとサービス」->「ライブラリ」から行うことができます。
検索窓から有効化したいサービスを検索します。
今回は下記の4つのサービスを有効化する必要があります。
- App Engine Admin API
- Cloud Storage API
- Cloud Logging API
- Stackdriver Error Reporting API
有効化されていない場合には「有効化」をクリックして利用できるようにしておきます。
5. Cloud Shellを起動する
Cloud Shellを起動し、アプリケーションのソースコードを開きます。Cloud ShellはGCPで提供されているクラウドベースのインタラクティブシェル環境です。ブラウザで実行することができ、アプリケーションのWeb IDEとして利用することができます。
Cloud Shellを起動するには、コンソール右上のボタンをクリックします。
Cloud Shellのターミナルで下記コマンドを入力し、GitHubからアプリケーションのソースコードを開きます。
cloudshell_open --repo_url "https://github.com/GoogleCloudPlatform/getting-started-python" --dir "bookshelf" --page "editor" --git_branch "master"
また、gcloudコマンドを利用し、先程作成したプロジェクトを使用します。
gcloud config set project [プロジェクトID]
6. アプリケーションを実行する
Cloud Shellからアプリケーションを実行します。まずはpipで依存関係をインストールします。
pip3 install -r requirements.txt --user
次に、Gunicorn HTTP Serverをインストールします。
pip3 install gunicorn --user
インストールが完了したらGunicorn HTTP Serverを起動します。下記コマンドを実行します。
~/.local/bin/gunicorn -b :8080 main:app
ブラウザ内のCloud Shell画面から「Webでプレビュー」をクリックし、「ポート8080でプレビュー」を選択します。
下記のようにアプリケーションが正常に実行されていることを確認します。
正常な稼働が確認できたら、アプリケーションの実行はCtrl+Cを入力し、一旦停止しておきましょう。
7. アプリをApp Engineにデプロイする
作成したアプリケーションをApp Engine上にデプロイします。アプリケーションデプロイ時の構成については「app.yaml」ファイルに記述されています。Cloud Shellのエディタで確認しましょう。
下記のコマンドを入力します。
gcloud app deploy
デプロイするアプリケーション先を確認し、Yを入力します。
しばらく待つとアプリケーションがデプロイされます。
アプリケーションのURLにアクセスし、実行されていることを確認します。URLは先程の画面に表示されている通り、「https://[プロジェクトID].[リージョンID].r.appspot.com」として設定されています。
また、下記コマンドを入力することでもWebブラウザからアプリケーションを確認することができます。
gcloud app browse
8. Firestoreでデータを永続化する
前述したとおりApp Engineではデータをインスタンスに保存することができないため、各インスタンスからFirestoreにデータベースとして読み書きを行うことでデータを永続化しています。
Firestoreに対する処理は、「Firestore.py」に記述されています。Cloud Shellのエディタで確認することが可能です。
Webブラウザでアプリケーションの画面から「Add Book」をクリックします。
書籍の情報を入力し、「Save」を選択します。
書籍のデータが保存されます。
データがFirestoreに保存されていることを確認します。コンソールのナビゲーションメニューから「Firestore」->「データ」を開きます。
先程入力した書籍のデータがFirestoreに保存されています。
9. 書籍の表紙データをCloud Storageに保存する
書籍のデータを登録することができました。次に、表紙の画像データを登録することを考えます。Firestoreはドキュメントデータベースのため、画像の保存には適していません。そのため、Cloud Storageと連携し、イメージのアップロードを実施します。まずは保存先であるバケットを作成します。バケットは画像を格納する単位となる箱のようなものです。
コンソールのナビゲーションメニューから「Storage」->「ブラウザ」を選択します。
「バケットを作成」をクリックします。
ここではバケット名を「[プロジェクトID]_bucket」として作成します。
データのロケーションを設定します。Cloud Storageではデータの分散方式をRegion、Dual-region、Multi-regionの3種類の中から選択することができます。ここではRegionのasia-northeast1(東京)を選択します。
データのストレージクラスとして「Standard」を、アクセス制御として「きめ細かい管理」を選択し、最後に「作成」をクリックします。
アプリケーションから画像を参照できるように権限設定を行います。作成したバケットの詳細画面で、「権限」タブを選択します。
新しいメンバーとして「allUsers 」を追加します。ロールは「Cloud Storageオブジェクト閲覧者」等に設定します。
この設定によりこのバケットに保存されているデータは一般公開され、URLにアクセスすれば読み込むことができるようになります。実際の運用ではもう少し権限を細かく絞った方が良いでしょう。
バケットが作成できたらアプリケーションの画面に戻り、書籍の詳細画面で「Edit Book」を選択します。
「Cover Image」から任意の画像を選択し、「Save」をクリックして保存します。
画像イメージを保存することができました。
10. Cloud Loggingによるログ監視
アプリケーションのログを確認してみます。
ナビゲーションメニューの「ロギング」->「ログビューア」を選択します。
アプリケーションから出力されたログを確認することができます。プルダウンを展開することで、各種ログの詳細を確認することも可能です。細かい条件による検索やログのエクスポート、簡単な分析を実施することができます。
11. Error Reportingによるエラー管理
また、Error Reportingの機能を利用することで、エラーや例外を確認することができます。ナビゲーションメニューから「Error Reporting」を選択します。
アプリケーションで発生したエラーを確認することができます。また、エラーの発生時に通知を行う設定をすることも可能です。もしアプリケーションで問題が発生した場合、上記のCloud LoggingとError Reportingを利用し、問題解決を実施します。
まとめ
この記事ではアプリケーションの開発方法とその管理方法について簡単にご紹介しました。クラウド環境においては、各サービスをデプロイし、API経由でそのデータをやり取りすることによって1つのアプリケーションを実装します。
また、ログ監視やエラーの処理といった運用に関してもサービス利用して実施することで、アプリケーション実装における負荷を軽減することが可能です。従来の方法と比較してかなり簡単にアプリケーションを構築することが可能ですので、ぜひご利用を検討してみてはいかがでしょうか?
弊社トップゲートでは、Google Cloud (GCP) 利用料3%OFFや支払代行手数料無料、請求書払い可能などGoogle Cloud (GCP)をお得に便利に利用できます。さらに専門的な知見を活かし、
- Google Cloud (GCP)支払い代行
- システム構築からアプリケーション開発
- Google Cloud (GCP)運用サポート
- Google Cloud (GCP)に関する技術サポート、コンサルティング
など幅広くあなたのビジネスを加速させるためにサポートをワンストップで対応することが可能です。
Google Workspace(旧G Suite)に関しても、実績に裏付けられた技術力やさまざまな導入支援実績があります。あなたの状況に最適な利用方法の提案から運用のサポートまでのあなたに寄り添ったサポートを実現します!
Google Cloud (GCP)、またはGoogle Workspace(旧G Suite)の導入をご検討をされている方はお気軽にお問い合わせください。
弊社トップゲートでは、 「TOPGATE Broadcaster」と称してウェビナーを定期開催しております。短時間でわかりやすく教えてくれるとご好評いただいております。ぜひ、ご興味のあるウェビナーに参加お申し込みください!
メール登録者数3万件!TOPGATE MAGAZINE大好評配信中!
Google Cloud(GCP)、Google Workspace(旧G Suite) 、TOPGATEの最新情報が満載!