PHP 5からPHP 7への移行で、Tumblrはレイテンシが半分、CPU負荷も半減。テストツールでPHP 7への移行に問題ないかをチェック
PHPの10年ぶりのメジャーバージョンアップとして昨年12月に登場した「PHP 7」は、PHP 5と比べて2倍以上の実行速度を実現するとリリース前からPHPの生みの親であるRasmus Lerdorf氏自身が説明してきました。
PHP 5からPHP 7へと内部システムのアップデートを行ったTumblrはその成果をブログで発表し、たしかにPHP 7のへ移行したことで実行速度が2倍になったことを裏付けています。
静的解析と自動テストでPHP 7への移行に問題がないかを確認
Tumblrが公開したブログ「Tumblr Engineering — PHP 7 at Tumblr」によると、Tumblrがその内部で稼働しているシステムをPHP 5からPHP 7へ移行しはじめたのは2015年の秋。そして実際に本格的な移行作業へ着手したのが今年、2016年の8月の終わりだと説明されています。
本格的な移行作業に着手する前に、TumblrはPHP 7への移行で問題が生じないかを、テストによって十分に検証していました。
検証はPhanと呼ばれるツールによるコードの静的解析と、継続的統合によるテストの実行によって行われています。ブログからその部分を引用します。
Phan. In this project, we used it to find code in our codebase that would be incompatible with PHP 7. It made it very easy to find the low-hanging fruit and fix those issues.
今回の移行プロジェクトでは、Phanと呼ばれるツールを用いてPHP 7に対応していないコードがわれわれのコードベースに含まれていないかを見つけることにした。これは懸念される部分の発見とその修正を非常に簡単にしてくれた。
We also have a suite of unit and integration tests that helped a lot in identifying what wasn’t working the way it used to. And since normal development continued alongside this project, we needed to make sure no new code was added that wasn’t PHP 7-proof, so we set up our CI tasks to run all tests on both PHP 5 and PHP 7.
また一連のユニットテストと統合テストも行うことで、動かない部分を特定することの大きな助けになった。また、通常の開発作業とこの移行プロジェクトを並行して行っていたために、新しく開発したコードもPHP 7できちんと動くかどうか確認する必要があった。そこで、CI(継続的統合)のタスクですべてのテストをPHP 5とPHP 7の両方で実行したのだ。
レイテンシは半分に。CPU負荷も半分に
こうしてPHP 7への移行に成功したTumblrは、性能向上と開発の容易さという2つのメリットを得たと説明しています。
Almost immediately saw the latency drop by half, and the CPU load on the servers decrease at least 50%, often more.
すぐさまレイテンシが半分になり、そしてサーバのCPU負荷も少なくとも50%か、しばしばそれ以上に減少した。
それを示したグラフが以下です。左がレイテンシ、右がCPU負荷。
また、PHP 7で追加されたスカラ型、リターン値の型宣言、アノニマスクラスなどの新しい構文によって、開発も容易になったとのことです。
あわせて読みたい
[速報]Visual Studio for Mac正式発表、プレビュー版も公開開始。Connect();//2016
≪前の記事
富士通、PostgreSQLをインメモリDB、カラム型DB、並列検索、独自暗号、二重化など独自強化。24時間365日サポートと長期保証の「Enterprise Postgres」リリース