コンテンツに移動
DevOps & SRE

場所を問わない働き方: 開発者の生産性向上を支援する Cloud Workstations

2023年4月24日
https://storage.googleapis.com/gweb-cloudblog-publish/images/aiml2022.max-2500x2500.png
Google Cloud Japan Team

※この投稿は米国時間 2023 年 4 月 12 日に、Google Cloud blog に投稿されたものの抄訳です。

「私のマシンでは動くのに」。この一言を思うと、部屋にいる一同がやれやれと嘆く光景が目に浮かびます。しかし、ソフトウェアの構築は簡単ではありません。ソフトウェア環境につきものである変動性はますます大きくなっています。さまざまな場所に分散して働くチームのオンボーディングや安全なワークステーションの維持が必要であり、一部の大企業はこれに対処するためにクラウドベースの開発環境を採用しています。採用に踏み切るには相応の理由があります。クラウドベースの開発環境であれば、グローバルな開発環境フリートのガバナンスを一元化しながら、開発の生産性を向上させることができるからです。

Cloud Workstations のチュートリアルにアクセスするには、こちらをクリックしてください。

ローカル ワークステーションでは作業スピードが落ちる

物事は表裏一体です。開発環境においては、管理者と開発者の関係がそれにあたります。

マシンのフリート全体で開発環境をセットアップすることは一筋縄ではいきません。管理者は次のような困難に直面します。

  1. セットアップに長時間かかる。場合によっては何日も、何週間もかかります。新しい開発者がプロジェクトに着手するときや、プロジェクトを切り替えるとき、管理者はマシンをブートストラップする必要があります。これにはランタイム、IDE、アプリケーションなどのインストールが含まれ、世界中の何千ものマシンで行うとなると、さらに困難な作業になります。

  2. メンテナンスが困難。ワークステーションの構成を変更する必要がある場合(処理能力の向上、ベースイメージの更新、インストールの変更など)、これを複数のマシンで行って一貫性を保つには多くの労力がかかります。

  3. セキュリティのリスクがある。開発者がローカルマシンにソースコードを保存したまま長期間にわたって自分のワークステーションを維持すると、攻撃対象領域が拡大し、データの引き出しのリスクを招きます。

一方、開発者は次のような独自の困難に直面します。

  1. 通常は root アクセス権がない。管理者が root アクセスをロックダウンしておくのは明らかな理由があるからですが、それによって開発者はソフトウェアやドライバ、デバッグ プログラムの定期的なインストールまたはアンインストールを簡単に実行できなくなります。

  2. 次第に構成のずれが生じる。少しずつライブラリに若干の差異が生じていくため、ある開発者が生成した結果やステージング、開発、テストで発生したことを別の開発者が再現するのが難しくなります。

  3. 構成スクリプトの実行がコラボレーションの妨げになる。開発者が自分のワークステーションの構成や更新を担う場合、開発スピードが遅くなります。

  4. 大規模なマシンへのアクセスが容易でない。開発者はソフトウェアのテストを適切に実行できるようにさらに高い処理能力を求めることが多くあります。物理マシンのサイズを管理者が更新する必要がある場合、この実現には時間がかかることがあります。  

開発者の達成感が高めるには、開発者がジョブの初日またはその直後にメインへの最初の commit を実行できるようにするのが理想的です。また、生産性を低下させるような手法を強いられることで、開発者が大きな負担を感じるのも避けるべきです。

本当にクラウド上のワークステーションなのか

Cloud Workstations は開発環境の「陰と陽」のようなものです。なぜなら、管理者と開発者双方の課題に対応できるからです。この詳細については、私と PM の会話をご視聴ください。また、本稿でも説明しています。

Cloud Workstations はその名のとおり、クラウド上のワークステーションです。このマネージド開発環境には組み込みのセキュリティ機能があり、開発者に柔軟性を提供し、よく使われる多くのデベロッパー ツールがサポートされています。Cloud Workstations であれば、管理者と開発者が抱える上述の課題に次の 3 つの方法で対処できます。

新しい開発者とリモート開発者のオンボーディングを簡素化

管理者がテンプレートを指定して一貫性のあるワークステーション構成を設定できるため、開発者はレンタカーを借りるよりもすばやくオンボーディングできます。さらに、Google Cloud コンソールまたは API を使えば、管理者は 1 回のアクションで全ワークステーションを更新して同期できます。開発者は数分でワークステーションを作成して起動でき、ワークステーションの構成は自動的に適用されます。構成のずれや従来の「私のマシンでは動くのに」という問題も発生しません。

どのチームでも一貫した環境

Cloud Workstations では、事前定義されたコンテナまたはカスタム コンテナを使って環境構成を指定します。たとえば、プリインストールされているツール、ライブラリ、IDE 拡張機能、プリロードされているファイル、起動スクリプトなどを指定できます。また、セッション制限を設定してコンテナ イメージを更新するだけで、開発者が作業開始時に最新のバージョンとパッチを確実に取得できるようになります。次に Cloud Workstations により、ユーザーが指定したコンテナ イメージに沿ってバージョンとパッチがすべて更新されたことが確認されます。ワークステーションの構成を更新して Cloud Workstations に更新処理を任せるだけで、膨大な開発環境の更新やパッチ適用を簡単に実行できます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/ja-image3_N70DdL.max-2000x2000.png

カスタムツールで開発者の生産性を向上させる

作業場所が自宅であれ、機内であれ、ベースキャンプの小屋であれ、開発者はマルチ IDE のサポートにより、時間や場所を問わずブラウザやローカル IDE から安全で高速な開発環境にアクセスできます。Cloud Workstations では、Linux コンテナで動作するあらゆるコードエディタとアプリケーションがサポートされています。IDE をカスタマイズして拡張機能をサポートすることもできます。さらに、外部、自己ホスト型、オンプレミスのデベロッパー ツール、またはその他のクラウド デベロッパー ツール(GitLab、TeamCity など)を使用できます。

開発環境のセキュリティを強化する

Cloud Workstations は一元管理されていますが、構成が可能です。そのため、データの引き出しのリスクを軽減できます。開発者は、アクセスが許可されている構成から選択してワークステーションを作成できます。管理者は、ソースコードがローカルに保存されないように設定したり、開発者が正しいバージョンのツールを使ってコードを記述するように設定したりできます。

Cloud Workstations は VPC 内で動作するため、コードはプライベート ネットワーク内とステージング環境で実行されます。サービスをエミュレートする必要はありません。さらに、VPC Service Controls、プライベートの上り / 下り(内向き / 外向き)、Cloud Audit Logs、きめ細かな IAM コントロールなどのセキュリティ メカニズムを、ネットワーク レベルで適用できます。

仕組み

バックグラウンドでは、Cloud Workstations はワークステーション クラスタに含まれ、ワークステーション クラスタによって管理されています(このクラスタと Google Kubernetes Engine クラスタを混同しないよう注意してください)。

管理者は、特定のリージョンに存在するワークステーション クラスタを作成して、それを VPC ネットワークに接続できます。プロジェクト内の Compute Engine VM や永続ディスク(PD)など、ワークステーションで使用されるリソースは Cloud Workstations によって管理されます。管理者はこれらのリソースを制御することが可能です。たとえば、バックアップ ポリシーを強制適用するスケジュール指定のディスク スナップショット ポリシーを設定できます。一方、ネットワークの上り / 下り(内向き / 外向き)、VPC Service Controls、完全にプライベートなゲートウェイを設定して、Cloud Workstations へのアクセスを VPC 内のエンドポイントに限定することもできます。
https://storage.googleapis.com/gweb-cloudblog-publish/images/ja-image4_qpHyVq.max-900x900.png

開発者は、クラウド IDE、言語ツール、ライブラリなどを使って開発環境を定義するワークステーションを作成できます。PD をアタッチすれば、セッション間で保存されたデータを使ってオンデマンドでワークステーションを開始、停止できます。

インタラクティブなチュートリアルで試してみる

実際のセットアップの内容や、クラウド ワークステーションがどのようなものか知りたいという方もいるでしょう。見た目と操作性は他のローカル開発環境と同様ですが、セットアップが非常に簡単です。しかし、私から詳しくご説明するよりも、コンソールに用意されているこのインタラクティブ チュートリアルをご確認いただければと思います。このチュートリアルでは、セットアップ手順について説明しています。

https://storage.googleapis.com/gweb-cloudblog-publish/original_images/ja-image1_rwK69Q.gif

活用のヒント: ソフトウェア デリバリー シールドもご覧ください。Cloud Workstations はソフトウェア デリバリー シールド ソリューションの一部です。ソフトウェア デリバリー シールドは、フルマネージドでエンドツーエンドのソフトウェア サプライ チェーン セキュリティ ソリューションであり、ソフトウェアの構築とデプロイに使用するデベロッパー ワークフローとツール、ソフトウェアの依存関係、CI / CD システムのセキュリティ体制の改善に役立ちます。このように多くの利点がありますが、まずは 1 つずつ進めましょう。


- デベロッパーリレーションズ エンジニア Stephanie Wong
投稿先