第12章. リアクティブをさらに深める
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
前述したように、リアクティブプログラミングは、分散システムでリソースを有効活用する方法を開発者に提供し、アプリケーションの境界を越えて通信チャネルにまで強力なスケーリングメカニズムを拡張する。主流のJava開発手法(明示的で逐次的なロジックのため、一般に命令型Javaと呼ばれることが多いが、リアクティブプログラミングではより宣言的なアプローチが一般的である。Springは、WebMVCとWebFluxの実装が並列で補完的であるため、学習曲線をかなり平坦にするのに役立つが、それに加えて、ツールやその成熟度、テスト、トラブルシューティング、デバッグのような重要な活動のための確立されたプラクティスにおける相対的な制限もある。
リアクティブJavaの開発は、命令型Javaに比べれば発展途上であることは事実だが、両者が同族であるという事実が、有用なツールやプロセスの開発・成熟をはるかに早めた。前述したように、Springは、何十年もの進化を凝縮して、今すぐ利用可能な生産可能なコンポーネントにするために、開発やコミュニティ内で確立された命令型の専門知識を同様に構築している。
この章では、リアクティブなSpring Bootアプリケーションのデプロイを始める際に遭遇する可能性のある、テストと診断/デバッグに関する技術の現状を紹介・説明し、WebFlux/Reactorを本番環境へ移行する前、あるいは移行を支援するために、WebFlux/Reactorを活用する方法を示す。
コード・チェックアウト
始めるには、コード・リポジトリからブランチchapter12beginをチェックしてほしい。
いつ反応するか?
リアクティブプログラミング、特にリアクティブストリームに焦点を当てたアプリケーションは、現時点で利用可能な他の手段では対応することが難しい、システム全体のスケーリングを可能にする。しかし、すべてのアプリケーションがエンド・ツー・エンドのスケーラビリティを極限まで高める必要があるわけではない。インペラティブ・アプリケーションは、長い間、世界中の組織の生産需要を満たしてきた。
リアクティブプログラミングがもたらす可能性という点では間違いなくエキサイティングだが、Springチームは、リアクティブコードがすべての命令型コードに取って代わることは当面ない、と明言している。Spring WebFluxのSpring Frameworkリファレンスドキュメントにこうある:
大規模なチームであれば、ノンブロッキング、関数型、宣言型プログラミングへの移行は学習曲線が急であることに留意してほしい。完全な切り替えをせずに始める現実的な方法は、リアクティブなWebClientを使うことだ。それ以上は、小さく始めて利点を測定することだ。我々は、幅広いアプリケーションにおいて、移行は必要ないと考えている。どのような利点があるかわからない場合は、ノンブロッキングI/Oの仕組み(例えば、単一スレッドのNode.jsでの並行処理)とその効果について学ぶことから始めよう。Spring Frameworkリファレンスドキュメント
要するに、リアクティブプログラミングとSpring WebFluxを採用することは、特定の要件を達成するための最良の方法を提供する素晴らしい選択ではあるが、それでも、問題のシステムに関連する要件と要求を慎重に検討した上で選択することである。リアクティブであろうとなかろうと、Spring ...
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