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

Title
Creating a Development Environment with These Key Feature
以下の特徴を備えた開発環境を用意したい。
- Reproducible
- Disposable
- Isolated
- Collaborative
Reproducible
OS、アーキテクチャ、アプリケーション…、様々な違いを吸収するために開発環境の構築手順は煩雑になりがちだと思う。何らかの方法で抽象化してテキストで開発環境を表現できることが望ましい。
Disposable
たとえ開発環境をコンテナに抽象化しても、その開発環境を使い続ければステイトフルになる。もし、開発環境をタスクごとに使い捨てることができれば、それは開発環境をステイトレスに保つための十分条件になる。開発環境をステイトレスに保ち続けることは、Reproducible であるための必要条件だと思う。
Isolated
それぞれの開発環境を同時に利用できるが、だからといってお互いに干渉できないようになっていてほしい。
Collaborative
チームメンバーがひとつの開発環境インスタンスの中で作業できる方がよい。Disposable な開発環境はタスクに閉じていれば存分にステイトフルにしたい。開発環境をタスクに紐づけて、人に紐づけないようにしたい。

Cloud という選択
その手段としてクラウド開発環境(cloud-development environments)に移行したいと思っている。
VPS
- AWS Lightsail
- Vultr
on-demand
- Github Codespaces
- Nimbus
- Gitpod

local という選択
この大部分はコンテナに抽象化することで解決できると思う。開発環境をコンテナの定義として記述することで、再現性のある方法で開発環境を構築できる。
dind (docker-in-docker) のような抽象化をすればいいが、コンテナの管理に気をとられすぎるかもしれない。