バックエンド案件のXAMPPでの開発に不満を感じ、Vagrantに乗り換えるまでに試行錯誤しながらやったことの覚書になります
XAMPP の代わりになる開発環境の検討
案件で利用できるレベルの開発環境を探す
XAMPP への不満の洗い出し
- 複数案件にかかわると、複数バージョンの XAMPP をインストールする場合がある
- XAMPP がどんどん増えていって、気持ち悪い
- ディスク容量を消費する
- XAMPP に含まれないミドルウェア (PostgreSQLなど) を使う場合、別途インストールする必要がある
- 環境の起動をそれぞれ手動で行うのが手間
- Windows 用の環境構築手順しか残ってない
- XAMPP の設定を変更して利用する場合がある
- 手順書をたよりに手動で設定
- 個人の環境によって動かないことがある
乗り換え先の要件整理
- 誰でも簡単に環境構築できる
- ランニングコストがかからない
- Apache, PHP, MySQL 以外のミドルウェアも使える
- ディスク容量をあまり消費しない(再構築が簡単であれば、優先度:低)
- マルチプラットフォームである (Windows/macOSで動作する)
乗り換え先の検討
-
Docker
- 最近流行ってきてる
- 自分の周りでは、まだ本番環境でDockerが導入される流れはないので、開発環境構築のためだけの知識になってしまう
- Windows/macOS/Linuxで動く
- 新しいミドルウェアを入れる場合、Dockerイメージを作らないといけない
- 多くのDockerイメージが公開されているが、品質の問題やセキュリティのリスクであまり使いたくない
- 最近流行ってきてる
-
Vagrant
- 最近流行ってきてる
- Windows/macOS/Linuxで動く
-
Scotch Box などの構築済みBoxを使えば、ある程度の環境は簡単に用意できる
- 品質の問題やセキュリティのリスクであまり使いたくない
- 環境構築の手間を省くために、環境構築済みの仮想マシンイメージを保管、展開する必要がある
- 環境構築済みの仮想マシンイメージを作るために、インフラ構築の知識がいる
以下の理由から Vagrant に決定!
- 本番環境に近い構成が実現できる
- 得たノウハウが実際のインフラ構築に活かせる
残課題の確認
- Boxの品質の問題やセキュリティのリスク
- Boxイメージの保管、展開
安全でプレーンなBoxを確保し、案件に応じて**"自動的に"**構築すればいい (構成管理ツールの採用)
構成管理ツールの検討
以下の理由から Ansible に決定!
- 一通り触ってみて、一番学習コストが低い
- 開発が活発
- エージェントレス
- 構築するサーバに、Ansibleのエージェントをインストールする必要がないため、本番環境への導入の敷居も低い
プロトタイプの作成
ベースになるものを作ってみた
https://github.com/ohnaka0410/Vagrant-Ansible-Prototype
乗り換えの推進
自分だけ乗り換えるわけにはいかないので、他の人にも使ってもらう
導入実績を増やす
- 新規案件を中心に、プロトタイプをカスタマイズして配る
- 興味を持ってくれた人にカスタマイズの方法をレクチャーする
だれでもカスタマイズできるようにする
- Webフォームで構成をカスタマイズし、ダウンロードできるようにする (着手中)
品質の担保
以下のような、自動テストツールの導入を検討中
- serverspec
- AnsibleSpec
おまけ
- Vagrantは、ローカルの仮想マシンだけでなく、プラグインを利用してAWSのEC2などのクラウドサーバの管理もできる
- Ansibleは、リモートサーバに対して実行できるので、本番環境や検証環境にできる