リアクティブ、ストリーミング、NoSQLは、いずれも今日では重要な概念であり、極めて有用なものだ。しかしながらVaughn Vernon氏は、オンラインの記事を読んだ時に、企業がクラウドネイティブなアプリケーションのメリットを完全に実現する上で、これらすべてが義務のような印象を受けることがある、という。氏は自身のブログ記事で、それが事実でないことを強調するとともに、すべてを再構築しなくてもクラウドのメリットを実現することは十分に可能だ、と主張している。
“Implementing Domain-Driven Design”や“Reactive Messaging Patterns with the Actor Model”といった著書を持つVemon氏は、クラウドネイティブやリアクティブに関わる技術的な真実を明らかにするため、氏がこれまでに読んだ中で、特に懸念を持った6つの主張に対して意見を述べている。
情報とは、生の形式のデータセットによるライブストリームである
データのストリーミングは、ビジネス変化に迅速に対応する必要のある場合には極めて有用なテクニックだ。さらに、Vemon氏の意見では、リアルタイムでデータを処理するための最良の方法でもある。しかしながら氏は、クラウドではデータが常にストリーミングされるという主張は正しくない、と言う。大部分のビジネスシステムでは、依然として永続的状態、すなわち静止したデータを使用しているのが事実なのだ。
氏はまた、ストリームを使用する場合には、ストリーミングデータの解析に有用なスマートなソリューションがある、と述べて、そのようなツールを欠いたテクノロジスタックに対して警告を発している。
Javaショップで使用されているような従来のスキルセットは、最新のクラウドベースのアプリケーションでは役に立たない
経験豊かな開発者のスキルは、リアクティブなアーキテクチャでも活用可能だ、とVemon氏は強調する。新たなテクノロジスタックを導入するために、企業が既存の開発者やアーキテクトを置き換える必要はないし、それによってコアビジネスをリスクにさらす必要もないのだ。
ただし、開発者の環境を向上するために、今日では一般的となった並列処理ハードウェアをサポートするような、現代的なツーリングを提供する必要はある。
データは永続化されない、常に変化する
これは事実ではない、と氏は主張する — 過去数十年間にわたってそうであったように、データは永続化するのだ。システムダウンが発生して、データが永続化されていなければ、企業の最も価値のある資産が失われることになる。ストリームにおいてもこれは真実であり、その理由も同じである。当然ながら例外はある — ストリーム内のデータのサンプリング結果のみが必要な場合であれば、ストリームの一部が失われても影響はない。
状況がそれを求めている場合には、RDBMSの採用を低レベルな判断と見なすべきではありません。求められるスケーラビリティを、RDBMSでは満足できないようなユースケースもありますが、それ以外の身近なタスクには十分です。テクノロジの選択としてRDBMSを故意に無視することは、無意味な複雑化につながる可能性があります。
永続性が必要な場合を理解することが重要だ、とVemon氏は指摘する。ビジネスのエキスパートや開発者であれば、これを判断して妥当な意思決定を行うことは十分に可能なはずだ。
データはストリームであって、SQLクエリは実行できない
これはストリーム自体に対しては真実だが、一般的にデータのストリームはデータストアに投影されるので、SQLを使用したクエリは可能である。ライブストリーミングデータに対するクエリの一例としては、継続的クエリ(continuous query)と呼ばれるものがあり、かなり以前から使用されている。
リアクティブはアプリケーション構築の新たな方法であり、モノリスにはクラウドに対する優位性はない
モノリシックなアプリケーションはクラウドのメリットを活用できないという主張とともに、一般的ではあるが誤った主張だ、とVemon氏は述べるとともに、従来のシステムを維持しながらクラウドのメリットを活用するリフト・アンド・シフトというテクニックについて言及している。強く結合されたマイクロサービスの巨大な羅列に比べれば、適切にモジュール化されたモノリスの方がはるかに望ましい、とVernon氏は言う。それどころか、貧弱なアーキテクチャと粗末なモジュラリティによって問題が生じて、大きな泥団子(big ball of mud)になることも少なくないのだ。
Vemon氏がマイクロサービス導入を検討するように勧めるのは、ビジネスドメイン間の変化率に大きな隔たりのある場合である。重要なのは、アプリケーションのアーキテクチャとしてマイクロサービス、あるいはモノリスが相応しいのはどのような時なのかを理解することだ。
Javaを使用する場合は、クラウドのメリットを活用するために、通常とは違ったリアクティブな手法が必要である。
Javaやその他のJVM言語は、ストリーミングやリアルタイム、データ駆動ユースケースと同じく、リアクティブなアプリケーションの構築にも適している、とVemon氏は考えている。さらに氏は、Javaには明るい未来がある、という意見を、Bjame Stroustrup氏の言葉を引用して述べている。
[プログラム]言語には2種類しかない — 文句を言われる言語と、誰も使わない言語だ。
Javaネイティブなリアクティブアプリケーション開発を支援するため、Vemon氏は、リアクティブなイベント駆動マイクロサービスアーキテクチャのメリットを実現するオープンソースプラットフォームであるvlingoの開発に着手した。ドメイン駆動設計とアクタモデルのアイデアを基盤とするこのプラットフォームは、このサイトからダウンロードすることができる。
この記事を評価
- 編集者評
- 編集長アクション