ブログ

【体験レポート】SAP × Solace共催「Think Event Driven(TED)ワークショップ」に参加してきました

この記事をSNSでシェア!

はじめに

最近は開発業務に追われ、外部のイベントやセミナーに参加する機会がなかなか取れていませんでした。そんな中、先日SAP社とSolace社が共催する「Think Event Driven(TED)ワークショップ」に参加する機会を得ました。

今回は、今後のSAP BTP開発でどのように生かせるかを考え、本記事にまとめました。

イベントの概要と構成

本ワークショップは、Solace社が提唱する「イベント駆動型アーキテクチャ(EDA: Event-Driven Architecture)」の実践・成熟モデルを実際に体験・理解するためのプログラムでした。

EDAの基本概念や「Publish / Subscribe」の仕組み、ビジネス面での分析手法(バリューストリーム分析など)については、一緒にイベントに参加した西村の記事をご参照いただくこととし、本記事では割愛します。

「プロシージャ型」と「イベント駆動型」の設計比較

西村の記事ではビジネスや業務起点の「イベント」について触れられていますが、本記事では開発者の視点から、従来の「プロシージャ型」設計と「イベント駆動型」設計の技術的な違いについて深掘りします。

プロシージャ型では、業務の最初から最後までのフローを整理・定義した上で、画面やDBの設計を行います。そのため、DBのテーブルレイアウトも全行程を網羅的に考慮して設計する必要がありました。

それにより、途中のプロセスで仕様変更が入った場合は修正に大きなコストがかかっていましたが、イベント駆動型はイベント単位で設計を行うため、プロセス間の依存関係が低くなり、容易に仕様変更ができると感じています。一方で、プロセス間の結合が緩やかな分、リアルタイムでのデータ整合性の確保には注意が必要です。

設計・運用観点プロシージャ型設計イベント駆動型設計
依存関係(結合度)密結合
呼出元が呼出先の存在やAPI仕様を直接知っている必要がある。
疎結合
発行元(Publisher)は受信元(Subscriber)の存在を知らず、イベントを投げるのみ。
データの整合性強整合性(ACID)
1つのトランザクション内で処理を完了させやすく、整合性を保ちやすい。
結果的整合性(Eventual Consistency)
非同期処理のため一時的にデータ不整合が発生する可能性がある。補償トランザクション(Sagaパターンなど)の設計が必要。
スケーラビリティスケールアウトが難しい
一連の処理全体を同時に拡張する必要がある(ボトルネックが全体に波及)。
高いスケール性
メッセージキューを挟むことで、特定の処理(コンシューマー)のみを個別にスケールできる。
障害の影響範囲連鎖障害が起きやすい
1つの呼び出し先がダウンすると、全体の処理が停止・エラーになる。
障害隔離ができる
受信側がダウンしてもメッセージキューに溜まるため、復旧後に再処理可能(耐障害性が高い)。

SAP BTP開発における「イベント駆動」の位置づけ

SAP BTP(Business Technology Platform)上でイベント駆動型開発を実現するのが、SAP Integration Suite と SAP Integration Suite, Advanced Event Mesh(AEM) です。

今回のワークショップではAdvanced Event Meshの短いデモも行われましたが、紹介されたユースケースの中には「SAP S/4HANAやSuccessFactorsのマスタ連携をAEMで構築した事例」がありました。

EDAの大きなメリットとして「リアルタイム性の向上」が挙げられるため、監視系や制御系の事例が多い印象を持っていましたが、マスタ連携の事例は自身のこれまでの開発経験に照らし合わせても非常に身近でインパクトが大きいと感じました。

SAPは企業の基幹システムであるため、数多くの周辺システムとの連携が不可欠です。これまでは、同じ受注データであっても「Aシステム用」「Bシステム用」と対向システムごとに連携プログラムを作成し、タイミングの制御やジョブスケジュールの構築に多くの工数を費やしてきました。

「最初からイベント駆動の思考を取り入れて設計していれば、もっとシンプルかつスマートに実現できたのではないか」と深く実感させられました。

おわりに

参加前は「SAP BTPに関する知識の幅が少し広ければいいな」程度の気持ちでしたが、実際に参加してみて自身の設計思想や視野が大きく広がるのを感じました。

現在扱っているSAP CAPを活用したドメイン駆動開発(DDD)や、AIを活用した開発スタイルに加え、今後はAdvanced Event Meshを活用したイベント駆動開発の実践にもぜひ携わっていきたいと考えています。

また、今回のワークショップにはSAP BTPの開発に携わる他社のSIerの方々も参加されていました。SAP Integration SuiteやAdvanced Event Meshはもちろん、SAP Fiori/UI5開発なども含め、SAP BTP領域において互いに協力しながら開発を進めていけるパートナーシップを築いていけたら幸いです。

投稿者プロフィール

佐々木 健二
佐々木 健二
AWSをはじめとした、クラウド環境で動くWebアプリケーションの開発を中心に、動画配信プラットフォームのシステムや、基幹システム、PL管理システム等様々なシステムの開発を経験しています。
現在はSAP BTP上でUI5を用いた開発案件を中心に携わり、人事・給与業務等の業務知識の習得に努めています。
この記事をSNSでシェア!