Google Cloud 上の DevOps: ソフトウェア開発を加速させるためのツール
Google Cloud Japan Team
※この投稿は米国時間 2021 年 6 月 2 日に、Google Cloud blog に投稿されたものの抄訳です。
編集者注: 本日は ForgeRock の投稿をご紹介します。ForgeRock は世界規模で展開している ID とアクセス管理ソフトウェア企業で、主要な公共放送局を含む 1,100 社以上の大企業をお客様としています。お客様は、ForgeRock Identity Platform を使用して毎日 4,500 万人以上のユーザーの認証とログインを処理し、オンプレミス環境やマルチクラウド環境など、すべてのプラットフォーム間にまたがり、ID、ガバナンス、アクセスの管理をサポートしています。
この規模での運用は容易なことではありません。本ブログ投稿では、ForgeRock のエンジニアリング ディレクターである Warren Strange 氏に、同社の開発者の効率性と生産性の改善で重要な役割を果たした 3 つのポイントと、改善に利用した Google Cloud ツールについてご説明いただきます。
ForgeRock では Kubernetes を戦略的プラットフォームと捉え、いち早く取り入れてきました。Kubernetes 上で実行することで、Google Kubernetes Engine(GKE)、Amazon(EKS)、Azure(AKS)にまたがるマルチクラウド サポートが促進され、利用しているクラウドを問わず、お客様の環境に当社のプロダクトをシームレスに統合できるようになりました。
ForgeRock の開発者とオペレーターが、アプリケーションを簡単にビルド、デプロイ、管理できることは、当社がお客様に高品質のソリューションを継続的に提供するうえで非常に重要です。当社は、生産性の向上に役立ち、開発者が構成ではなくコーディングに注力できるツールを常に求めています。Google Cloud に含まれる一連の DevOps ツールを利用することで、当社の開発者が高い生産性を保つうえで大事な独自の 3 つのプラクティスを簡略化できました。以下でご紹介します。
1. IDE 内での開発者の生産性を上げる
開発者が高い生産性を実現することは、ForgeRock だけでなくすべての企業にとって成功を収めるための中核をなす要素です。開発者は IDE 内で大半の時間を過ごしているため、ForgeRock としては、開発者に IDE 内で Kubernetes アプリケーションを作成しやすい環境を提供することを目標に据えています。この目標の達成を支えてくれるのが Cloud Code です。Kubernetes インフラストラクチャとアプリケーションのビルド、デプロイ、スケーリング、管理のプロセスが簡素化されます。
特に、Kubernetes YAML 構文とスキーマについては、習得まで試行錯誤を繰り返し、長い時間がかかります。Cloud Code 内の YAML オーサリング サポートを利用したところ、複雑で時間のかかる YAML ファイル作成作業を避けることができました。YAML オーサリング サポートを利用することで、開発者はどのバグでも修正時間を短縮できます。Cloud Code のインライン スニペット、補完、スキーマ検証(別名「lint チェック」)で、YAML ファイルの扱いがさらに簡単になります。
Cloud Code 利用のメリットは、ローカルでの開発にも及びます。Kubernetes アプリケーションのローカルでの反復処理には、コンテナ イメージのビルド、Kubernetes マニフェストの更新、アプリケーションの再デプロイなど、手動のステップが複数必要です。こうしたステップを何度も行うのは面倒です。Cloud Code は Skaffold を内蔵しているので、発生した変更を追跡し、再ビルド、再デプロイを自動で行います。これで繰り返される開発作業を減らすことができます。
Kubernetes の開発では通常、IDE、ドキュメント、サンプルなどの切り替えが発生します。Cloud Code では Kubernetes コードサンプルによって、このコンテキスト切り替えを減らすことができます。コードサンプルをうまく活用すれば、新しい開発者の育成が迅速に行われます。新しい開発者はアプリケーションの構成や管理の習得には時間をかけず、コードの作成と改善により多くの時間を割り当てます。
2. エンドツーエンドの自動化を促進
開発者の生産性をさらに高めるため、当社は IDE 内でのコード作成から CI / CD パイプラインの自動トリガーと本番環境でのコードの実行へと、エンドツーエンドの自動化に力を入れてきました。ForgeRock がビルドとデプロイのプロセスを通じて、コード、フィードバック、修復の流れを効率化する際、特に、Tekton、Cloud Build、Container Registry、GKE が不可欠です。このプロセスは次のような流れと類似しています。
まず、Cloud Code を使用して Kubernetes マニフェストと Dockerfile を作成します。次に Skaffold でコンテナをローカルにビルドします。Cloud Build は継続的インテグレーション(CI)をサポートします。Cloud Build GitHub アプリによって、GitHub ワークフローの一部としてビルドとテストを自動化できます。Cloud Build は完全にサーバーレスであるため、他の継続的インテグレーション ツールと大きく異なります。負荷に反応してスケールアップとスケールダウンが行われ、サーバーの事前プロビジョニングや容量追加のための前払いは必要ありません。使ったリソース分だけ支払えばよいのです。
Cloud Build でビルドしたイメージは、Google の Container Registry で保存、管理、保護されます。Container Registry も Cloud Build と同様にサーバーレスなので、使った分だけ支払います。さらに、Container Registry には自動脆弱性スキャンが付属しているので、新しいイメージを Container Registry にアップロードするたびに、脆弱性の有無もスキャンできます。
続いて、Tekton パイプラインがトリガーされ、Container Registry に保存されている docker イメージと Kubernetes マニフェストを実行中の GKE クラスタにデプロイします。Tekton も Cloud Build と同様、ForgeRock の CI / CD プロセスの重要な部分です。Tekton は標準化された Kubernetes ネイティブ プリミティブに付属しているので、継続的デリバリーのワークフローをきわめて迅速に作成できます。
デプロイ後、Tekton は機能テストスイートをトリガーし、デプロイしたアプリケーションが予想通りに実行されていることを確認します。テスト結果は当社チームの Slack チャネルに投稿され、すべての開発者が各クラスタにすばやくアクセスし、分析情報を得ます。ここで、完成したプロダクトのリクエストをお客様に提供できます。
3. マルチクラウド パターンとプラクティスの活用
業界はマルチクラウドへの移行を進めています。企業はマルチクラウド戦略を採用してベンダー ロックインを最小限に抑え、最高水準のソリューションを活用してコスト効率を高めて、選択により柔軟性を向上させます。
ForgeRock はマルチクラウドの採用を提唱しています。当社の ID とアクセス管理プロダクトは、Google Cloud、AWS、Azure にまたがって機能します。Kubernetes などのオープンソース テクノロジーを使用したプロダクトの開発は、この相互運用性の促進に特に有効です。
Tekton も重要なプロジェクトです。こちらはベンダー ロックインの回避に役立ちます。Tekton の利用で、継続的デリバリー パイプラインはすべての Kubernetes クラスタ間にデプロイできるようになりました。特に重要なのは、Tekton パイプラインは Kubernetes 上で実行されるので、ランタイムから切り離すことができることです。Tekton と Kubernetes のように、Cloud Build と Container Registry もオープン テクノロジーをベースに構築されています。コミュニティ提供のビルダーと公式ビルダー イメージによって、ビルドプロセスの一部としてさまざまなツールに接続できます。Cloud Build で Google Cloud Buildpacks のようなオープン テクノロジーをサポートしているため、Docker の知識がなくてもコンテナを構築できます。
開発者とオペレーターが、アプリケーションを簡単にビルド、デプロイ、管理できることは、すべての組織が成功を収めるうえで極めて重要です。IDE 内での開発者の生産性の向上や、エンドツーエンドの自動化と、マルチクラウド パターンとプラクティスのサポートの活用は、ForgeRock の取り組みの一部にすぎません。ForgeRock の詳細と、ForgeRock Identity Platform を Kubernetes クラスタへのデプロイする方法については、GitHub のオープンソース ForgeOps リポジトリをご確認ください。
-ForgeRock エンジニアリング ディレクター Warren Strange