Open Source Summit NA 2023から、分散処理ランタイムのDaprで実装するワークフローを紹介

2023年8月23日(水)
松下 康之 - Yasuyuki Matsushita
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とは?

Daprのワークフローを紹介

Daprのワークフローを紹介

このセッションはDiagridのCEOであるMark Fussell氏とプロダクトマネージャーのKendall Roden氏が交代で登壇し、Daprのワークフローに関してデモを交えて紹介している。

Fussell氏はデベロッパーが抱える問題として、単にビジネスロジックを実装するだけではなく、マイクロサービス化するに当たってはサービスディスカバリー、リトライ、オブザーバビリティ、シークレットの管理、セキュアな通信など本来のビジネスロジック以外に気を遣わなければいけないポイントが多数存在することを指摘。

マイクロサービスを開発する上で注意しなければいけないポイントを、ショッピングカートを例に説明

マイクロサービスを開発する上で注意しなければいけないポイントを、ショッピングカートを例に説明

その上でビジネスロジックを実装する仕組みとしてワークフローがあると説明。例に挙げたショッピングカートでは在庫の表示、注文から在庫の引き当て、外部ペイメントサービスの呼び出し、エラー処理などがショッピングカート処理のサブシステム、マイクロサービスとして実装され、ワークフローの中で処理されることを解説した。

マイクロサービスをワークフローで定義する例を紹介

マイクロサービスをワークフローで定義する例を紹介

その上でDaprのAPIを簡単に紹介し、HTTPもしくはgRPCのどちらかで実装されることを説明した。

Dapr APIの紹介

Dapr APIの紹介

そしてDaprに新たな機能ブロックとしてワークフローが追加されたことを紹介。

Daprの機能ブロックにワークフローが追加された

Daprの機能ブロックにワークフローが追加された

このブロック図を2020年のWebinarで公開された以下のようなシンプルな項目だったスライドと比べるとだいぶ進化していることがわかる。

Daprの機能ブロック図2020年版

Daprの機能ブロック図2020年版

ここからはRoden氏に交代して、デモを交えて説明を行うこととなった。

ワークフローの定義を紹介するRoden氏

ワークフローの定義を紹介するRoden氏

ここでDaprのワークフローにおける構成要素を紹介。アクティビティが基本の実行単位であり、それにタイマーや外部呼出し、サブのワークフローという基本的な内容となっている。

Daprワークフローの基本要素を紹介

Daprワークフローの基本要素を紹介

そしてここからプログラミング言語の紹介によく使われる「Hello World」を表示するデモプログラムを使って、Daprのワークフローを解説した。単にプログラムを実行後、Hello Worldを表示するのではなく、名前を変数として受け取ってHello Worldを表示するというシンプルなワークフローだ。

名前を受け取ってHello Worldを表示するプログラムをデモとして利用

名前を受け取ってHello Worldを表示するプログラムをデモとして利用

これはC#のプログラムがHTTPのリクエストを受け取ってレスポンスを返すという単純なものだが、Visual Studio Codeの中からコードやレスポンスを見せながらデモを行っており、非常にわかりやすい内容だ。

デモ実行中。すべてVisual Studio Code上で見せるデモだ

デモ実行中。すべてVisual Studio Code上で見せるデモだ

そしてDaprワークフローのアーキテクチャーとしてDapr Workflow Engineが存在し、ワークフローのアクティビティの実行、データストアを使ったステート管理、エラー処理などが処理されることを解説した。そしてこのHello Worldのデモでは簡単すぎるとして次に見せたのは、ショッピングカートのデモだ。

ショッピングカートのデモを紹介

ショッピングカートのデモを紹介

このデモではサービス起動から在庫の確認、ペイメント実行、在庫の更新、ペイメントが実行不可の場合の払い戻しなどのリアルのビジネスロジックに近い内容を模しており、よりワークフローの意義がわかる内容になっている。特に目を惹いたのは、エラー処理や外部呼び出しなどにも言及しており、単に正常系の処理だけではなく、異常系の処理もワークフローの中で収納されている部分だろう。

Visual Studio Codeでリクエストとレスポンスを見せながらデモを実行

Visual Studio Codeでリクエストとレスポンスを見せながらデモを実行

デモはすべてVisual Studio Codeの中で完結しており、デベロッパーエクスペリエンスとしてかなり使い勝手の良さを見せることにも繋がっている。

またオブザーバビリティの観点ではZipkinを使ってそれぞれのアクティビティが可視化されることも見せている。いわゆるクラウドネイティブなシステムの標準的な可視化の方法論が使える点も意味があるだろう。一般に「ワークフロー」というとSaaSなどでサイロ化されたシステムの中の独自の世界観に馴染む必要がある場合もあるが、マイクロサービスの一種類として開発、実行、運用できる意味は大きい。

最後にまとめとしてDaprワークフローについて解説。ここでは再実行やエラー処理、そしてOpenTelemetryやZipkinによる可視化などが紹介された。またワークフローにつきものの承認などについては.NETとPythonについてはSDKが用意されており、Java、JavaScriptそしてGoについては計画中であることが説明された。

元々Microsoftの中でKubernetesがデベロッパーには負担が大きいという背景から開発されたDaprは、Diagridというスピンオフ企業が全面的にサポートすることでマイクロサービスの選択肢として注目されるようになった。C#や.NETという企業にとって馴染みのあるテクノロジーを使って説明しているのも効果的だ。クラウドネイティブなワークフロー機能は、エンタープライズ企業においても多様な使い方が有り得るだろう。アクターモデルと言われてもピンとこないビジネス層にとってはDaprを検討するよいきっかけになると思われる。

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

OSイベント

RHEL互換LinuxのAlmaLinuxがセミナーを開催。サイバートラストのセッションを主に紹介

2024/3/28
RHEL互換LinuxのAlmaLinuxがセミナーを開催。サイバートラストのセッションを主に紹介する。
セキュリティイベント

FIDOが東京でセミナーを開催、パスキーについてデジタル庁の責任者が講演を実施

2024/3/19
FIDO Allianceが東京でセミナーを開催した。パスキーについてデジタル庁の責任者が実施した講演の内容を紹介する。
データベースSponsored

【事例から学ぶ】アーキテクチャ多様化時代にデータベースを「TiDBにまとめる」という選択

2024/2/9
実際にマイクロサービスアーキテクチャでありながらも、データベースをTiDBへまとめている合同会社DMM.com、Micoworks株式会社、menu株式会社が、なぜその判断に踏み切ったのか、そもそもどこに課題感があったのかなどを背景と共に紹介します。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています