こんにちは。クルーズ株式会社の鈴木です。
「SHOPLISTの脱レガシーシステム」の記事も4回目となりました。
私の所属する技術統括部の担当業務の一つに各開発部に所属するエンジニアに対する技術支援があり、その中でもローカル開発環境は昔から問い合わせが多く悩みの種でした。
今回は、インフラ構築のコード化の恩恵として、ローカル開発環境の構築ができたという話を共有していこうと思います。
当社のローカル開発環境の変遷
~2011年頃 無し。
漢らしく開発環境、場合によっては直接本番環境を直接修正していた時代でした。
~2014年頃 XAMPP利用時代
クライアントPCのOS上にXAMPPを入れて開発に必要なミドルウェアを動かしていた時代でした。
OSもですがミドルウェアバージョン、ディレクトリセパレータなど、いろんな部分で本番環境とは微妙に異なり、結局開発環境以降の環境と挙動が違う、またMacユーザに対して、オフィシャルでサポート無く、各開発者はMAMPか自分でミドルウエアを入れていた。
~今まで Oracle VirtualBox利用時代
ローカル上に仮想環境を用意して、その上にゲストOSとしてサービスで利用しているものと同じOS/ミドルウェアを動かしています。
うる覚えですが当時VMware Fusion とOracle VirtualBoxの2製品両方を検証して、ホストOSからコマンドライン上で操作できるものが多いという理由でOracle VirtualBoxを選定した記憶があります。
ローカル開発環境における問題点
技術的な話というよりは、新規に参画する開発者が一番初めに環境構築を行う際に作業時間がかかる、構築中問題が発生した際にトラブルシュートに時間がかかるという問題がありました。
これはVirtualBoxの仮想ネットワーク設定、ゲストOS起動後にゲストOS上で行うWebサーバ上のアプリケーション部分の開発環境の構築など、手作業部分がそれなりの作業量があるのと、とはいってもこの分野は全くインフラを触ってきてない開発者から見るとトラブルが発生した際に自分自身でトライアンドエラーを行い正常に動作するまでもっていくのにそれなりに時間がかかってしまい、運が悪いと1日から2日ローカル開発環境の構築にかっててしまう状況でした。
vagrantとansibleで構築をコマンドライン化する
インフラのコード化を現在進めており、仮想環境固有の部分をvagrantで構築することで、開発環境構築簡素化できるんじゃないかという話が部内で出て以降、このやり方で行っています。
導入してみて
個人的には「構築すげえ楽になったじゃん!」という感想です。
これまで、忙しい時に限ってPCが壊れて環境作り直すなどしていたため、コマンド2回実行でOKなこと、1時間弱待つだけで環境構築が完了できるのはものすごく魅力に感じています。
一方、当たり前といえば当たり前なのですが、ホストOS側に入れるvagrantなどのソフトウェアのバージョン管理やインストールや設定漏れがあるとvagrantコマンドが正常に動作しない、クラウド時代に慣れすぎて1時間ですら長く感じるときがあるなど課題もあり、前者はPowerShellなどでホストOS側でのインストール作業の自動化、後者はゲストOSの構築方法の変更や、初回にCloneしてくるソースコードおよび画像リソースの最適化を今後していき改善していきたいと考えています。
-------------------------------------------------------------------------------------------------
※2020年の内容を記事にしており、2020年11月以降PHP7サポート切れをはじめとした脆弱性リスクへの対処は完了しております。