困ってたこと
弊社では人の入れ替わりも激しく、開発委託も始まり出したことで "開発環境の構築" の負荷が上がっており、その解決として、開発環境の仮想化のために Vagrant + Dockerを利用していたのですが、解消しきれず下記のような問題が上がっていました。
- Windows/macごとの環境構築手順の作成
- 環境依存による不具合の発生(M1 macでvagrantが動かないなど)
- 環境構築手順の指導
...やってられるか!!( 'д'⊂彡☆))Д´) パーン
となって、クラウドインフラ上に開発環境をおけば、コピーするだけで開発環境渡せるし全部解消するやんけ!となり、その時にチームではAWSを利用していたため、AWSのEC2で作ろうとなりました。
結論としては、開発環境をWeb上に持っていくことで当初想定していたよりも色々とメリットが多く、デメリットが少ないとなりました。もう手元の環境での開発にはもどれんっす
EC2で開発するようになって変わったこと
EC2を立てて、そこにSSHで接続しながら開発することで、上記で書いた問題点はそれぞれ解決したのですが、予想外の副次的なメリットや少しの不都合もありました。
[メリットだったこと]
- 新規環境構築が爆速(AMIコピーして一部の認証情報書き換えるだけ)
- 作業に困ったメンバーなどが発生した際に、他のメンバーが環境に直接入ってフォローできる
- 手元のPCの負荷がない
- 手元の開発環境に入れないといけない機密情報を最小限にできる
- PCがクラッシュしても安心
[デメリットだったこと]
- オフライン開発できない(今時ほぼないと思うけど、ネットが不安定だとつらい)
- 一部のツールが使えない ※
※ 詳細は後述しますが、SSH接続やポート指定して利用するツール以外で直接ディレクトリを参照するようなツールだと利用できないものがあります。
どんな使い方をしているのか?
大まかにはソースコード管理でGit、ミドルウェアは Docker で起動する構成にしています。
自分の環境では Ruby on Rails を利用することが多いのですが、VScode の Remote Development を利用してEC2上のコードを直接編集して、ブラウザなどのアクセスも VScode にてポートフォワーディングを行なってローカルポートと繋げることでWeb画面やDBを手元のツールから接続して利用しています。
参考までに上記の環境に手元のPCから接続して使用しているツールを列挙しておきます。
- VScode: エディターとしての利用とポートフォワーディングで利用
- Sequel Ace: ポート指定でDBに接続するクライアントツール
- ブラウザ: VScodeで接続したポートにlocalhostで接続して動作確認など行う。
mac上で開発していた際には、SourceTreeでGitの操作をしていましたが、こちらはsshで接続した先のディレクトリで利用する方法がわからず... VScodeのGit操作を利用するかコマンドラインから利用するようにしています。
必須の開発ツールがある場合には環境を作り込む前に接続して利用できるか確認するとよさそうです。
最後に
上記の環境を立てるまでmacを用いて開発をしていましたが、正直違和感なく開発できるなという感触です。
実際に使ってみる時にはWeb上に公開された環境になるのでIPアドレス制限など接続制限の設定も忘れずに...