PHP 5からPHP 7への移行で、Tumblrはレイテンシが半分、CPU負荷も半減。テストツールでPHP 7への移行に問題ないかをチェック

2016年11月16日

PHPの10年ぶりのメジャーバージョンアップとして昨年12月に登場した「PHP 7」は、PHP 5と比べて2倍以上の実行速度を実現するとリリース前からPHPの生みの親であるRasmus Lerdorf氏自身が説明してきました。

PHP 5からPHP 7へと内部システムのアップデートを行ったTumblrはその成果をブログで発表し、たしかにPHP 7のへ移行したことで実行速度が2倍になったことを裏付けています。

静的解析と自動テストでPHP 7への移行に問題がないかを確認

Tumblr Engineering — PHP 7 at Tumblr

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負荷。

fig

また、PHP 7で追加されたスカラ型、リターン値の型宣言、アノニマスクラスなどの新しい構文によって、開発も容易になったとのことです。

あわせて読みたい

プログラミング言語 PHP




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本