開発環境をAmazonEC2に移した結果、僕のVimはもうしゃべらない

AWS運用自動化サービス「Cloud Automator」
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。

こんにちは、新規開発チームの千葉(@kachina_t)です。
現在、OAuthを使い認証処理を外部アプリで実施するアプリの開発をしています。

ちょっとややこしいのですが、このプロジェクトでは
開発環境で2つのRailsアプリケーションを起動する必要があり
MacbookAirのファンに限界を感じていた私は
開発環境をEC2に移行し、自マシンに少しでもラクをさせてあげられないか。
と思い立ちました。

今回の投稿はタイトルのとおり『開発環境をEC2に移行する!』です。

それではさっそく

移行前の環境について

まず、移行前の環境を紹介したいと思います。
わたしはアプリケーションをいっぱい起動するのがキライなのでターミナルでできることは
そちらでヤルことにしています。

これにより、常時起動しているアプリは【ブラウザ】と【ターミナル】のみとなります。
具体的な作業環境は以下のイメージとなります。


applications

移行のイメージ

先程の環境から、Rails開発部分をEC2インスタンスへ移行したいと思います。


new_applications

やったこと

  • EC2インスタンスの起動
  • Yumパッケージのインストール(zsh、MySQL、Vim、Git)
  • Rails実行環境の構築
  • zsh設定ファイルの転送
  • vim設定ファイルの転送
  • ssh秘密鍵ファイルの転送(GitHub認証用)

とくに説明の必要がないくらい簡単な作業なので詳細は割愛するのですが
なんと、これだけで移行が完了してしまいました。

その後

現在、下記の構成に移行して1ヶ月近く経つのですが
お察しのとおり開発業務には全く支障はありません。


after_applications

費用について

この環境では『Smallインスタンス』を利用しています。

1時間あたり『$0.088』、24時間使っても約200円とお手頃なのですが
1ヶ月起動しっぱなしだと、チリツモで6,000円近くの費用がかかることになります。
とてもじゃないけれど安くない金額ですね。

これに対する最善策が、なんとCloudworksにありました。
Cloudworksでは【スケジュールジョブ】機能が提供されており
指定時間/曜日にEC2インスタンスを、ストップ/スタートすることが可能です。
Management Consoleにありそうな機能なのですが、実はない便利機能なのです。

これを利用して、今回は『毎日21時に自動的にストップする』設定をしました。
就業時間が10:00〜19:00なので『業務開始時に手動で起動』 → 『21時に自動的にストップ』とし
1日あたり約100円となります、加えて休日は起動しないので月20日間の利用となります。
これで、2,000円/月まで利用料が下がりました。

Railsアプリ1つ程度であれば『Microインスタンス』で十分なのでだと思うので
600円/月まで抑えることも可能です。

Cloudworksって本当にとっても便利ですね!

まとめ

まず、チャレンジして気付いたのですがGVim、IDE等を利用しない自分の場合は
【Rails実行環境】【Vim】【Git】の3点があれば、どこでも開発ができるみたいです。

そして、空きメモリが常に300MB以下、ファンが回りっぱなし、火傷するほど熱かったMacbookAirは
今はヒンヤリ静音、1GB強の空きメモリで大物の風格です。

ただ、ひとつだけ“できなくなったコト”がありました。
先日の横浜Vim勉強会で教えてもらった『shaberu.vim』が使えなくなってしまったことです。。。

これは日本語版Siriの声で、自分のVimを喋らせるプラグインで
勉強会の時にインストールして、みんなで遊んだのですが
職場でVim起動時に『おかえりなさいマスター』ってしゃべらせてみたら
なんだかとっても恥ずかしい気分になり、それ以降使う機会を無くしていました。

そして、わたしはエディタに声を求めない側の人間だと気付いたので
当面は困るコトがなさそうです。

おまけ

外部に開発環境を持つことは、ローカルマシンのリソースを開放する他にもメリットがあります。
Rubyであればrbenv、rvmを利用することで環境管理が容易ですが
PHP等を使っているのであれば、プロジェクト毎にインスタンスを作成することで
本番環境と開発環境の、ライブラリのバージョンを完全に一致させておく事が容易です。

使っていない期間は、インスタンスをAMI化しておくことで
非常に低コストで開発環境を保管しておくことが可能です。

以上、Cloudworksって本当にとっても便利ですね!ってお話でした。

AWS運用自動化サービス「Cloud Automator」