Cloud Ops のソリューションがすごい? Cloud Run の本番運用時に考慮すべきポイントと Tips を徹底解説!
- Cloud Ops
- Cloud Run
本記事は、2021年9月15日に開催された Google の公式イベント「オープンクラウドサミット」において、 Google Cloud カスタマーエンジニアの岩成祐樹氏が講演された「 Cloud Ops で踏み出す Cloud Run 本番運用への第一歩」のレポート記事となります。
今回は、 Google が提供するコンテナ実行環境である Cloud Run に注目し、サービス概要や本番運用時に考慮すべきポイントや Tips をご紹介します。また、 Cloud Run を活用する際に役立つ Cloud Ops のソリューションも解説していますので、ぜひ最後までご覧ください。
なお、本記事内で使用している画像に関しては、オープンクラウドサミット「 Cloud Ops で踏み出す Cloud Run 本番運用への第一歩」を出典元として参照しております。
それでは、早速内容を見ていきましょう。
目次
Cloud Run とは?
Cloud Run はサーバーレスで提供されているサービスであり、フルマネージドなコンテナの実行環境です。コンテナとは、 OS (オペレーティング・システム)上に「アプリケーション本体」「必要なライブラリ」「設定ファイル」などをひとまとめにしたものです。
本来、コンテナを扱うためには「 Kubernetes (オープンソースのコンテナーオーケストレーションツール)」を学ぶ必要があり、学習するための時間やコストが発生してしまいます。
単純にコンテナを扱うだけであれば Kubernetes がなくても問題ありませんが、オーケストレーション(設定や管理などの自動化)を行うためには Kubernetes の知識が必要不可欠です。
しかし、 Cloud Run を使えば、コンテナイメージを構築して Cloud Run の上に乗せるだけで、 Kubernetes が提供している様々な機能・強みを享受することができます。
なお、 Google Cloud (GCP)では Cloud Run を含めた様々なコンピューティングサービスを提供しています。
- Cloud Functions
- App Engine
- Cloud Run
- Kubernetes Engine
- Compute Engine
最適なコンピューティングの選択方法に関して理解を深めたい方は以下の記事がオススメです。
わかりやすい!自社に合った GCP コンピューティングの選択方法とは?
Cloud Run の主な特徴
高速なデプロイ
Cloud Run は、ステートレス(サーバーがクライアントのセッション情報を保持しない)なコンテナを動かすためのプラットフォームです。高速に 0 から N にスケールして数秒でデプロイを完了することができ、軽量かつ簡単に使えるサービスとなっています。
また、 Cloud Run には豊富な機能が搭載されており、高速なデプロイや URL の付与、 HTTPS の対応、バージョニング、トラフィックスプリッティングなど、様々なことを実現するための機能がビルトインで提供されています。
サーバーレス・ネイティブ
Cloud Run の大きな特徴として、サーバレス・ネイティブである点が挙げられます。 VM などのインフラレイヤーを考慮する必要がないため、スケーリングやセキュリティの対応を気にすることはありません。
また、言語やライブラリの制限がなく、ベンダーロックインなどのリスクを低減できる点も嬉しいポイントです。さらに、インスタンスが起動している時間に対して料金が発生するのではなく、インスタンスが処理をリクエストしている時間に対して課金されるので、使った分だけ料金を支払えばよく、コストの最適化にも繋がります。
高いポータビリティ
Cloud Run は Knative の API の一貫性を提供しているため、コンテナレイヤーや Knative レイヤーで高いポータビリティを誇ります。これにより、どこでも同じ Developer Experience を実現でき、業務効率化や生産性向上に大きく寄与します。
コンテナをシンプルに使える
一般的な Kubernetes は柔軟性を提供している一方で、 Kubernetes の使い方や仕様を理解しなければならない、という課題が残っていました。そのため、下図のように複数のステップを経る必要があります。
一方、 Cloud Run はコンテナを非常にシンプルに扱うことができ、コンテナを用意してデプロイするまでのプロセスを簡素化できるプラットフォームとなっています。つまり、より少ないステップで簡単にコンテナを扱うことができるわけです。
このように、 Cloud Run には様々な特徴が存在します。また、 Cloud Run は継続的にアップデートがなされているサービスであり、2021年前半にも多くのアップデートがありました。
今後も Cloud Run をより便利に使うためのアップデートが予定されているため、 Google の動向に注目しておきましょう。
Cloud Run のアップデート情報に関しては、以下の記事で詳しく解説しています。
2021最新機能を搭載した Cloud Run で高次元なセキュリティ対策を実現!
Cloud Run の本番運用に向けたポイントと Tips
Cloud Run はサーバーレスで提供されているサービスであるため、インフラレイヤーで気にすべき点は少ないですが、実際に Cloud Run を本番運用する場合、考慮すべきポイントが存在します。
以下はサーバレスのプロダクトを使う際に、どのような部分をプラットフォーム側が管理して、どのような部分をユーザー側が管理するべきか、というポイントを示した図です。
上図で青く塗られている部分が Cloud Run の本番運用時に考慮すべきポイントであり、アプリケーションそのものや、それが適切に動作しているかどうかを監視するためのモニタリングなどを考慮して、設計しておくことが重要になります。
そして、さらに細かく要素を分解したものが以下の図です。
Cloud Run の本番運用では、これらの要素を考慮する必要があります。それぞれについて、詳しく見ていきましょう。
システムの状態
「システムの状態」は上図左側の青色の部分が該当します。アプリケーションが適切に動作していることを確認するためには、メトリクスやログ、アプリケーションのトレース情報などを通してシステムの状態を把握する必要があります。
問題の管理
「問題の管理」は上図右側の赤色の部分が該当します。システムに問題が発生している場合、アラートやエラーレポーティング、 SLO (サービスレベルの評価基準)を管理するための仕組みが必要になります。
可視化と分析
「可視化と分析」は上図中央の緑色の部分が該当します。アラートやエラーレポーティングで問題を認識した後、ダッシュボードやメトリクスエクスプローラなどを活用して分析・可視化を行います。これにより、システムに発生している問題の原因を特定し、トラブルシューティングに繋げることができます。
Cloud Ops とは?
Cloud Ops は Google が提供しているサービスであり、システム運用で利用する様々な機能が揃った製品群を意味しています。正式名称は「 Google Cloud Operations Suite 」であり、これを略して Cloud Ops と呼んでいます。
Cloud Ops は2回の名称変更を経て現在に至っており、元々は2012年に創設された SaaS 型のクラウドインフラ監視サービス「 Stackdriver 」から始まりました。その後、 Google が買収して「 Google Stackdriver 」にブランド変更され、2020年からは「 Cloud Ops 」のサービス名称で提供されています。
この Cloud Ops において、おさえておくべきプロダクトは「 Logging 」と「 Monitoring 」の2つです。これらを適切に活用することで、 Cloud Run の本番運用を安定的に稼働させることが可能になります。
自社で Logging や Monitoring の仕組みを構築する場合、基盤自体のキャパシティや監視を考慮する必要がありますが、 Cloud Ops は Google Cloud (GCP)と同じプラットフォーム上で動作するため、運用のスケールに合わせて自動的に最適化されます。
また、 Cloud Ops は Google Cloud (GCP)にインテグレーションされているため、 Google Cloud (GCP)のすべてのサービスで設定なしに利用することができます。例えば、 Cloud Run をデプロイすると、すぐにログ情報を収集することが可能です。
Cloud Ops の Logging
開発や運用を行う上で、 Logging は様々なシチュエーションで必要になります。例えば、監査対応や分析用途でのアーカイブや開発時や運用時におけるデバッグ、ログ内容をもとにしたアラート通知などが挙げられます。
それでは、 Cloud Ops の Cloud Logging について、具体的な内容を見ていきましょう。
Cloud Logging とは?
Cloud Logging は Google Cloud (GCP)のすべてのログを集約する SaaS 型のサービスです。下図のように複数のコンポーネントが存在しており、クエリを書く部分やフィールドを選択する部分、ログのヒストグラムが表示される部分、クエリ結果が表示される部分などに分かれています。
Cloud Logging を活用することで、ログの収集や分析だけではなく、必要に応じて他サービスに連携したり保存したりすることも簡単に実現できます。
それぞれのステップを具体的に示したものが以下の図になります。
Cloud Logging は、ログを収集し、必要に応じて BigQuery などに簡単に連携できます。また、 Logs Explorer でログをリアルタイムに分析できますし、それらをアーカイブ用途で保存しておくことも容易に実現可能です。
なお、 Cloud Logging では、計4種類のログを扱います。下図の通り、プラットフォームが生成する Google Cloud (GCP)のログやアプリケーションのログ、ネットワークのログ、監査ログなどが挙げられます。
ここからは、 Cloud Logging の機能について、前章でご紹介した「収集」「連携」「分析」の3つのステップに分けて詳しくご説明します。
Cloud Logging のログ収集
Cloud Logging は、デフォルトでコンテナログとリクエストログを取得することが可能です。例えば、コンテナログであれば /var/log ディレクトリにあるすべてのファイルや Cloud Logging クライアントライブラリを使用して作成されたログなどが挙げられます。
また、構造化ログを利用することで、検索しやすい形式でログを出力することができ、 severity などの特殊フィールドは jsonPayload から削除され、対応フィールドに書き込まれます。
さらに、コンテナログとリクエストログの関連付けも Cloud Logging におけるログ収集ステップの大きな特徴です。関連付けによって、あるリクエストに紐付いたコンテナログを抽出することができるので、どのリクエスト(ユーザエージェントなど)で何が起こったのかをデバッグする際に有用です。
Cloud Logging のログ連携
ログ連携のステップでは、ログルーターによる適切なログ連携が Cloud Logging の大きな特徴となっています。これは、ログが生成されてから Cloud Logging Router を経由して、 Cloud Logging のストレージバケットや各種サービスにログを連携するものです。
また、ログシンクを設定することで、 Cloud Logging で分析したいログだけを Cloud Logging に連携し、アーカイブや分析用途のログを BigQuery に転送することができます。これにより、 Cloud Logging のコスト最適化を図ることが可能です。
また、監査ログなどについては、集約シンクを利用して Google Cloud (GCP)組織のすべての Google Cloud (GCP)のプロジェクト、フォルダ、請求先アカウントからログエントリを転送し、一元的に管理、保管できます。
Cloud Logging のログ分析
ログ分析のステップでは、 Cloud Run のコンソール画面から、特定の Cloud Run サービスに紐付いた各種リソース状況やログを見ることができます。また、 Cloud Run から遷移することで、あらかじめフィルタリングされた状態で Logs Explorer に遷移可能になります。
ここで、 Logs Explorer を使用したサンプルクエリをご紹介します。各用途に応じたクエリのサンプルが公式ドキュメント上に掲載されているため、このサンプルを活用することで、誰でも効率的にクエリを書くことができます。
さらに、直近のアップデート情報として、2021年7月30日にフィールドレベルのアクセス制御が利用可能になりました。従来はログビューでのアクセス制御はログエントリー単位でしたが、今回のアップデートにより、開発チームのみ詳細な情報を表示し、運用チームや委託先には限定した情報のみを閲覧させるなど、柔軟な運用を実現できます。
加えて、 Cloud Logging ではエラーレポートの機能が実装されています。発生したエラーを自動的に集約し、すぐにログへ飛ぶことができるため、問題の早期発見に繋がります。
また、直近のアップデートにより、ログベースのアラート機能が実装されました。従来は、ログベースのメトリクスを定義して、 Cloud Monitoring でアラートを設定する必要がありましたが、この機能により、すべてのログタイプに対するアラートを設定することが可能になりました。
このように、 Cloud Logging を活用することで、 Logging に関するあらゆる業務を効率化し、自社の生産性向上を実現することができます。
Cloud Ops の Monitoring
次に Cloud Ops の Monitoring に関して詳しくご紹介します。システムを運用する上で Monitoring は大切な要素であり、サービスの稼働状況の確認やサービス品質のチェックなど、様々な場面で必要になります。
それでは、具体的な内容を見ていきましょう。
ゴールデンシグナル
Monitoring の分野では以下4つの指標が重要になります。これは Google が提唱するシステム運用の方法論である Site Reliability Engineering (SRE)の中で紹介されている考え方です。
これらはユーザーに影響を与える指標として説明されているため、まずはゴールデンシグナルの4つの要素を参考にしながら、自社のサービスを客観的に評価すると良いでしょう。
Cloud Run におけるメトリクス
Cloud Run では、注意すべきメトリクスをデフォルトで収集できるようになっています。前項で挙げた「レイテンシ」「トラフィック」「エラー」「飽和度」をすべてカバーしており、下図のように直感的に見える化することが可能です。
通知ポリシーの作成
メトリクスを自動収集した後は、簡単に通知やアラートのポリシーを設定できます。 Cloud Logging と同様に、 Cloud Run の画面から通知ポリシーの作成画面に遷移します。直感的かつ簡単に設定できる点が大きな特徴ですが、より複雑な条件を指定したい場合は Monitoring Query Language (MQL) を利用することで実現可能です。
このように、 Cloud Ops の Monitoring 機能を活用することで、手間なく高精度なメトリクス収集や通知ポリシーの設定を実現可能になります。
Cloud Run に関する Q&A
Q.通知で Slack 連携することは可能ですか?
A.可能です。 Cloud Run は Slack 通知だけではなく、様々な通知をサポートしていますので、問題なく連携することができます。
Q. Cloud Run で検討しておくべきセキュリティは何がありますか?
A. Cloud Run にはセキュリティの観点が複数存在しますが、例えば「安全なベースイメージを使う」という点が挙げられます。 Google Cloud (GCP)では、安全なマネージドベースイメージを提供しているため、これを活用することをオススメします。また、最近では「ソースコードからそのままデプロイできる」という機能が GA (一般提供)されており、この機能を活用することで、古いイメージを長期間使わずに済みます。
加えて、「意図しないイメージをデプロイさせない」という点も大切なポイントです。この点に関しては Binary Authorization という機能を使うことで、デプロイに対する制限をかけることができるので、悪意のあるイメージを避けながらサービスを運用することが可能になります。
Q.近い将来に問題が発生する兆候がないか?は気になるものの、これまで着手できたことがありません。どこから始めるのが良いですか?
A.セキュリティを担保しながらサービスを利用するためには、アカウントの不正利用を迅速に検知することが重要です。 Google Cloud (GCP)には Security Command Center という機能が搭載されており、これを活用することで、より安全な環境でマネージドサービスを運用可能になります。
Q. Cloud Run を使うと Logging 、 Monitoring 以外に Operations の機能も自動で組み込まれますか?
A.トレース情報を取得する Cloud Trace というものは自動的に組み込まれますが、それ以外は対応していません。
Q. Cloud Run を2つ起動させて「1つをサーバー、1つをフロント」のようにして API とさせることはできますか?その際、サーバー側は特定ドメインからのアクセス以外は非公開としたいのですが、その設定はどこで行えますか?
A.可能です。複数の Cloud Run のサービスを使い、うまく連携させながら活用することができます。なお、アクセス制限に関しては、 Cloud Run のサービス間での認証は IAM で可能なため、 IAM を適切に設定することで、 Cloud Run に対して、特定ドメイン以外からのアクセスを拒否するように設定できます。
まとめ
本記事では、 Google が提供するコンテナ実行環境である Cloud Run に注目し、サービス概要や本番運用時に考慮すべきポイント、 Cloud Run を活用する際に役立つ Cloud Ops のソリューションを一挙にご紹介しました。
Cloud Run の運用の大部分を Google に任せられる点が大きな魅力のサービスですが、本番運用を考える際には考慮すべきポイントが複数存在します。
以下、本記事のポイントのまとめになります。黒字で書かれている点が Cloud Run の本番運用時に考慮すべき内容です。
これらのポイントを事前に理解した上で「自社が Cloud Run の本番運用に向けて必要なことは何か」を検討することが重要になります。そして、 Cloud Run を運用する際には Cloud Ops が有効なソリューションになります。 Cloud Ops の Logging や Monitoring の活用により、効率的に Cloud Run の運用を進めていくことができます。
Cloud Run を使うためには Google Cloud (GCP)を契約する必要がありますが、もし検討するのであれば、トップゲートがオススメです。トップゲート経由で契約することで
- 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)の導入をご検討をされている方はお気軽にお問い合わせください。
メール登録者数3万件!TOPGATE MAGAZINE大好評配信中!
Google Cloud(GCP)、Google Workspace(旧G Suite) 、TOPGATEの最新情報が満載!