Webアプリの開発環境について、皆さまは普段どのように用意しているでしょうか?
自分の最近の業務では、お客様に用意していただいたクラウド環境で開発していました。
クラウド環境は本番環境に近いので環境問題が起こらないメリットがあるのですが、いかんせんお金がかかるのがネックですね。
ということでマネーコストを抑えて開発をするのであれば、ローカル環境に開発環境を用意するのがスタンダードかと思います。
ローカル環境に開発環境を用意するとなると、ホントのローカルに開発環境を作るのは気が引けますね。案件が変わった場合に、依存するパッケージやライブラリが正しくインストールされているか、不要なものが残っていないか。これらを確認するのは面倒な作業です。そして確認が漏れた場合には、不要な依存関係により「本番環境で動かない?自分の環境では動きます!」といった問題が起こります。
こういった問題を防ぐために Virtual Box や VMwear などによる仮想環境(VM)、 Docker といったコンテナ環境に immutable な開発環境を立てるのが最近のデファクトスタンダードかと思います。
とくにいま流行りなのはコンテナですね。でも自分は思うんです。それは本番環境もコンテナで動かしている場合に限るのではないか、と。
たしかに本番環境もコンテナで動かしているのであれば、コンテナのみでシステムをインテグレートするのはありかと思います。
ですが、実際問題どうでしょうか?本番環境にコンテナを利用されているでしょうか?
自分としては、本番環境にコンテナを利用するのがデファクトスタンダードになるのは、もうしばらく先ではないかと考えています。
なので、今のところでは仮想環境やコンテナ環境に依存せず、ローカル環境に開発環境を用意できればベストではないか、と考えています。
ということで。この先しばらくは次のテーマに取り組んで行きたいと思います!
「Vagrant で Docker コンテナ立ち上げて Ansible でプロビジョニングして開発環境を用意しよう!」
次回は上記ツールの概要についてまとめていきたいと思います。
よしけー