近年、サーバレスのシステムが注目を集めています。サーバレスのシステムであれば、システムのメンテナンスを考慮する必要がありません。システムへの負荷が大きくなってもスケールアップやスケールアウトを心配することもありません。
Cloud Functions
本ブログでも以前にGoogle Cloud Platform (GCP) の
Cloud Functionsを紹介しました。このときは簡潔に紹介するために、関数の作成時に利用するソースコードを直接テキストボックスに書き込む方法で紹介しましたが、実際の開発となるといちいちコピペするの運用だと大変ですし、ミスを起こす可能性もあります。
では実際の開発スタイルとしてはどのような方法が良いのでしょうか。私が実際に利用して最も良いと思ったのは、
Cloud Source Repositoriesを利用する方法です。
Cloud Source Repositories
最近新しくなったCloud Source Repositoriesも、
本ブログで紹介したことがあります。私もコード検索機能は刷新されて以来、最近では最も愛用しているGitホスティングサービスです。
Cloud Functionsでは、Cloud Source Repositoriesにあるソースコードを簡単に読み込むことができます。GitホスティングサービスはGitHubやBitbucketを利用しているという方もご心配ありません。Cloud Source Repositoriesでは、GitHubやBitbucketからの自動ミラーリングに対応しているので、無理に利用しているGitホスティングサービスをCloud Source Repositoriesに乗り換える必要はありません。GitHubやBitbucketを利用したまま、便利にCloud Functionsとの連携ができます。(GitHubやBitbucketからの自動ミラーリングについては、本記事と趣旨が異なるため割愛しますが、設定としては簡単ですので、ぜひお試しください。)
Cloud FunctionsとCloud Source Repositoriesの連携手順
それではCloud FunctionsからCloud Source Repositoriesの関数を呼び出す手順を見てみましょう。
まずCloud Source Repositoriesにリポジトリを作成し、関数を用意します。今回紹介する手順では「RandInt」リポジトリを作成しました。ブランチは「master」を利用します。そしてリポジトリのルートディレクトリに「main.py」を作成し、「randint」関数を用意しました。(このrandint関数は
前回にCloud Functionsを紹介したときの内容と同じです。)
これでCloud Source Repositoriesの準備はOKです。
次はCloud Functionsより関数の作成を行いましょう。関数の作成手順は、
以前にCloud Functionsを紹介したときと基本的に同じですが、「ソースコード」の選択項目が異なります。次のように指定を行ってください。
- ソースコード … Cloud Source Repositories
- ランタイム … Python 3.7 (今回のソースコードがPythonであるため)
- リポジトリ … RandInt
- ブランチ/タグ … ブランチ
- ブランチ名 … master
- ソースコードを含むディレクトリ … /
- 実行する関数 … randint
設定が完了したら「保存」ボタンをクリックします。
しばらく待つとCloud Functionsの関数作成が終わりますので、動作を確認しましょう。作成が完了した後に関数のソースを確認すると、Cloud Source Repositoriesから関数が作成されたことがわかります。
では関数を実行してみましょう。トリガーに「HTTP」を選択していたので、指定のURLにアクセスすると正常にレスポンスが返ってきました。
ソースコードを変更したときは、関数の編集を選択し再度「保存」ボタンをクリックすることで、関数が更新されます。
まとめ
Cloud FunctionsとCloud Source Repositoriesの連携はいかがでしたでしょうか。開発の運用としては、ソースコードをGitにPushして、関数を作成するだけであり、ソースコードの更新時も非常に楽です。サーバレスアーキテクチャを利用するときは、ぜひCloud FunctionsとCloud Source Repositoriesのペアを検討してください。