Open Source Summit NA 2023から、分散処理ランタイムのDaprで実装するワークフローを紹介
オープンソースのテクノロジーに関するカンファレンスOpen Source Summit 2023 Notrh Americaから、分散処理ランタイムのDaprを開発するDiagridのCEOとプロダクトマネージャーが解説する、Daprで実装されたワークフローに関するセッションを紹介する。
●動画:Dapr Workflows: How to Write Reliable, Fault-Tolerant Applications... - Kendall Roden & Mark Fussell
Daprについては過去に数回記事で紹介しているが、概要を掴むためには以下の記事が最適だろう。
●参考:Dapr 1.0で知るMicrosoftのガバナンス意識の高さとは?
また2020年に行われたWebinarを紹介した下記の記事では「Lego for Microservices」として紹介され、アクターモデルやステート管理、Pub/Subなどの主な機能が紹介されていたが、今回はそこには含まれていなかった機能としてワークフローが追加されたことになる。
●参考:Microsoftがリードするモダンな分散システム用ランタイムDaprとは?
このセッションはDiagridのCEOであるMark Fussell氏とプロダクトマネージャーのKendall Roden氏が交代で登壇し、Daprのワークフローに関してデモを交えて紹介している。
Fussell氏はデベロッパーが抱える問題として、単にビジネスロジックを実装するだけではなく、マイクロサービス化するに当たってはサービスディスカバリー、リトライ、オブザーバビリティ、シークレットの管理、セキュアな通信など本来のビジネスロジック以外に気を遣わなければいけないポイントが多数存在することを指摘。
その上でビジネスロジックを実装する仕組みとしてワークフローがあると説明。例に挙げたショッピングカートでは在庫の表示、注文から在庫の引き当て、外部ペイメントサービスの呼び出し、エラー処理などがショッピングカート処理のサブシステム、マイクロサービスとして実装され、ワークフローの中で処理されることを解説した。
その上でDaprのAPIを簡単に紹介し、HTTPもしくはgRPCのどちらかで実装されることを説明した。
そしてDaprに新たな機能ブロックとしてワークフローが追加されたことを紹介。
このブロック図を2020年のWebinarで公開された以下のようなシンプルな項目だったスライドと比べるとだいぶ進化していることがわかる。
ここからはRoden氏に交代して、デモを交えて説明を行うこととなった。
ここでDaprのワークフローにおける構成要素を紹介。アクティビティが基本の実行単位であり、それにタイマーや外部呼出し、サブのワークフローという基本的な内容となっている。
そしてここからプログラミング言語の紹介によく使われる「Hello World」を表示するデモプログラムを使って、Daprのワークフローを解説した。単にプログラムを実行後、Hello Worldを表示するのではなく、名前を変数として受け取ってHello Worldを表示するというシンプルなワークフローだ。
これはC#のプログラムがHTTPのリクエストを受け取ってレスポンスを返すという単純なものだが、Visual Studio Codeの中からコードやレスポンスを見せながらデモを行っており、非常にわかりやすい内容だ。
そしてDaprワークフローのアーキテクチャーとしてDapr Workflow Engineが存在し、ワークフローのアクティビティの実行、データストアを使ったステート管理、エラー処理などが処理されることを解説した。そしてこのHello Worldのデモでは簡単すぎるとして次に見せたのは、ショッピングカートのデモだ。
このデモではサービス起動から在庫の確認、ペイメント実行、在庫の更新、ペイメントが実行不可の場合の払い戻しなどのリアルのビジネスロジックに近い内容を模しており、よりワークフローの意義がわかる内容になっている。特に目を惹いたのは、エラー処理や外部呼び出しなどにも言及しており、単に正常系の処理だけではなく、異常系の処理もワークフローの中で収納されている部分だろう。
デモはすべてVisual Studio Codeの中で完結しており、デベロッパーエクスペリエンスとしてかなり使い勝手の良さを見せることにも繋がっている。
またオブザーバビリティの観点ではZipkinを使ってそれぞれのアクティビティが可視化されることも見せている。いわゆるクラウドネイティブなシステムの標準的な可視化の方法論が使える点も意味があるだろう。一般に「ワークフロー」というとSaaSなどでサイロ化されたシステムの中の独自の世界観に馴染む必要がある場合もあるが、マイクロサービスの一種類として開発、実行、運用できる意味は大きい。
最後にまとめとしてDaprワークフローについて解説。ここでは再実行やエラー処理、そしてOpenTelemetryやZipkinによる可視化などが紹介された。またワークフローにつきものの承認などについては.NETとPythonについてはSDKが用意されており、Java、JavaScriptそしてGoについては計画中であることが説明された。
元々Microsoftの中でKubernetesがデベロッパーには負担が大きいという背景から開発されたDaprは、Diagridというスピンオフ企業が全面的にサポートすることでマイクロサービスの選択肢として注目されるようになった。C#や.NETという企業にとって馴染みのあるテクノロジーを使って説明しているのも効果的だ。クラウドネイティブなワークフロー機能は、エンタープライズ企業においても多様な使い方が有り得るだろう。アクターモデルと言われてもピンとこないビジネス層にとってはDaprを検討するよいきっかけになると思われる。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- WASM Meetup@ByteDanceで垣間見たWebAssemblyの静かな広がり
- Microsoftがリードするモダンな分散システム用ランタイムDaprとは?
- 分散型アプリの開発と運用を分離するOAMとDapr、そしてKubernetes上の実装であるRudrとは?
- RPAにおけるインテグレーションのためのライブラリ開発
- 「TAURI」をはじめる前に -「Rust」の基礎と開発環境の構築
- CNCFのサンドボックスプロジェクトとなったwasmCloudの動画を紹介
- de:code 2018が開催。基調講演はクラウド、開発ツール、MRが語られる
- Azureとのコラボレーションによる、これからのワークスタイルとは― Developers Summit 2020レポート
- DaprコミュニティコールからDaprのHPC関連の事例とKeycloakとの連携を紹介
- de:code 2019開催。自動運転車からMicrosoft 365、Azure、HoloLens 2までの基調講演まとめ