第14章. 高性能ロギングとメッセージング
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
C++などの言語と比較した場合、JavaとJVMの使用はトレードオフとみなされることがある。Javaは、開発者が日々の開発で扱わなければならない低レベルの関心事の数を減らすことで、生産性の向上を達成している。トレードオフとみなされるのは、より高レベルの言語抽象化であり、低レベルの制御と生のパフォーマンスを犠牲にして開発者の生産性の向上につながる。
C++は、どんな新しい言語機能があろうとも、性能は決して妥協してはならないというアプローチをとっている。 C++の哲学は、洗練されたレベルの制御をもたらすが、その代償として、すべての開発者はリソースを手動で管理するか、適切なイディオムに従わなければならない。
Javaプラットフォームは、開発者が低レベルの詳細に関する懸念から解放されるべきというアプローチをとる。 自動メモリ管理の利点は、生産性を大きく向上させるものとして過小評価すべきではない。著者たちは、無自覚なC++開発者が犯しかねない過ちや損害を長年目撃しており、今でもその傷跡が残っている。
しかし、ガベージ・コレクションやJVM上の他の上位レベルの管理された抽象化は、パフォーマンスに関する予測不可能なレベルを引き起こす可能性がある。 この非決定性は、当然ながら遅延に敏感なアプリケーションでは最小化されるべきものである。
警告
これは、JavaとJVMが高性能システムのプラットフォームには適していないということなのだろうか?
この章では、高性能で遅延の影響を受けやすいアプリケーションを検討する際に、開発者が対処しなければならない一般的な懸念事項を探ることを目的とする。 また、低遅延システムに課される設計アプローチと要件についても考察する。 低遅延で高性能なシステムの中心となる2つの考慮事項は、ロギングとメッセージングである。
保守可能なJavaシステムには通常、多くのログ・メッセージが含まれるため、ロギングはJava開発者なら誰でも気にするはずである。 しかし、遅延を気にする開発者にとっては、ロギングは特殊化する可能性がある。 幸いなことに、ロギングは多くの開発と研究が行われてきた分野であり、この章ではその研究を行う。
メッセージングシステムは、近年最も成功したアーキテクチャパターンの1つである。その結果、通常、低遅延システムの最前線に位置し、通常、1秒間に処理されるメッセージ数で測定される。 システムが処理できるメッセージ数は、競争上の優位性を獲得するために重要であることが多い。 スループット(例えば、1秒あたりの取引)に具体的な価値を結びつけることができるため、この分野は重点的に研究され、資金が投入されている。 この章の後半で、いくつかの最新のメッセージングアプローチについて説明する。
ロギング
多くの開発者にとって、ロギング・ライブラリはプロジェクトの重要な一部とは考えられておらず、その選択は「最も抵抗の少ないパス」プロセスである。これは、プロジェクトに導入される他のライブラリ( )の多くとは対照的であり、その機能を研究し、おそらくいくつかの性能ベンチマークを検討するために時間をコミットする。
、本番グレードのロギングシステムの選択にまつわるいくつかのアンチパターンがある:
- 10年ロガー
-
かつて誰かがロガーの設定を成功させた。再作成するよりも、その設定を借りる方がずっと簡単だ。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access