ピーター・ローリー:「方法論を理解することが最大の困難です」





9月17日、キエフでIT NonStop Java Craft会議が開催されます。 彼女の特別ゲストは、パフォーマンスJavaユーザーグループの創設者であるPeter Lowryと、 Vanilla Javaブログの作成者であるJava Chronicleオープンソースライブラリです。 キエフでは、彼は2つのプレゼンテーションを行い、スピーチの前夜にはJava 8に関するワークショップを開催します。



建築について



-Java 8は、リアクティブプログラミングモデルに向けて大きな一歩を踏み出しました。 Springの最新バージョンは、その要素の一部もサポートしています。 あなたの意見では、大企業向けのアプリケーションを開発するための次のベストプラクティスは何でしょうか。



「オラクルは、マイクロサービスとリアクティブプログラミングを活用するために、JavaEEを事前に配置することに取り組んでいます。」 近々開催されるJavaOneカンファレンスで、会社の計画についてすぐにお知らせします。 特に、Java 9は、マルチスレッドパッケージの一部として、新しいFlow APIでReactive Flow Controlサポートを受け取ります。



-新しい機能およびリアクティブプログラミング機能は、企業のソフトウェア開発プロセスにどの程度影響しますか?



-機能モデルは、データストリームを作成および構成する方法を変更します。 将来的には、XMLまたはJSON形式の構成が少なくなり、Javaを使用してプログラムで作成される構成が多くなると思います。

リアクティブプログラミングモデルの重要性と人気は高まりますが、これは徐々に起こると思われます。



-現在、マイクロサービスは非常に人気があります。 文字通り誰もがこのアプローチを使用しようとしているようです。 マイクロサービスのアーキテクチャは、比較的小さなプロジェクトでもすぐに支配されると思いますか?



-マイクロサービスは、開発における一連のベストプラクティスです。 それらは、独立してデプロイ可能ないくつかのコンポーネントをサポートします。 これらの開発ツールの中で最も効果的なのは小さなプロジェクトでも支配的であると確信していますが、大規模なアプリケーションに最適なツールはこのセグメントで幅広いアプリケーションを見つけることはまずありません。



マイクロサービスの最大の影響は、次の分野で注目されています。

-(同期メッセージングと比較して)スループットを向上させる非同期メッセージング。

-プライベートデータセット(分散セットと比較); これは、すべてのアプリケーションオブジェクトとその状態の集中リポジトリとして機能するデータベースの重要なテストです。



-通常、マイクロサービスアーキテクチャを使用したアプリケーションの開発は、モノリシックアプリケーションの実装よりも多少複雑です。



-マイクロサービスが提供する各方法論とツールを使用することは、「モノリス」を作成するよりも複雑になる可能性があります。 ただし、ニーズを満たすことができる一連のツールを使用する場合、誰もが明確なビジネス目標を持つアプリケーションを個別のコンポーネントに分解すると、製品が簡単になります。 これをモノリシックアプリケーションとして実装できますが、このためには完全に調整されたチームワークが必要です。 マイクロサービスの使用自体は、作業をセクションに分割する必要性を示します。



フレームワークについて



「信頼性とパフォーマンスのテストに関しては、追加の課題があります。」



-アプリケーションを展開する方法は、ブラックボックス戦略に従ってテストする場合、大きな役割を果たすべきではありません。

ホワイトボックス戦略でテストしている場合、タイミングをチェックするための明確な境界を設定するのに役立つため、マイクロサービスは優れています。

信頼性の観点からは、多数の要素で問題が発生する可能性がありますが、より単純なサービスは個別にテストできます。



-マイクロサービステストやパフォーマンス、レイテンシなどのテストを簡素化する追加のフレームワーク(または既存のフレームワークの拡張)が必要だと思いますか?



-私はフレームワークの大ファンではありません。 高精度のパフォーマンスカウンターを追加することにより、重要なエンドツーエンドの相互作用をプロファイリングする方法論があります。 過去には、これらのカウンターの場所が明確に定義されていませんでした。 モノリシックアプリケーションの場合、データの記録とメッセージの読み取りの各イベントに関連付けられた場所を使用します。 サービスのサイズがほぼ同じであれば、これは良い出発点です。 その後、必要に応じて他のカウンターを追加できます。



組み立てツールについて



-自動アセンブリ用の既存のツール(Maven、Gradle)はマイクロサービス開発サイクルをサポートしていますか?



-MavenとGradleはマルチモジュール開発をサポートします。 ほとんどの場合、マイクロサービスの各クラス(または同じサービスの複数のオカレンス)にモジュールがあり、Maven / Gradleを拡張してマイクロサービスをテストし、継続的な統合を通じて展開できます。



-今日、改善する価値があるものは何ですか?



-最大の困難は、問題と方法論を適切に理解することです。 適切な知識がなければ、どのテストツールが特定の状況に適しているかを判断できません。



多くの場合、開発者は新しいファッショナブルなツールを積極的に使用し始め、後になってそれらのツールが本当に合理的に使用できるようになります。 たとえば、Dockerを使用する場合、勉強に時間を費やすという大きな危険があり、このツールは問題の最適な解決策にはなりません。 ある状況では、新しいツールを学ぶのに費やす時間が正当化されますが、別の状況ではそうではありません。



» IT NonStop Java Craftの詳細

» 会議チケット

» ピーター・ローリーワークショップチケット、キエフJava 8の詳細



All Articles