先日リリースされたDocker Desktopの4.27.0で Synchronized file shares
という新たなファイル共有システムが導入されました。
これはDocker社が買収したMutagenというファイル同期ツールで実装されていて、Dockerを使用した開発でボトルネックになりがちなファイルアクセスが改善されることが期待されます。Lenetのサービスは主にPHPで実装されていてファイルアクセスが多数発生するため、開発体験が改善されるかもしれません。
設定
早速 Synchronized file shares
の設定をしていきます。
公式ドキュメントを参照しながら設定していきます。
GUIからマウントするディレクトリを指定するだけで設定が完了するため簡単ですね。同等のことをMutagenで実行する場合はインストールやmutagenコマンドの実行などを行う必要があり全エンジニアの開発環境に導入するには少しハードルがありましたが、これなら簡単に導入できそうです。
ドキュメントには書いていませんが、k8sのPodに対するVolume Mountでは使用することができないようです。
Lenetの開発環境にはk8sを使用した環境とDocker Composeを使用した環境がありますが、現時点ではDocker Composeを使用した環境にしか適用できないようです。これは少し残念ですね。
パフォーマンス比較
Lenetの開発環境には開発でよく実行する処理を模倣したベンチマークが実装されているため、今回はその中のPHPが実行される項目を比較していきます。
ベンチマークにはエンドポイントへのアクセスやユニットテストなどがあり詳細は公開できませんが雰囲気だけでも感じ取って貰えれば幸いです。
ベンチマーク内容 | 従来のVolume Mount | Synchronized file shares |
---|---|---|
とあるエンドポイントへのアクセス | 0.71s |
0.31s |
とあるDBアクセス多めのユニットテスト | 4.0s |
3.6s |
php artisan inspire |
0.75s |
0.54s |
composer dump-autoload |
12.8s |
4.56s |
多数のPHPファイルが読み込まれる処理ほど大きな短縮が見られます。反対にファイルアクセスが少ない単純な処理やDBへのアクセスにおいては変化が少なめになっています。
大小の差はありますが全ての項目において速くなっているため、利用する価値はありそうです。
おわりに
利用言語のPHPがメインの処理であれば大幅に速くなることがわかりました。
設定がDocker DesktopのGUIからできDocker Composeの設定ファイルを変更する必要がないため、開発環境の起動処理を複雑にすることなく使いたい人だけが追加の設定で有効にできるところも開発環境を管理する側からすると良いポイントです。
Lenetの開発環境では任意のオプションとして利用していきたいと思います。
ホワイトプラスでは、ビジョンやバリューに共感していただけるエンジニアを募集しています!
ネットクリーニングの「リネット」など「生活領域×テクノロジー」で事業を展開している会社です。 どんな会社か気になった方はオウンドメディア「ホワプラSTYLE」をぜひご覧ください。
オンラインでカジュアル面談もできますので、ぜひお気軽にお問い合わせください。