Springプログラミングと設定モデルは良く理解され、ドキュメント化されておりまた世界中で数十万人のデベロッパたちによって使用されている。このホワイトペーパーはそれらのアプリケーションをマネージするオペレーションチームのために書かれたものである。このホワイトペーパーの最初の部分では、Spring kernelの主な機能を解説している。
- ブーストラッピング - アプリケーション用にランタイムコンテキストを提供するアプリケーションコンテキストを作る。
- コンポーネント設定の決断 - どのアプリケーションコンポーネントが作られる必要があるのか、どのように設定されるのか、また何のサポートサービスを必要とするのかを決定する。またこのステップはサービスの準備状態が決定されるので青写真の段階として知られている。
- インスタント化、設定とアッセンブリ - その青写真を使用してコンポーネントは必要なときに構成される。この段階は、Springがコンポーネント、特定の オーダー、構成メカニズム間における依存性を考慮しなくてはいけないのでとっても重要なのである。この段階における障害はアプリケーションを動作不能にしてしまう。
- コンポーネントポストプロセッシング - Springエンタープライズサービスとユーザーサーバによって、ポストプロセッサとして登録されたコンポーネントは呼び出される。
- デコレーション - クロスカッティングのコンポーネントビヘイビアが特定された時、AOPネームスペースかもしくは注釈付けされたクラスを使用しているアスペクトのように、宣言的にSpringkernelは付加的なタスクを所有している。この特定されたポイントカットは承認され、また追加された機能でコンポーネントを飾るために、元々のコンポーネント用に生成されたプロキシである必要がある。
- コンポーネントライフサイクルとスコープの管理 - コンポーネントはそれぞれ異なるライフサイクルとスコープを持っているので、Spring kernelはコンポーネントの製作、再利用、破壊を監視し続けるのである。
最適化は二つの大きなカテゴリーに分類される。効果的な青写真を作ること(設定の調整)、そしてランタイム設備(あなたのアプリケーションデザインの最適化)を効果的に活用することである。Springが提供する機能を最大限に活用して一番きれいで明確なデザインから始め、また数字が本物の利益を証明するところで活用するのである。効果的な青写真の制作
効果的な青写真を作るには、あなたのデプロイメントプラットフォームの利点を活用する必要があり、また環境依存性をSpring設定外に保つことである。 JNDIがあなたにデプロイメントプラットフォーム設備を活用するのを可能にしているのを利用するところで、データベースの接続性とJMSコネクションを宣言する時に特に重要である。
Springのプロパティプレースホルダ設定者はオペレーションチームが変更する必要があるかもしれない設定を外面化するのに最高である。そして、
ここで役に立つコツは、設定値をJMXを通して表示するMBeanを定義するためのSpringのJMXエクスポート機能を使用することである。これは動作中のアプリケーションに接続、またそれが現在使用している設定値を簡単に見る事を可能にする。ランタイム最適化の利点を活用
ランタイム最適化の利点を活用して、たくさんのランタイムプロダクションパフォーマンス問題が持続性レイヤーに追い詰められ、そして適切に最適化されたデータベースとデータアクセスレイヤーは何よりも重要である。
- 熱心、また怠惰なロードストラテジー間で上手くバランスをとるための努力
- ログ内にSQLステートメントを表示すること
- バッチスタイルのオペレーション、バルクアップデートかもしくは挿入、そしてストアドプロシージャ用にはORMよりもJDBC(Srping JDBCを介して)を使用するのが最適
- データベースが提供する機能を最大限に活用する
- もしあなたが全体的に持続性のロジック(ビジネスロジックではなく)を含むオペレーションを所有していたら、ストアドプロシージャとしてそれをデータベースに動かし、Spring JDBCを通してそれを呼び出す事を考慮してほしい
- 読み取り専用のリファレンスデータはメモリ内のキャッシュ内に保持することができる
ホワイトペーパー前文はSpringSource(サイト・英語)からダウンロード可能となっている。
- Spring Batchプロジェクトの再試行サポートは衰えているオペレーションを再試行するのに使用できる(例えばOracle RAC内で個別のクラスタノード上で失敗したオペレーションである)。
- webコンテンツの表示にかかる費用を絶対に低く見積もらないこと。これはトランザクションの外で行いたい事である。
- リクエストごとにアプリケーションコンテキストをインスタント化しない事。(チームがレガシーアプリケーションをSpringに移行するときに時としてミスが発生する)。
- バックグラウンド内で動作され得るタスク用のユーザ待ち時間を減少させるために、Springの非同期タスク実行機能を酷使する事を考慮する事。
- 適切なリモートプロトコルを選択すること。もしあなたがSOAPインタオペラビリティを必要としないのであれば、SpringのHttpInvokerサポートのような簡易なスキームがよりシンプルで速いと言える。
- Spring AOPの代わりとして、あなたのアプリケーションの広範囲に影響を与えるアスペクトのためにAspectJの使用を考慮する事。
原文はこちらです:http://www.infoq.com/news/2007/11/PerformanceTuningSpringApps