第1回となる前回は、昨今のビジネスが求めるアジリティやリアルタイム性から、改めてイベントドリブンアーキテクチャ(イベント駆動型アーキテクチャ、EDA)に注目が集まっている状況と、EDAにまつわる最新動向を説明した。今回は、EDAの実装で必要となる特性や機能について取り上げる。特に、EDAのリアルタイム性/拡張性を実現する、ベース技術のリアクティブシステムについて詳しく解説する。
EDAの実装で必要となる特性・機能
イベントドリブンアーキテクチャ(イベント駆動型アーキテクチャ、EDA)実装のためのインフラに必要となる特性・機能は、大きく以下の3つになる。
リアルタイム性
文字どおり、作成されたイベントに対してリアルタイムに対応する機能。多数のイベントをリアルタイムに処理するためには、非同期で、かつノンブロッキングのプラットフォームが必要となる。
垂直型/水平型/エッジ型のスケーラビリティ(拡張性)
システムによっては毎秒数十億ものビジネスイベントを処理し運用できる能力が必要となる。必要に応じて処理能力を高めるために、処理性能そのものを向上させる垂直型(スケールアップ型)のスケーラビリティと、処理を分散して全体の性能を向上させる水平型(スケールアウト型)のスケーラビリティが必要となる。また、イベントの発生源に近いところで処理を行い、遅延を押さえるようなエッジ型(Edge/Edge Heavy)の分散環境も必要となる。
耐障害性
リアルタイム性やスケーラビリティだけでなく、ミッションクリティカルな環境を支えるための耐障害性も当然に求められる。フェールオーバーを可能にするクラスタ構成や、システムの動的な配置によりシステム障害時に処理を引き継ぐことができるような構成が必要になる。
これらの特性を実現していくにあたってインフラ、ベース部分を担うのが、次章で述べるリアクティブシステムである。
リアルタイム性/拡張性を司るリアクティブシステム
「リアクティブ(Reactive)」と聞いてイメージが浮かびやすいのは、Excelのような表計算シートだろう。下のような簡単なシートを見ると、上半期の合計は1月から6月の値を変更するとすぐに新しい値が計算され表示される。つまり、値の関係性を記述することで「リアクティブ」な処理を可能にしている。
では、リアクティブシステムとはどのようなものなのか。定義は「リアクティブ宣言(The Reactive Manifesto、注1)」という文書で述べられており、それによると「即応性と、耐障害性と、弾力性と、メッセージ駆動とを備えたシステム」のことである。 また概念図を引用する(図1)
拡大画像表示
リアクティブ宣言からの一節を引用する。「今日のアプリケーションは、モバイル機器から数千のマルチコアプロセッサによって動作するクラウドベースのクラスタまで、あらゆる機器上に配備される。ユーザはミリ秒の応答時間と 100% の稼働率を期待する。データはペタバイト単位で測定される。昨日のソフトウェアキテクチャは、今日の要求を全く満たしていない」――まさに、EDAで必要となるリアルタイム性、スケーラビリティ、耐障害性のためのアーキテクチャということができる。
注1:The Reactive Manifestoの原文はhttps://www.reactivemanifesto.org/に、日本語翻訳版がhttps://www.reactivemanifesto.org/jaで公開されている。
会員登録(無料)が必要です
- 1
- 2
- 3
- 次へ >
- EDAの導入効果が高いユースケースを知る:第5回(2018/11/27)
- EDAプラットフォームに備わるセキュリティ確保の仕組み:第4回(2018/11/12)
- EDAで欠かせないDevOps/アジャイル開発:第3回(2018/10/24)
- 今、イベントドリブンアーキテクチャ(EDA)に注目が集まる理由:第1回(2018/10/09)