
パフォーマンスとクラウドデプロイ
Event loop、blocking I/O、profiling、memory leaks、クエリ最適化、圧縮、clustering、worker threads、load balancing、戦略的キャッシング(Redis + HTTP)、AWS(ECS、Lambda)、serverless、デプロイ戦略(blue/green、canary)
1AWS ECSでのNestJSコンテナのデプロイを最適化するアプローチはどれですか?
AWS ECSでのNestJSコンテナのデプロイを最適化するアプローチはどれですか?
回答
NestJSコンテナのECSデプロイを最適化するには:multi-stage Dockerビルドを使って最終イメージサイズを削減(buildステージ + 最小限のproductionステージ)、Dockerのlayer cachingを活用してビルドを高速化、同一リージョンでECR(Elastic Container Registry)を使ってlatencyを削減、適切なhealth checksを設定、Fargateを使って管理を簡素化、最適なresource limits(CPU/memory)を定義、SIGTERMに対するgraceful shutdownを実装します。最適化されたNode.js alpineイメージは、最適化なしの>1GBに対して<100MBにできます。
2Node.jsのevent loopの主なフェーズは何ですか?
Node.jsのevent loopの主なフェーズは何ですか?
回答
Node.jsのevent loopには6つの主要フェーズがあります:timers(setTimeout/setInterval)、pending callbacks(遅延されたI/O callbacks)、idle/prepare(内部)、poll(新しいI/Oイベントの取得)、check(setImmediate)、close callbacks。各フェーズには実行するcallbacksのFIFOキューがあります。pollフェーズはI/Oイベントを処理するため最も重要です。
3Node.jsにおけるブロッキング操作(blocking I/O)の影響は何ですか?
Node.jsにおけるブロッキング操作(blocking I/O)の影響は何ですか?
回答
Node.jsにおけるブロッキング操作はevent loop全体をブロックし、他のすべての操作の処理を妨げます。Node.jsはシングルスレッドのため、これによりパフォーマンスが大幅に低下します。fs.readFileSync、crypto.pbkdf2Syncなどの同期操作や集中的なループはメインスレッドをブロックします。常に非同期版を使うか、worker threadsに委譲してください。
本番環境のNode.jsアプリケーションでmemory leakをどのように特定しますか?
NestJSアプリケーションのCPUパフォーマンスをprofilingするにはどのツールを使いますか?
+27 面接問題