こんにちは、あの方と呼ばれるものです。名探偵コナンが好きすぎて、そう呼ばれています。今月に入り来春公開予定のトレーラーが公開されてテンションは上がっています。
そういう理由で遅れてしまっていますが、Catallaxy Advent Calendar 3日目を担当します。テーマは2021年後半のCloud IDE。
クラウド上の開発環境が流行っています。きっかけはM1マシン上のDockerと言っても過言ではありません。
Catallaxyとクラウド開発環境
2021年の春ごろにGCPを多く使うようになったので、全エンジニアレベルでGCE VMインスタンスを使うことになりました。これは当社がGCP for Startupsというスタートアップ支援プログラムを受けるようになったことも影響しています。それ以前は個人のPC上に構築していたエンジニアが多かったように思います。
しかし時代は2021年。AWSによるCloud9の買収から5年(AWS Cloud9)もの月日が流れています。さらにGitHub Codespacesも今年の夏にGAリリースしました。我々もそろそろ開発者体験をよくしたいと思い、重い腰を上げることにしたのです
GitHub Codespaces
当社のOrgでもBetaプログラム期間中に申し込んでいたのですが、ベータ利用申請して割とすぐに利用できるようになりました。当社のOrgで参加承認されたのがGAの数日前だったようです。1ヶ月の無償期間中があったので、ちょうど開発中であった新規プロジェクト(Repo)で1個目のCodespaces対応を急ぎ目で進めることにし、夏季休暇などがあったものの、8月19日に完了することができました。
Codespaces環境では GIT_*
環境変数を上書きしてしまっているようなので、コミットが本人のものに紐付きにくかったりして使いづらさはある(そしてGitのプロとしてはどうなのかなとも思う)ものの、CodespacesインスタンスサイズをCPU/メモリで4種類選べるのはコストとパフォーマンスのバランスを取るのに最適な機能だなと感じました。
Gitpod
元々利用していたのですが、GitHub CodespacesがGAしたタイミングで価格改定があり、無償ユーザーでも月50時間までプライベートRepoで利用することができるようになりました。これによりチーム開発で一般的に使われるGitHub private repoの開発に課金することなく利用できるようになりました。1ユーザーあたり50時間なので、フルフルでコードを書く人は上限に達してしまいそうですが、非エンジニア職、PdM、では枠内に収まる人も多いのではないでしょうか。上限に達してしまった場合でも、月25ドルの課金で無制限に利用できるのはありがたいと思います。
VSCodeをホストする側で利用されるコンテナイメージとしてGitpodが標準として用意しているものがあり、何も指定されないデフォルト時にはgitpod/workspace-fullが利用されます。
Gitpod導入しようとしたRepoではデータストアにMySQLを利用していたため、ベースイメージとしてgitpod/workspace-mysqlを利用することにしました。 .gitpod.yml
に1行書くだけなので、書き方の簡単な説明は .gitpod.yml Reference に譲ります。
一時期、チーム内で gitpod/workspace-mysql
イメージを使った場合にワークスペースのstop/startを実行するとInnoDBのデータが破損してMySQLが立ち上がらない問題が発生していました。Gitpodインフラ側(Kubernetesの)でstop時にInnoDBのデータが書き終わらないケースがあったのかもしれません。 my.cnf
に innodb_force_recovery = 6
を書いて対応することにより暫定対応する日々が続いていましたが、1〜数週間している間に自然に解消されるようになりました。Gitpod Cloud側でKubernetes Persistent Diskの処理が改善された可能性はあります。
今後の課題
データリージョン
今日紹介したGitHub CodespacesとGitpod (Cloud)では日本国内で利用する場合はそれぞれAzure asia-pacific-southeast (Southeast Asia)またはGCP us-west1 (Dalles, OR)に接続することになります。
国外へのデータ(ソースコード)持ち出しができない場合はそもそも利用できませんし、レイテンシーが十分に低くないと開発者体験が悪くなってしまいます。今後、日本国内リージョンで利用できるといいなと感じます。
離退職者のworkspaces管理 (Gitpodのみ)
GitHub CodespacesはGitHub Orgのメンバー管理と同一になるので、気にする必要はないのですが、GitpodはGitHubとは別の会社のサービスとなり、アカウント管理も独立しています。そのため、Orgへのメンバー追加・削除を個別にやる必要があります。今後、Gitpod Team planでSAML, SCIM対応がされるといいなと感じています。SAML対応については過去にイシュー化されたことがあるようですが、Gitpodチーム側でPBIに積まれた雰囲気はありませんでした。
おわりに
Catallaxyで試し始めているクラウドIDE・クラウド開発環境について、ざざざーと紹介しました。
この記事で挙げたように(ただしクラウド開発環境に限らない)、Catallaxyではバックエンドおよびフロントエンドの開発環境を改善しつつ、開発を進めていきたいエンジニアの採用を全力で行っています。よろしければ、以下の要項をご覧ください。
明日Advent Calendar4日目は妖精さんによるCloud Runです。