DZ BANK が Cloud Workstations を使って開発者の生産性を改善した方法
Amulya Rattan Bhatia
Chief Architect, NTT DATA Deutschland SE
Gregor Otto Milenkovic
Product Owner, DZ BANK AG
※この投稿は米国時間 2024 年 5 月 30 日に、Google Cloud blog に投稿されたものの抄訳です。
編集者注: DZ BANK は資産規模でドイツ第 2 位の銀行です。ドイツ国内に約 700 ある協同組合銀行すべての中央機関でもあります。DZ BANK が Cloud Workstations をどのように活用して、開発者エクスペリエンスを改善し(開発者のオンボーディングに要する時間を短縮し、生産性を高めました)、サイバーセキュリティ目標の遵守を容易にしたかをご紹介します。
DZ BANK では、開発者エクスペリエンスが最も重要視されています。しかし同時に、開発環境のセキュリティ プロファイルが損なわれるようではいけません。Google Cloud とのパートナーシップの一環として、私たちは開発者エクスペリエンスを劇的に改善しながら、同時にセキュリティ ポスチャーを強化する取り組みを開始しました。Cloud Workstations を活用して、どのように目標を達成したかをご紹介します。
開発者エクスペリエンスの重視の欠如
かつて私たちには、開発者環境を自動化し、自動化されたプロジェクト設定を提供する標準化された方法が備わっていませんでした。プロジェクトの複雑さによっては、新しい開発者のオンボーディングに数日から数週間を要していました。新しい開発者はプロジェクトを手作業で設定する必要があり、内部ドキュメントが存在する複数のソースを掘り起こし、インフラストラクチャをプロビジョニングし、問題が発生すると同僚に相談していました。これらは、自動化が可能であり自動化すべき大きなトイルです。
さらに、開発者には Docker ランタイムやその周辺ツールなど、特殊なコンテナツールにアクセスするための所定のプロセスが用意されていませんでした。その結果、多くのチームが個別に作業し、本番環境のベスト プラクティスを他チームと共有していませんでした。セキュリティ ポスチャーの観点からは、開発環境をより適切に保護する方法を理解し、開発チームが使用するツールやフレームワークに透明性を与えるうえで、開発環境の標準化は極めて重要です。私たちは開発者がどのツールを使用するかを管理し、潜在的な脆弱性を検出するために継続的なスキャンを実行したいと考えました。
Cloud Workstations で問題解決
フルマネージド サービスである Cloud Workstations を使用すると、簡単に開発環境を標準化できます。事前構成済みのベースイメージを利用してインフラストラクチャ、OS パッチ、セキュリティ パッチを管理でき、余分な手間は一切不要です。SSH(または他の TCP プロトコル)を使用して Workstations ツールに直接アクセスすることも可能で、ユーザーはインターネットに公開することなくトラフィックをローカルマシンのポートとワークステーションのポートの間で転送できます。CMEK のサポートにより、顧客管理の暗号鍵を使用してリソースを暗号化できます。
また、Cloud Workstations は開発者がよく使用する統合開発環境(IDE)を事前構成したベースイメージを複数提供し、永続ディスクをサポートしているため、セッション間でデータを保存できます。これらのベースイメージはさらにカスタマイズ可能で、Docker-in-Docker をサポートしています。たとえば、JetBrains IDE などのワークステーション構成に、標準化された IDE の拡張機能やプラグインをインストールできます。
-
Cloud Workstations は、開発者エクスペリエンスを加速するさまざまなオプションも提供してくれました。たとえば、Cloud Workstations のリソースと権限のプロビジョニングに infrastructure-as-code ツールである Terraform を使用して、開発環境全体の設定を自動化できます。また、起動時間を短縮して開発者がよりすばやく開始できるように、事前にウォームアップされた一連のワークステーションを構成しました。一定時間アイドル状態のワークステーションが自動的にシャットダウンするように、非アクティブな期間の上限を構成することも可能です。Cloud Workstations はワークステーションの稼働時間に対してのみ料金が発生するため、費用を抑えるのにも役立ちました。
DZ BANK のデプロイ アーキテクチャ
ワークステーションは、デプロイしたクラウド環境、つまり安全な Google Cloud ランディング ゾーンの一部である、共有 VPC ネットワークに含まれる、パブリック IP を持たない限定公開ワークステーション クラスタ内で稼働しています。限定公開されたネットワークとワークステーション クラスタにアクセスするには、Private Service Connect(PSC)のエンドポイントが 2 つ必要です。
-
限定公開されたネットワーク内でコントロール プレーンをワークステーションに接続する PSC エンドポイント。限定公開されたゲートウェイを持つワークステーション クラスタ用にデフォルトで作成されます。
-
開発者が VPC 内で稼働するワークステーションに接続するための追加の PSC エンドポイント。また、この PSC エンドポイントの IP アドレスを使用して、限定公開 DNS ゾーン内のワークステーション ドメイン DNS レコード用に DNS レコードを作成します。
継続的な開発者のフィードバック
Cloud Workstations が Google Cloud ランディング ゾーン内でアクセス可能になった後、私たちの目的に適うようにカスタマイズを開始しました。Cloud Workstations チームから提供された事前構成済みのベースイメージを使用して、独自のカスタム Docker イメージを作成しました。これには以下が含まれます。
-
中央プロキシの設定
-
サイバーセキュリティ チームが定期的にスキャンする、すべてのパッケージとツールのダウンロードを処理するアーティファクト サーバー
-
言語固有のパッケージ管理システムの設定(mvn、pip、npm など)
-
プログラミング言語やその他のプロジェクトのニーズに基づく、標準化されたツールの追加
-
IDE のプラグインや拡張機能のプリインストールと更新の自動化
-
アーティファクト サーバーを通して(つまり、インターネット アクセスなしで)実行される OS パッケージ管理システムのリポジトリ
-
IDE の構成、Git 証明書、Java の Keytool、その他の一般的な環境変数など、環境設定の完全自動化
-
UI テスト用ツールなどの GUI アプリケーションも開発者に利用可能にする、SSH を使用した X11 の有効化
-
特殊な Bash スクリプト
また、課題とツール環境がそれぞれ異なる、DZ BANK のさまざまな開発者チームと複数の概念実証を行いました。開発者チームのフィードバックを活かして、Cloud Workstations 環境の改善とカスタマイズをさらに進めました。
その一例が、プロジェクト固有のカスタマイズです。標準化されたイメージは開発者のニーズの大半に対応しますが、プロジェクト固有のツールや環境変数など、標準化されたイメージに組み込めないプロジェクト固有の要件がなお存在します。これらを自動化するために、起動時に Bash スクリプトを使用してイメージをカスタマイズしています。
プロジェクトごとに、必要なすべての自動化コマンドを含むカスタム ファイルを workstation.yaml で作成し、Git リポジトリにチェックインするようにしました。Bash スクリプトを作成し、Cloud Workstations の起動時にこのファイルを探して、記載されているコマンドを実行するようにしました。これによってプロジェクトの設定を完全に自動化でき、新しい開発者は初日から貢献できるようになりました。
Cloud Workstations 用の注文 CI パイプラインも作成しました。カスタム イメージのコードは Git リポジトリに保存され、commit により CI パイプラインをトリガーします。このパイプラインは、必要なすべてのコンテナ イメージを、Dockerfile に示されているイメージの階層に基づいて構築します。
Docker イメージは DZ BANK のサイバーセキュリティ ガイドラインに従って脆弱性スキャンされ、テスターと開発者のテスト用に指定された Google Cloud プロジェクトの Artifact Registry に push されます。スキャンとテストが正常に完了したイメージは統合され、本番環境にデプロイされます。
Cloud Workstations は開発者が自動化されたワークフローを通じて内部注文でき、これにより注文 CI パイプラインがトリガーされ、必要なすべてのインフラストラクチャと権限が作成されます。ドキュメントの検索はもう必要ありません。Gemini Code Assist が Cloud Workstations に搭載されたことにより、生成 AI 対応のコード開発を探求し、開発者のスピードと能力をさらに向上させることも検討しています。
学んだ教訓
Cloud Workstations を活用した Google Cloud とのパートナーシップにより、DZ BANK 内のチームで開発者の生産性を大幅に向上させることができました。
「Cloud Workstations の導入前には 1 週間かかった新しい開発者のオンボーディングが、わずか 1 日で済むようになりました。開発者は、安全で標準化および自動化されたクラウドネイティブな開発環境を手に入れ、初日からコードベースに貢献できるようになります。標準化と自動化の機能のおかげで開発者エクスペリエンスが向上します。」– DZ BANK AG、プロダクト オーナー、Gregor Otto Milenkovic 氏
この過程で、皆様のシナリオにも役立つかもしれない、多くの教訓を学びました。
-
すべての関係者が満足する最終結果を実現するために、継続的な開発者フィードバック ループが重要です。
-
開発者に与える自由と開発環境のセキュリティ プロファイルの間で正しいバランスを見つけ出すことが不可欠です。
-
Google Cloud のカスタマー エンジニアとプロダクト エンジニアリング チームは、プロジェクトを最後までやり抜く手助けをしてくれます。問い合わせへの回答、バグ報告、機能リクエストのために、終始連絡を取り合っていました。
-
すべてを自動化し、トイルを排除します。
最初のステップに進む準備はできていますか。ワークステーションを作成する方法を学ぶか、この Cloud Skills Boost ラボをお試しください。
このブログ投稿を執筆するにあたって、技術的な内容で Yuriy Babenko 氏の協力を得ました。この場を借りて感謝を申し上げます。
-NTT DATA Deutschland SE、チーフ アーキテクト、Amulya Rattan Bhatia 氏
-DZ BANK AG、プロダクト オーナー、Gregor Otto Milenkovic 氏