はじめに
イベントや普段の業務などで開発環境をクラウド上に用意したいなと思うことはありませんか?
そんなときに使えるOSSであるCoderというサービスについて紹介します。
私もとあるイベントで利用しましたが、とても便利でした!!
これまで、私はAWS Cloud9
を使っていましたが、VSCodeが使えないという点で非常に不便を感じていました。Coderは私が求めていたAWS上にVSCodeが使える環境を作りたい!という要件にぴったりでした。
Coderは以下の特徴があります。
- 好きなクラウドサービスを選択できる(AWS, GCP, Azureなど)
- IDEが選べる(VS Code, JetBrainsなど)
- Terraformでインフラを定義できる
- 無料で利用できる(クラウド利用料のみ、一部機能は有料エンタープライズ版のみ)
ここまで聞いてGitHub Codespaces
使えばいいじゃん!と思った人がいると思いますが、AWSに請求をまとめたい
、なるべく安く済ませたい
という理由でCoder
を選択しています。
CodespacesとEC2を利用した場合ではおよそ50%のコストで利用できるので複数の環境が必要な場合にはかなり節約できます。
* 性能が同じとは限りません
Cores | RAM | Codespaces | EC2 |
---|---|---|---|
2 | 4 | $.18 | $0.0432(t4g.medium) |
4 | 8 | $.36 | $0.1712(c6g.xlarge) |
8 | 16 | $.72 | $0.3424(c6g.2xlarge) |
16 | 32 | $1.44 | $0.6848(c6g.4xlarge) |
32 | 64 | $2.88 | $1.3696(c6g.8xlarge) |
使い方
Coderは様々なクラウドサービスで利用できますが、AWSでの使い方について紹介します。
詳細は公式サイトに詳しく記載されているので簡単に紹介します。
1.Coderが提供しているAMIからインスタンス(管理サーバー)を起動する
Coderを使うためには、管理サーバーが必要になります。
ブラウザで管理サーバーに接続し、開発環境を立ち上げたりアクセスできるユーザーを管理したりすることができます。
2.管理サーバーにログインする
3.テンプレートを作成する
デフォルトでDocker, AWS EC2, AWS ECSなどのテンプレートが用意されています。今回はEC2を選択しました。
4.ワークスペースを起動する。
ワークスペースが実際に開発を行うための環境になります。
5.開発環境に接続する
起動が成功するとVSCode Desktop
とcoder-server
が選択できるようになります。
VSCode Desktop
をクリックすると画像のようにVSCodeが起動されて開発環境に接続できます。SSHで接続されているのでセキュアに通信することができます。
もちろん起動した開発用サーバーにも接続できます。
coder-server
を選択するとブラウザ上でVSCodeが起動できます。一部機能制限はありますが、快適に使うことができます。
こちらはOSSの提供元が開発しているパッケージが使用されています。
メリット、デメリット
冒頭でも少し触れましたが、改めてCoderのメリットとデメリットについて紹介します。
メリット
好きなクラウドサービスを選べる(オンプレも可)
AWS, GCP, Azureの主要なクラウドサービスに対応しており、公式サイトに詳しく使い方が紹介されています。
また、クラウドサービスではなくてもオンプレのサーバーを用意してDocker, Kubernetesで構築するなどいろいろな選択肢があります。
環境をterraformで自由にカスタマイズできる
今回はAWS EC2
を利用するテンプレートを使いましたが、これらのテンプレートファイルはすべてterraformで記述されています。今回利用したテンプレートは以下のURLで閲覧できます。
例えば、startup_script
(サーバー起動時に実行するスクリプト)を編集してライブラリのインストールを行ったり、EC2にIAMロールを追加してアクセス権限を増やしたりと自由にカスタマイズできます。
startup_script = <<-EOT
set -e
# install and start code-server
curl -fsSL https://code-server.dev/install.sh | sh -s -- --method=standalone --prefix=/tmp/code-server --version 4.11.0
/tmp/code-server/bin/code-server --auth none --port 13337 >/tmp/code-server.log 2>&1 &
# ここにライブラリインストールを追加
EOT
エディタを自由に選択できる
VSCode、JetBrainsなど複数のIDEに対応しています。
管理画面が見やすくてわかりやすい
管理画面は非常に操作しやすく、かなり使い勝手が良い印象です。
管理画面にログインできるユーザーも追加、削除できるので非常に便利です。
デメリット
準備、設定に手間がかかる
カスタマイズがいろいろできる反面、管理用サーバーの構築、テンプレートファイルの作成などに準備が必要です。
そこまでこだわりがない場合にはAWS Cloud9
やGitHub Codespaces
を使うのが良いと思います。
小規模の利用には向いていない
セルフホスト型なので、管理サーバー1台、開発用サーバーn台という構成になります。
管理用サーバーにも費用がかかるので、開発用サーバーの台数が少ないと他サービスと比べてコスト面で不利になります。
料金やカスタマイズ性のメリットは規模が大きくなってくると発揮されると思うので、小規模の利用には向いていないと思います。
まとめ
クラウド上に開発環境を構築できるOSS、Coderの紹介でした。
テンプレートを一度作ってしまえば、同じ環境を複数立ち上げることができるのでイベントや普段の開発で活躍すると思います。
AWS Cloud9
やGitHub Codespaces
はイマイチだなと思っている人は使ってみてください!