概要
悩み
- エンジニアMac(MacBookPro:i7,Mem16GB)が火を吹いてて辛い
- オンライ会議ソフト(zoom)や、オンライホワイトボード(miro)など、重量級のソフトCPUを食い潰すようになった
- サーバサイドエンジニア(Rails/AWS)のMacでは各種開発用サーバをdockerで動かしているが、
もともと重かったdockerと相まって笑えるほど遅い
やりたいこと
不安と期待
- 今までローカルで完結してた開発環境をリモートに切り離すにはいろいろ不安がある、
またはリモートだからこその期待がある。- 快適に開発できるのか
- 「sshでつなげてVimで開発は流石に嫌だよ? VSCode 使いたい」
- 安全に開発できるのか
- 「通信ダダ漏れとかありえない」
- 自由にどこでも開発できるようになるのか
- 「カフエとかドーナツ屋さんで仕事したい」
- 自由にどんな端末でも開発できるようになるのか
- 「旅行にパソコン持って行きたくない!!!、ipadとかスマホで仕事したい!!」
- 無駄なコストが発生しないか
- 「使ってない月に、ン万円以上コストがかかるのは生理的に無理」
- 快適に開発できるのか
計画
フェーズ分け
-
いきなり全部やるとしんどそうだったので、以下のようにフェーズ分けしてます。
この記事は
- 現在進行形の「ここはこうしよう」、「ここはこうしようかな」というメモを晒している記事です。
構成設計・調査メモ
- 選定した内容、選定した意図、簡単な比較、設定内容など
構成: Phase1
- 概要
- 普段の開発環境から、開発用サーバ(docker)とVSCodeのCPU負荷をEC2に追い出すことができた
- コスト: 月$20ほど
- インフラ: 主にAWS(Route53,EC2など)を使用
- IDE: VSCode Remote Development
- 独自ドメイン
- 通信を暗号化(SSH/HTTPS)
リモートサーバ
-
必須条件
- SSH可能 -> Linux
- 公開できる -> ドメイン繋げられる(HTTPS)
-
歓迎条件
- コストを抑えられる、抑える手段がある
-
結論: AWS EC2
* 必要なときは性能のスケールアウトが可能
* ただし一旦停止は必要
* spot instanceでコストを抑えられる
* vCPU:2,Mem:4GB (t3.medium)で 月大体$15ほど
* (インスタンス稼働コスト+ストレージなど諸費用)
* この記事を書いた人が慣れているため
* 仕事でAWS使ってる人多いすよね。。。 -
他の選択肢
- クラウド系
- GCP,Azureなど
- VPS系
- さくらのVPSなど
- クラウド系
-
設定内容
-
security groupの設定
- HTTPS: 「マイIP」で予め決まった拠点(オフィス、家など)のIPアドレスを設定する
- SSH: 「マイIP」で予め決まった拠点(オフィス、家など)のIPアドレスを設定する
-
security groupの設定
リモート開発環境
- 必須条件
- コードの編集・実行ができる
- クライアントとサーバが暗号通信すること
- 歓迎条件
- プラグインが豊富で活発
- ブラウザだけで動くと尚良
- 結論: VSCode + Remote Developmentプラグイン
* VSCodeはいわずもがな2020年のサーバサイド開発のスタンダードになってるIDE
* Remote DevelopmentはSSHした先のLinuxサーバ上でIDEを実行できる機能
- 他の選択肢
- WebIDE系
暗号通信
- 必須条件
- WEBへアクセスできること(HTTPS)
- SSH
- 歓迎条件
- 手間を書けたくない
- コスト抑えたい
- 結論
- freenom(独自ドメイン) + Route53(DNS) + Caddy(HTTPS Webサーバ)
-
freenom: 無料ドメイン
-
特定のTLDなら無料でドメインが取れる
-
Ref: freenomでドメインの取得
1 .tk オーストララシアにあるニュージーランドの領土であるトケラウ
2 .ml マリ
3 .ga ガボン
4 .cf 中央アフリカ
5 .gq 赤道ギニア
-
-
Route53
- ドメインのDNS管理
- 実質ほぼ無料
-
Caddy
- Web サーバー
- ドメインがあれば自動でHTTPS通信になる
- basic 認証設定可能
-
freenom: 無料ドメイン
- freenom(独自ドメイン) + Route53(DNS) + Caddy(HTTPS Webサーバ)
- 他の選択肢
- VSCodeのポートファワーディング
- Ref: VSCode Remote Development + SSHトンネルで安全なWebアプリケーション開発
- 開発をポートフォワードが自由に行える環境:PCだけで行うのであれば構わないが、
iPadなどのモバイル端末ではこの手法が使えない
- AWS ALB + AWS Route 53
- Route53+ACM+ALB+EC2でHTTPS接続するまで
- 高い: ALBだけで月$25ほど
- VSCodeのポートファワーディング
[WIP] VPN
- 必須条件
- クライアントの通信内容を全て暗号化したい
- 新しい場所:新しいIPから接続するときに、ファイアウォール(SecurityGroup)をいちいち追加・削除したくない
- 歓迎条件
- 動作・通信速度が早い
- スマホ、タブレットなど様々な端末でも接続可能
- 例: iPad/android/ChromeOS
- 調査
- wireguardが良さげ
- 動作・通信が早く、インストールが簡単らしい
- Mac/Windows/Linux/iOS/Androidに対応
- https://www.wireguard.com/install/
- ChromeOSはAndroid用アプリが使えるらしい
- wireguardが良さげ
[WIP] いつでも開発するために
-
必須条件
- Windows/Mac/ChromeOS/Android/iOSで稼働すること
-
歓迎条件
- ブラウザのみで稼働する
- OculusQuestとか独自カスタマイズ系のOSでも開発できると嬉しい
- ブラウザのみで稼働する
-
調査中
- VSCode Onlineに「開発環境サーバ」をSelf-hosted環境としてつなぐ
-
「Visual Studio Online」をSelf-hosted環境で使う
- △: サーバにVS Code自体のインストールが必要
- デスクトップ環境(Gnome/LXDE)のインストールが必要
- △: VSCode Online(codespaces)が GitHub Codespaceに統合されるようで、先行きがよくわからない
- △: サーバにVS Code自体のインストールが必要
-
「Visual Studio Online」をSelf-hosted環境で使う
-
code server
- サードパーティ製のVSCodeをWebサーバ化したもの
- △: 使えるプラグインが限定される
- Visual Studio Intellicodeとか使えない
- VSCode Onlineに「開発環境サーバ」をSelf-hosted環境としてつなぐ
[WIP]起動していないときにサーバを止める
- herokuみたいなことをしたい
- 「踏み台サーバ」へSSH portfowardingの接続要求が発生
- 認証完了
- 「踏み台サーバ」は「開発環境サーバ」を起動する
- 30秒ぐらい?
- 接続する