Google Cloud Next Tokyo ’24 にて行われたハンズオンセッション「基礎から学ぶ Platform Engineering」の参加レポートです。

適宜説明を挟みながら進行するハンズオンセッションでしたので、本レポートでも説明パートとハンズオンパートを織り交ぜて記載しています。

セッション内容

登壇者

関本 信太郎様(Google Cloud カスタマー エンジニアリング アプリケーション モダナイゼーション スペシャリスト)

セッションの概要

セッション番号:D2-HO-04

本ハンズオンでは Google Kubernetes Engine (GKE) を基盤とした開発者向けプラットフォーム開発の基本的なプラクティスを学ぶことができます。
Platform Engineering の基本的なプラクティスから Platform as a Product をベースにしたプラットフォーム開発の具体的な手法、また基盤となる GKE の概要についてハンズオン形式で習得します。
これから Platform Engineering プラクティスの導入を検討されている方々に最適な内容となっています。

セッションレポート

GKEクラスターを立ち上げるのには時間がかかるため、一番最初にGKEクラスターを立ち上げるところまで進めてから説明パートに入りました。

Platform Engineeringとは

まず初めに、そもそもPlatform Engineeringとは何かという説明がありました。

Platform Engineeringの目的はずばり「開発者の生産性向上」

そのためにやることは「開発者向けに舗装された道路を提供する」
加えて、ユーザー(開発者)のニーズに合わせて提供した道路が進化し続けられるようにする必要があるとのことでした。

Platform EngineeringへのGKE Enterprise活用

Platform Engineeringの概要説明が終わったところで、GKE EnterpriseをPlatform Engineeringに活かす方法について話が移ります。

そもそもGKE Enterpriseは、GKEクラスターをマルチテナントに管理するために使用されるサービスです。
https://cloud.google.com/kubernetes-engine/enterprise/docs/concepts/overview?hl=ja

使い方を超絶ざっくり説明すると、GKE Enterpriseでは「チーム」というグルーピングを行なってGKEクラスターの管理を行います。
「チーム」を実際のチーム体制に合わせることにより、プラットフォームに使うGKEクラスターの管理を楽にすることができるとのことでした。

チームごとに別々のログストレージを用意するなど、マルチテナント管理を意識した機能が充実しています。

ハンズオンパート:GKE Enterpriseを触ってみる

ハンズオンではapp-a-teamというチームを作成しました。

app-a-teamチームのコンソール画面からspring-appec-siteというネームスペースを追加すると。。。

GKEクラスター内でもspring-appec-siteというネームスペースが作成されることが確認できました!

$ kubectl get ns
NAME                 STATUS   AGE
default              Active   23m
ec-site              Active   81s
gke-managed-cim      Active   22m
gke-managed-system   Active   22m
gmp-public           Active   22m
gmp-system           Active   22m
kube-node-lease      Active   23m
kube-public          Active   23m
kube-system          Active   23m
spring-app           Active   82s
$ 

各チームのログストレージの設定についても、ハンズオンで実際に試しました。
まずは以下のようにコマンドを実行し、ログストレージ設定を行います。

$ cat << EOF > fleet-logging.json
{
  "loggingConfig": {
      "defaultConfig": {
          "mode": "COPY"
      },
      "fleetScopeLogsConfig": {
          "mode": "MOVE"
      }
  }
}
EOF
$ 
$ gcloud container fleet \
  fleetobservability update \
  --logging-config=fleet-logging.json
$ 

その後、設定が合っていることを確認します。

$ gcloud container fleet fleetobservability describe
createTime: '2024-08-02T06:49:25.528282657Z'
membershipStates:
  projects/xxxxxxxxxxxx/locations/asia-northeast1/memberships/dev-cluster:
    state:
      code: OK
      description: Fleet monitoring enabled.
      updateTime: '2024-08-02T06:50:11.879892193Z'
  projects/xxxxxxxxxxxx/locations/asia-northeast1/memberships/prod-cluster:
    state:
      code: OK
      description: Fleet monitoring enabled.
      updateTime: '2024-08-02T06:50:26.543965092Z'
name: projects/qwiklabs-gcp-04-xxxxxxxxxxxx/locations/global/features/fleetobservability
resourceState:
  state: ACTIVE
spec:
  fleetobservability:
    loggingConfig:
      defaultConfig:
        mode: COPY
      fleetScopeLogsConfig:
        mode: MOVE
state:
  fleetobservability:
    logging:
      defaultLog:
        code: OK
      scopeLog:
        code: OK
    monitoring:
      state:
        code: OK
  state:
    updateTime: '2024-08-02T07:01:32.332236528Z'
updateTime: '2024-08-02T07:01:33.115282812Z'
$ 

この状態でコンソールを確認すると、spring-appチームのページでログが確認できるようになっていました!

Cloud Workstationsによる開発環境のカスタマイズ

続いてCloud Workstationsの説明に移りました。
Cloud Workstationsは、開発者向けにマネージドなIDEを提供することができるサービスです。

チームごとにカスタマイズされた開発環境を提供するような使い方もできるため、 新規メンバー参画時の環境セットアップの手間を省くことが可能です。

Cloud WorkstationsはPlatform Engineeringの用途としても使用でき、ゴールデンパスをパッケージ化して提供できます。

ここで、ユーザーストーリーについての補足説明が入りました。

上述の通り、提供した道路を開発者のニーズに合わせて進化させることもPlatform Engineeringの大事な役割です。
その役割を果たすためにも、ユーザーストーリーを考えることを推奨するとのことでした。
(以下はユーザーストーリーの記載例です)

確かに開発者の皆さんが実際にどう思っているかという観点は、開発者の生産性向上にかなり影響してきそうな部分です。
Platform Engineeringに限らずとも、ユーザーストーリを意識するということは重要だと改めて感じました

ハンズオンパート:Cloud Workstationsを実際に作って使ってみる

ハンズオンパートではws-spring-devという名前のワークステーションを作成しました。
作成が完了すると「マイワークステーション」に環境が表示されますが、これが開発者に提供するIDE環境そのものになります。

ワークステーションひとつひとつが、開発者に提供されるノートPCだと思うとイメージがしやすいと思います。

ワークステーションを起動すると、ブラウザ上でIDE環境が表示されました!

ローカル端末でIDEを使うのと同じ感覚で操作でき、IDE上でアプリケーションのプレビューすることも可能です。

プログラムの紹介

セッションの最後に、GKEを使用したPlatform Engineeringの支援をするプログラム「Platform Engineering Jumpstart」についての説明がありました。

サービスだけではなくサポート体制も充実しているようですので、Platform Engineeringでお困りの方は検討してみると良さそうです。

さいごに

GKE EnterpriseとCloud Workstationsを導入することで得られる効果を実感できるセッションでした。
Platform Engineeringについての説明もあったので、あまり馴染みのない自分にとっても理解しやすい内容となっていたと思います。

GKE Enterpriseは、コンソールからKubernetesの中身を触ることができるので、非常に管理がしやすくなりそうだと思いました。
実際の組織とチームを合致させることで、かなり大きな効果がありそうだと感じました。

Cloud Workstationsについても、地味に手間がかかる環境準備を格段に楽にしてくれそうなサービスだと感じました。

Google Cloudは開発者体験を重視しているとよく言われますが、どちらもそのことを具現化してるサービスだと感じました。

なお、似た内容とおもわれるセミナーが9月に開催されるようです。
https://cloudonair.withgoogle.com/events/gke-basic-handson-q3

ご興味のある方はぜひ参加してみてください!

ちなみに、ハンズオンセッションの会場の椅子にはクッションが設置されていました。

ブレイクアウトセッションとは違いハンズオンセッションは2時間半もあるので、非常にありがたかったです笑
Google Cloudさんのホスピタリティに感謝です。