はじめに
PHPアプリケーション開発中に煩雑さ感じる作業はありませんか。デバッグやパフォーマンスチューニングがもっと簡単に行えれば、楽になると思いませんか。Zend Server 8 英語版には、PHPのデバッグ、パフォーマンスチューニングに役立つ機能を多数搭載しています。これらの機能によって、煩雑に思っているデバッグやパフォーマンスチューニングの工数を劇的に短縮できます。
Zend Techは、企業やプロフェッショナル向けにスペシャルなPHP環境を提供しています。それが、Zend Serverシリーズです。開発フェイズと本番運用フェイズをサポートするために、大幅に強化されたPHP環境なのです。Zend Server 8 英語版は、インストールから30日間すべての機能が無料で利用できる評価期間があります。この期間内なら、有償利用と同じように実際にデバッグ、パフォーマンスチューニングに活用できます。開発中のPHPアプリケーションのデバッグから完成済のPHPアプリケーションのパフォーマンスチューニングまで、評価期間内なら無償で実施できます。
また、評価期間の30日を過ぎても通常のPHP環境として継続して利用できます。突然、費用が発生することはありません。安心してご利用いただけます。併せて、本稿では、評価期間が終了する際の対処方法もご説明します。
第1章 Zend Server 8 英語版が実現するPHP環境
Zend Serverが提供するPHP環境と区別するためにそれ以外をコミュニティ版PHPと呼びます。基本的にPHPコミュニティサイトからダウンロードしても、Linuxデストリビューションに付属していても、さらにレンタルサーバやCloudで提供されているPHPもバージョンが異なるだけで同一のコミュニティ版PHPなのです。
Zend Serverが提供するPHP環境は、コミュニティ版PHPをベースとして補完/強化/拡張したものです。パーソナルユースでは、PHP環境が動いてさえいれば問題ないでしょう。しかし、サービスを提供する場合には、安定稼働が重要です。異常の検出やパフォーマンスの管理など、PHP実行環境以外の機能も必要になってきます。そのようなニーズに対応するのがZend Serverシリーズです。開発者や運用管理者が楽できる有用な機能が豊富に搭載されています。まずは、Zend Serverシリーズが、どのような機能を提供するか概要を説明します。
Zend Server 8 英語版のコンセプトとコミュニティ版PHPとの違い
PHPの発案者であるRasmus Lerdorf氏は、PHPを歯ブラシに例えました。言語としてのシンプルさや手軽さを表したものですが、実行環境でも同様のことが言えます。PHP実行環境は、複雑な機能を持たないシンプルなものです。ある意味、「動けばいい」という感じといえます。一般的に、Webサーバでは、軽快に大量のリクエストを処理することを優先します。そのため、PHPコードをどんどん実行できればいいのです。
しかし、サービスの重要度が増すほど、品質維持や障害検出など運用監視が必要になります。シンプルさや手軽さを良しとするPHPには、エラーログ以外の監視機能は用意されていません。ミッションクリティカルな業務をPHPで担うには、不安を感じる方が多いと思います。
Zend Server シリーズは、強力なPHP環境を創造するプロダクトです。コミュニティ版PHPを核として、機能の強化と拡張を行っています。
「エンタープライズ向けの拡張」とは、コミュニティ版PHPに備わっていない独自の機能です。「PHPコードの非同期実行/Jobスケジュール機能」「複数サーバ間のセッション共有」「Java VMの集約」「実行結果のキャッシュ」など、いずれもコミュニティ版PHPには影も形もありません。これらの機能については、別の機会に解説します。
今回注目するのは、「デバッグ機能」「監視機能」「構築管理機能」です。PHPアプリケーションの開発から運用まで、幅広い用途で重宝する機能です。おそらく30日の評価期間があれば、十分活用いただけると思います。
PHP環境を一括管理する機能
Zend Server 8 英語版は、高機能で信頼できるPHP環境を構築するためのプロダクトです。この「信頼」とは、Zend Techが慎重にビルドしてランニングテストを行ったバイナリを使用していることを指しています。
Zend Server 8 英語版は、PHPアプリケーションを管理する機能としてDeployment(デプロイ)を提供しています。LinuxのRPMやWindowsのインストーラのような感覚でPHPアプリケーションを導入して運用できるようにしています。そして、PHPアプリケーションごとに監視の対象として、状況を個別に判断できるようにします。
PHPアプリケーションが使用するフレームワークのバージョン管理機能も提供します。例えば、同じフレームワークでもバージョンが微妙に異なる場合にプログラムではなくサーバ環境でフレームワークのバージョンを制御できるのです。Zend Server 8 英語版では、代表的なPHPフレームワークのZend Framework、Symfony、Laravelがデフォルトで利用できるようになっており、これらのバージョン管理を担います。
PHPアプリケーションとしては、Magento、Drupal、WordPress、phpBBをDeploymentでインストール/管理することができます。
自在に設定できる監視機能
監視機能の重要性を説明するため、PHPサーバの設定値max_execution_timeを例として説明します。max_execution_timeは、PHPコードの実行時間を制限する値です。PHPバージョンによっても異なりますが、デフォルトでは30秒となっています。30秒を超えると実行エラーとなるため、多くの本番サーバではかなり大きな値をセットしています。しかし、一般的にWebページの表示に30秒も待っている辛抱強い方は稀です。ほとんどの方は、同業者のサイトに去ってしまい、二度と戻ってきません。
Zend Serverシリーズでは、Monitoring(モニタ)を通じてエラーとせずに実行時間の長いPHPコードを検出できます。max_execution_timeは、サーバ全体の設定値です。Zend Server 8 英語版では、Deploymentによって導入されたPHPアプリケーションごとに異なる値で監視できます。
Monitoringが異常検出した情報をEvent (イベント)と呼びます。イベントを検出するための閾値や検出後の対応内容をEvent Rules(イベントルール)といいます。Event Rulesは、3段階の監視条件と異常検出後の対処を指定できます。例えば、軽微(Notice)な状況では記録のみ、中程度(Warning)であれば監視機器に通報、緊急時(Critical)には管理者にメールで通報する、このように柔軟で高度な運用監視機能を提供します。もちろん、この機能は、開発時にはデバッグ対象を探し出すためにも活用できます。
シチュエーション別のデバッグ機能
Zend Server 8 英語版には、デバッグやパフォーマンスチューニング向けの3つの機能を搭載しています。Debugging(デバッグ)、Code Tracing(コードトレース)、Z-Rayです。
Debuggingは、コーディングソフトと連携して、PHPコードをステップbyステップで実行する開発初期段階で重宝する機能です。高機能なコーディング環境ならば、変数に格納した値の変更やカバレッジも確認できます。Zend Techでは、Zend Studioシリーズを推奨しています。Zend Studio 12 英語版も30日の評価モードを持っているので、興味がある方は併せて試してください。
Code Tracingは、実行状況を記録するための機能です。PHPコードを実行した際のステップbyステップの実行時間やメモリ使用量を把握できます。Event Rulesに検出後の対処としてCode Tracingを指定することもできます。
Z-Rayは、非常にユニークな機能です。リクエストしたWebページを作成するのにWebサーバ側でどのような処理を行ったかをWebブラウザから確認できる機能です。Chromeの開発ツールやFirefoxのFirebugでは、Webページを表示するために送信されたデータの順番と通信時間を表示することができます。しかし、それは、Webサーバから送り出された後の通信時間に過ぎません。Z-Rayは、Webサーバ内部で何が行われていたのか、処理内容と時間を表示することができます。DB処理の内容(SQLステートメント)も参照できます。さらに、PHPアプリケーションごとに特化したレポートを提供するためのプラグインも用意されています。
Zend Server 8 英語版の評価期間と製品ライセンス(有償利用)
Zend Server 8 英語版は、評価版が存在しません。製品版をライセンスキーによって、評価期間と有償利用に分けています。そのため、評価期間といえども製品ライセンス(有償利用)とまったく同じ機能/環境が利用できます。
評価期間が経過するとZend Server 8 英語版の機能は停止して、コミュニティ版PHPが搭載されたWebサーバとして動作します。この一連の流れで、費用が発生することはありません。