Open3

クラウド開発環境を使ってみたい

piriwatapiriwata

Title

Creating a Development Environment with These Key Feature

以下の特徴を備えた開発環境を用意したい。

  1. Reproducible
  2. Disposable
  3. Isolated
  4. Collaborative

Reproducible

OS、アーキテクチャ、アプリケーション…、様々な違いを吸収するために開発環境の構築手順は煩雑になりがちだと思う。何らかの方法で抽象化してテキストで開発環境を表現できることが望ましい。

Disposable

たとえ開発環境をコンテナに抽象化しても、その開発環境を使い続ければステイトフルになる。もし、開発環境をタスクごとに使い捨てることができれば、それは開発環境をステイトレスに保つための十分条件になる。開発環境をステイトレスに保ち続けることは、Reproducible であるための必要条件だと思う。

Isolated

それぞれの開発環境を同時に利用できるが、だからといってお互いに干渉できないようになっていてほしい。

Collaborative

チームメンバーがひとつの開発環境インスタンスの中で作業できる方がよい。Disposable な開発環境はタスクに閉じていれば存分にステイトフルにしたい。開発環境をタスクに紐づけて、人に紐づけないようにしたい。

piriwatapiriwata

Cloud という選択

その手段としてクラウド開発環境(cloud-development environments)に移行したいと思っている。

VPS

  • AWS Lightsail
  • Vultr

on-demand

  • Github Codespaces
  • Nimbus
  • Gitpod
piriwatapiriwata

local という選択

この大部分はコンテナに抽象化することで解決できると思う。開発環境をコンテナの定義として記述することで、再現性のある方法で開発環境を構築できる。

dind (docker-in-docker) のような抽象化をすればいいが、コンテナの管理に気をとられすぎるかもしれない。