Cloud Workstations で構築する SQL 100本ノック環境 🏏
こんにちは。Enabling team の山本です。
みなさんは花粉症対策されていますか🌲?
「フラクトオリゴ糖」が花粉症に効果があると業務委託メンバーに聞き、自分の体を利用した実験を始めました。
次回の記事で、「フラクトオリゴ糖」の経過を書きたいと思います。
現時点では、キマってるような気がします 🤩✨
まえおきはこのくらいにして、今回は Cloud Workstations(Workstations)について書きます。
ご存じのとおり、Workstations は、Cloud 上に開発環境を構築できるサービスです。(記事作成時点では Preview です)
4月から始まる「新入社員研修の開発環境(SQL 100本ノック環境)」を構築するため、Workstations の設定を見ていきます。
新入社員研修の開発環境(SQL 100本ノック環境)
- 小売の現場を変革するためには、データを利用した意思決定が不可欠です。データの利活用の第1歩として、SQL の使い手になってもらう必要があります。
- 弊社の Engineer の端末は、Mac と Windows が混在しています。
Windows は、ソフトウェアのインストールが統制されており、自由にソフトウェアをインストールすることができません。
こういった理由から、Engineer の端末環境に依存しない開発環境を必要としていました。
要件は、以下のとおりです。
- 再現性。データが壊れても何度でも作り直せる。
- 期間限定。研修後は必要なくなる。
- セキュリティ。リモートワークで研修を進める期間があるためリーモートでログインできる。
Cloud Workstations
Workstations は、Cluster 上の Node に IDE が preinstall されたサービスです。
- 使わない時は、停止できる。
- 一定時間未使用の場合は自動で停止される。
- 状態は Disk に保持される。
例えるなら Kubernetes の Deployment に remote でログインし操作するような環境です。
そこが Google の Security で保護されている。
今回、Workstations を新入社員研修の開発環境として運用してみることにしました。
課題1:Devcontainer(Remote Container)はどうする?
環境を構築し始めて、問題点に気づきました。
それは、Devcontainer が使えないことです。
SQL の研修として、Devcontainer の Docker(PostgreSQL)を使用するつもりでした。
しかし、Workstations で Devcontainer を使用できないようです。
そこで改めて Docs を読むと、こう書いてあります。
VPC 内の実際の環境でコードを実行する
Cloud Workstations は VPC 内で実行可能なため、コードをプライベート ネットワークとステージング環境で開発して実行でき、サービスをエミュレートする必要はありません。
要するに、VPC に接続されているものであれば、Workstations から接続できる。
これを利用できれば、Devcontainer のようなことができます。
実際に、Code-OSS の Terminal から Compute Engine Instance に Ping してみると、以下のとおり通信できることがわかります。
user@workstation-danny:~/sitemap-submit$ ping 10.128.0.4
PING 10.128.0.4 (10.128.0.4): 56 data bytes
64 bytes from 10.128.0.4: icmp_seq=0 ttl=63 time=3.905 ms
64 bytes from 10.128.0.4: icmp_seq=1 ttl=63 time=0.430 ms
64 bytes from 10.128.0.4: icmp_seq=2 ttl=63 time=0.444 ms
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.430/1.593/3.905/1.635 ms
user@workstation-danny:~/sitemap-submit$
検証1
Workstations の PostgerSQL Tool で接続できるかを検証します。
今回は、Compute Engine に PostgreSQL をインストールします。
- Compute Engine で Instance を起動する。
yamamoto_daisuke@instance-1:~$ sudo apt update
- PostgreSQL を Install する。
yamamoto_daisuke@instance-1:~$ sudo apt install postgresql yamamoto_daisuke@instance-1:~$ psql --version psql (PostgreSQL) 13.9 (Debian 13.9-0+deb11u1)
- PostgreSQL の User/Password を設定する。
yamamoto_daisuke@instance-1:~$ sudo passwd postgres yamamoto_daisuke@instance-1:~$ su - postgres postgres@instance-1:~$ createuser --pwprompt --interactive sample1 postgres@instance-1:~$ vi /etc/postgresql/13/main/postgresql.conf postgres@instance-1:~$ vim /etc/postgresql/13/main/pg_hba.conf postgres@instance-1:~$ exit yamamoto_daisuke@instance-1:~$ sudo systemctl restart postgresql yamamoto_daisuke@instance-1:~$ systemctl status postgresql
- Code-OSS に PostgreSQL Tool の extension を追加する。
- Code-OSS から PostgreSQL に接続する。
- 接続成功❗️❗️❗️
まとめ
Cloud Workstations について書きました。
途中、Devcontainer 問題で行き詰まりかけて焦りました 💦
ちなみに、僕が新入社員研修に関わるのは、今年が初めてです。
新入社員研修は、彼ら・会社・僕たちの未来に関わることですので、本気で向き合う必要があると思っています。
やれることは、100%取り組んで、また、来年の新入社員研修に活かせればと思います。
Discussion