技術原則
Fastifyフレームワークとその公式プラグインにおけるすべての決定は、以下の技術原則によって導かれています。
- 本番環境での「ゼロ」オーバーヘッド
- 「良好な」開発者体験
- 小規模プロジェクトと大規模プロジェクトの両方で優れた機能を発揮
- マイクロサービス(またはサーバーレス)への移行と、その逆の移行が容易
- セキュリティとデータバリデーション
- プラグイン化できるものは、おそらくプラグイン化するべきである
- 容易なテスト
- コアのモンキーパッチは行わない
- セマンティックバージョニングと長期サポート
- 仕様の準拠
本番環境での「ゼロ」オーバーヘッド
Fastifyは、アプリケーションへのオーバーヘッドを可能な限り最小限に抑えることで機能を実装することを目指しています。これは通常、高速なアルゴリズムとデータ構造、およびJavaScript固有の機能を実装することで実現されます。
JavaScriptはゼロオーバーヘッドのデータ構造を提供しないため、この原則は優れた開発者体験とより多くの機能を提供することとは矛盾します。通常、それらはオーバーヘッドを伴います。
「良好な」開発者体験
Fastifyは、運用上のパフォーマンスポイントにおいて最高の開発者体験を提供することを目指しています。さまざまな状況に適応できる柔軟性を備えた、優れたすぐに使える体験を提供します。
例として、バイナリアドオンは禁止されています。なぜなら、ほとんどのJavaScript開発者はコンパイラにアクセスできないためです。
小規模プロジェクトと大規模プロジェクトの両方で優れた機能を発揮
ほとんどのアプリケーションは小規模から始まり、時間の経過とともに複雑になることを認識しています。Fastifyは、アプリケーションの複雑さと共に成長し、コードベースを構造化する高度な機能を提供することを目指しています。
マイクロサービス(またはサーバーレス)への移行と、その逆の移行が容易
ルートのデプロイ方法は問題ではありません。フレームワークは「そのまま動作する」必要があります。
セキュリティとデータバリデーション
Webフレームワークは信頼できないデータとの最初の接触点であり、システムの最初の防御線として機能する必要があります。
プラグイン化できるものは、おそらくプラグイン化するべきである
Node.jsのHTTPフレームワークには無限のユースケースがあることを認識しています。単一のモジュールでそれらすべてに対応しようとすると、コードベースが保守不能になります。そのため、フックとオプションを提供して、自由にフレームワークをカスタマイズできるようにしています。
容易なテスト
Fastifyアプリケーションのテストは、最優先事項であるべきです。
コアのモンキーパッチは行わない
Node.js APIのモンキーパッチや、ランタイムの動作を変更するグローバル変数のインストールは、モジュール式アプリケーションの構築を困難にし、Fastifyのユースケースを制限します。他のフレームワークではこれを行っていますが、私たちは行いません。
セマンティックバージョニングと長期サポート
明確な長期サポート戦略を提供することで、開発者はいつアップグレードすべきかを知ることができます。
仕様の準拠
疑問がある場合は、関連する仕様で定義されている厳密な動作を選択します。