3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[wip] サーバで、快適に自由にサーバサイド開発をする

Posted at

概要

悩み

  • エンジニアMac(MacBookPro:i7,Mem16GB)が火を吹いてて辛い
    • オンライ会議ソフト(zoom)や、オンライホワイトボード(miro)など、重量級のソフトCPUを食い潰すようになった
    • サーバサイドエンジニア(Rails/AWS)のMacでは各種開発用サーバをdockerで動かしているが、
      もともと重かったdockerと相まって笑えるほど遅い

develop_with_remote.mkd-Page-1 (3).jpg

やりたいこと

  • Macの負荷を下げるため、手元のMacからできるだけプロセスを外部のサーバに(AWS EC2)に投げたい。
    develop_with_remote.mkd-Page-1 (2).jpg

不安と期待

  • 今までローカルで完結してた開発環境をリモートに切り離すにはいろいろ不安がある、
    またはリモートだからこその期待がある。
    • 快適に開発できるのか
      • 「sshでつなげてVimで開発は流石に嫌だよ? VSCode 使いたい」
    • 安全に開発できるのか
      • 「通信ダダ漏れとかありえない」
    • 自由にどこでも開発できるようになるのか
      • 「カフエとかドーナツ屋さんで仕事したい」
    • 自由にどんな端末でも開発できるようになるのか
      • 「旅行にパソコン持って行きたくない!!!、ipadとかスマホで仕事したい!!」
    • 無駄なコストが発生しないか
      • 「使ってない月に、ン万円以上コストがかかるのは生理的に無理」

計画

フェーズ分け

  • いきなり全部やるとしんどそうだったので、以下のようにフェーズ分けしてます。

    • Phase1. 予め決まった拠点(オフィス、家など)から、PCで開発環境につなぐ
      develop_with_remote.mkd-Page-1 (5).png

    • Phase2. 任意の場所から、PCで開発環境につなぐ
      develop_with_remote.mkd-Page-1 (6).png

    • Phase3. 任意の場所から、任意の(自身の)端末で開発環境につなぐ
      develop_with_remote.mkd-Page-1 (8).png

    • Phase4. コスト最適化

      • ?

この記事は

  • 現在進行形の「ここはこうしよう」、「ここはこうしようかな」というメモを晒している記事です。

構成設計・調査メモ

  • 選定した内容、選定した意図、簡単な比較、設定内容など

構成: Phase1

develop_with_remote.mkd-Page-1 (5).png

  • 概要
    • 普段の開発環境から、開発用サーバ(docker)とVSCodeのCPU負荷をEC2に追い出すことができた
    • コスト: 月$20ほど
    • インフラ: 主にAWS(Route53,EC2など)を使用
    • IDE: VSCode Remote Development
    • 独自ドメイン
    • 通信を暗号化(SSH/HTTPS)

リモートサーバ

  • 必須条件

    • SSH可能 -> Linux
    • 公開できる -> ドメイン繋げられる(HTTPS)
  • 歓迎条件

    • コストを抑えられる、抑える手段がある
  • 結論: AWS EC2
    vscode_remote.png
    * 必要なときは性能のスケールアウトが可能
    * ただし一旦停止は必要
    * spot instanceでコストを抑えられる
    * vCPU:2,Mem:4GB (t3.medium)で 月大体$15ほど
    * (インスタンス稼働コスト+ストレージなど諸費用)
    * この記事を書いた人が慣れているため
    * 仕事でAWS使ってる人多いすよね。。。

  • 他の選択肢

  • 設定内容

    • security groupの設定
      • HTTPS: 「マイIP」で予め決まった拠点(オフィス、家など)のIPアドレスを設定する
      • SSH: 「マイIP」で予め決まった拠点(オフィス、家など)のIPアドレスを設定する

リモート開発環境

  • 必須条件
    • コードの編集・実行ができる
    • クライアントとサーバが暗号通信すること
  • 歓迎条件
    • プラグインが豊富で活発
    • ブラウザだけで動くと尚良
  • 結論: VSCode + Remote Developmentプラグイン
vscode_remote.png
  * VSCodeはいわずもがな2020年のサーバサイド開発のスタンダードになってるIDE
  * Remote DevelopmentはSSHした先のLinuxサーバ上でIDEを実行できる機能

暗号通信

[WIP] VPN

[WIP] いつでも開発するために

  • 必須条件

    • Windows/Mac/ChromeOS/Android/iOSで稼働すること
  • 歓迎条件

    • ブラウザのみで稼働する
      • OculusQuestとか独自カスタマイズ系のOSでも開発できると嬉しい
  • 調査中

[WIP]起動していないときにサーバを止める

  • herokuみたいなことをしたい
    • 「踏み台サーバ」へSSH portfowardingの接続要求が発生
    • 認証完了
    • 「踏み台サーバ」は「開発環境サーバ」を起動する
      • 30秒ぐらい?
    • 接続する
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?