【ITニュース解説】Part-45: Cloud Functions with HTTPS in GCP
2025年09月12日に「Dev.to」が公開したITニュース「Part-45: Cloud Functions with HTTPS in GCP」について初心者にもわかりやすく解説しています。
ITニュース概要
Google Cloud FunctionsでHTTPSトリガーを設定し、ウェブページを表示する関数を作成・デプロイ。動作確認後、関数の新バージョンを展開し、Cloud Runで旧バージョンと新バージョンへのアクセスを振り分ける方法を紹介する。
ITニュース解説
この解説では、Google Cloud Platform(GCP)の主要なサービスであるCloud FunctionsとCloud Runを組み合わせ、Webアプリケーションを効率的に開発し、運用していく具体的な手順と概念を説明する。システムエンジニアを目指す上で、クラウド環境でのアプリケーション開発、特にサーバーレスアーキテクチャの理解は非常に重要だ。
まず、Cloud Functionsは「サーバーレス」という考え方を実現するサービスの一つである。通常、Webアプリケーションを公開するには、サーバーとなるコンピュータを用意し、その上でプログラムを常に動かしておく必要がある。しかし、Cloud Functionsを使えば、開発者はサーバーの準備や管理、運用といった手間から解放され、実際に実行したいコードだけを記述すればよい。このコードは、HTTPリクエストの受信やデータベースの変更など、特定のイベントが発生したときにだけ実行されるため、利用した分だけ料金が発生し、使われていない間はコストがかからないという大きなメリットがある。また、アクセスが増えても自動的に処理能力を増やしてくれる(スケーリング)ため、急な負荷にも対応しやすい。
今回の記事では、まずHTTPトリガーを使ってCloud Functionを作成する。HTTPトリガーとは、Webブラウザからのアクセスのように、HTTP/HTTPSプロトコルを使ったリクエストを受け取ったことをきっかけにコードが実行される設定のことだ。関数の設定画面では、「環境」として「2nd gen(第2世代)」が選ばれている。これは、Cloud Functionsの新しい世代であり、内部的にCloud Runという別のサービスが利用されていることを意味する。Cloud Runは、コンテナという形でパッケージ化されたアプリケーションを動かすためのマネージドサービスで、Cloud Functionsの機能をより強力にし、高度な運用を可能にしている。関数の名前や、サーバーが物理的に配置される「リージョン」(地域)を指定した後、「Authentication: Allow unauthenticated invocations」という設定を行う。これは、特別な認証なしに、誰でもこの関数にアクセスできるようにするという意味で、公開されるWebサイトを作成する際に利用される一般的な設定である。
次に、この関数の「コード」を記述する。ここではNode.jsというJavaScriptの実行環境が使われている。提供されたコードは非常にシンプルで、Webブラウザからアクセスがあった際に、簡単なHTMLページを生成して応答する内容となっている。このHTMLページには「Welcome to Cloud Functions Demo」と「Application Version: V1」というメッセージが表示される。コードの記述が終わったら、「Deploy」(デプロイ)ボタンをクリックして、このWebアプリケーションをGCP上に公開する。
デプロイが完了すると、Cloud Functionsは自動的にWebブラウザからアクセス可能なURLを生成する。このURLにアクセスすると、先ほど記述したHTMLページが表示され、アプリケーションがインターネット上で正常に動作していることを確認できる。このとき、実際にはCloud Runがこのアプリケーションの実行環境を提供している。Cloud Runの管理画面に移動すると、作成した関数が「サービス」として登録されており、「Revisions」(リビジョン)というタブで、現在稼働しているアプリケーションのバージョン(今回はV1)の詳細を確認できる。Cloud Runはこのリビジョンという機能を使って、アプリケーションの複数のバージョンを管理することができるため、これが次のステップで非常に重要になる。
アプリケーションの動作を確認したら、次は新しいバージョン(V2)をデプロイする。これは、Webアプリケーションに機能を追加したり、既存のバグを修正したりする際によく行う作業だ。Cloud Functionsの編集画面に戻り、既存のコードを新しいV2のコードに置き換える。V2のコードはV1とほとんど同じだが、HTMLページに表示される背景色と「Application Version: V2」というメッセージが変更されている。この新しいコードをデプロイすると、GCPはV2として新しいリビジョンを作成し、既存のV1とは別にV2を稼働させる準備を整える。この時点ではまだV2がすべてのユーザーに公開されているわけではない。
ここでCloud Runの「トラフィック管理」機能が役立つ。Cloud Runの管理画面にある「Revisions」タブから「Manage Traffic」(トラフィック管理)機能を利用することで、異なるバージョン(リビジョン)のアプリケーションに対して、どのくらいの割合でユーザーのアクセスを振り分けるかを設定できる。例えば、新しいバージョン(V2)に予期せぬ問題がないかを確認するために、まずは少数のユーザーにだけV2を試してもらい、残りの大部分のユーザーには安定版のV1を使い続けてもらう、といった運用が可能になる。これは「カナリアリリース」と呼ばれるデプロイ戦略の一つで、リスクを最小限に抑えながら新機能を段階的にリリースするための非常に有効な手段だ。
今回の例では、「V1 Revision: 50%」と「V2 Revision: 50%」と設定する。これにより、Webサイトにアクセスしたユーザーの半数にはV1のWebページが、残りの半数にはV2のWebページが表示されるようになる。Webブラウザを何度か更新してみると、V1とV2のページが交互に表示されることを確認できるだろう。もしV2に問題が見つかった場合、すぐにV1のトラフィックを100%に戻すことで、サービスへの影響を最小限に抑えることができる。これは、新バージョンのテストや、A/Bテスト(どちらのバージョンがユーザーに好まれるか比較するテスト)などにも応用できる。
このように、Cloud FunctionsとCloud Runを組み合わせることで、開発者はサーバーの管理から解放され、コードの記述に集中できるだけでなく、アプリケーションのバージョン管理や安全なデプロイ戦略を容易に実現できる。これは、現代のクラウドネイティブなアプリケーション開発において、システムエンジニアが理解しておくべき非常に強力で実践的なツールセットと言えるだろう。