Dapr Advent Calendar 23日目 - Daprのロードマップ
こんにちは Dapr Advent Calendar 23日目です。これまでのAdvent CalendarではDaprの機能や使い方を紹介してきましたが、今後、Daprはどういう方向が強化されるのでしょうか。そのロードマップを少し眺めてみたいと思います。
Daprのロードマップを見てみよう
Daprのロードマップは、Github Projectsで管理されています。
ロードマップにはいくつかのレーンが設けられています。
Backlog は対応予定だけど優先順位が確定していないもの。👍をつけていけば優先度を上げられるようです。
Planned (Committed) はだいたいマイルストーンが決まって設計を検討しているもの。
In Progress (Development) は開発中のもの。
Done と Released はそれぞれ開発完了のものとリリース済みのものです。
もちろんすべてのIssueは紹介できませんので、In Progress、Planned、Backlogの中から、主要なものや面白そうなものをピックアップして紹介します。
In Progress
現在開発中の In Progress には、2021-12-23時点で8個のIssueがあります。4つが現在AlphaやBetaのコンポーネントをGAにするとか、作り直そうというものです。
残りの4つを簡単に紹介します。
- [Proposal] Resiliency policies across all building blocks #3586
- @tmak_tw さんが Daprの回復性を支える仕組み 現状と展望 にて紹介した議論です。安定稼働のために重要であり、また現状のDaprは少し弱い点なので、要注目のテーマです
- Allow components to perform custom health checks #2167
- [Proposal] configuration api design #2988
- PubSub's DeadLetter Topic #2217
- Pub/subでデッドレタートピックを作れるようにしようという提案。Dapr 1.5でRabbitMQのDLX (Dead Letter Exchange) がサポートされましたが、このIssueは他のPubsubコンポーネントも含めて対応するものです
Planned
今後対応予定の Planned には、2021-12-23時点で26個のIssueがあります。
品質周りのIssueが多く、現在AlphaやBetaのコンポーネントをGAにするとか、DaprコンポーネントのE2Eテストや結合テストを強化するなど、内部の品質を高めるissueが全体の半数を超えています。
残りの半数のうちから、興味深いものをいくつか紹介します。
- [Proposal] Provide alternative service resolution mechanism besides mdns #3256
- [Proposal] API for state store filtering and querying #1339
- データの読み書きをキーだけでなく、簡単なフィルタやクエリを書けるようにしようという提案。Dapr 1.5で部分的にリリースされました
- Support trace exporting to Open Telemetry protocol #2836
- For better traceability of Azure Components, consider adding headers that identify the origin of the request as coming from Dapr #1014
- Provide MockDaprClient or MockActorClient for easy unit/integration testing #543
Backlog
まだマイルストーンなど決まっていない Backlog には、2021-12-23時点で25個のIssueがあります。いつ出てくるかは分かりませんが、逆に言えば少し規模や影響の大きなIssueも多いです。
Pub/sub関連
- Support batching of send and receive pub/sub messages for performance #2218
- Pub/subのメッセージを1件ずつではなく、複数まとめてできるようにしようという提案。Spring Cloud Streamが1件ずつ処理するのではなく
java.util.function.Consumer
を使うように変わったのも、同じような問題意識からでしょうね。議論も活発なので要注目です
- Pub/subのメッセージを1件ずつではなく、複数まとめてできるようにしようという提案。Spring Cloud Streamが1件ずつ処理するのではなく
- Propagate arbitrary/configurable http headers from publisher to subscribers #3642
- Publish時にアプリケーションからDaprにHTTPヘッダを渡して、Subscribe時にそのHTTPヘッダをDaprからアプリケーションに送ろうという提案。「CloudEventのフィールドを使えば良いじゃん」「いやDataDogのJava agentがHTTPヘッダを見るからHTTPヘッダで渡して欲しいんだよ」という議論がなされていて、なるほどなという感じです
- Support dynamic (on-demand) subscribe and unsubscribe of topics by user app #814
- アプリケーションから動的にsubscribe/unscribeできるようにするという提案。僕はこれまで固定でしか使ったことがなかったですけど、確かにこれはユースケースがありそうですね
分散トレーシング関連
- [Proposal] Tracing API and Interface for application level tracing components #100
- 分散トレーシングのためのAPIを設けて、アプリケーション内部からも分散トレーシングを行えるようにしようという提案。これができればたとえばDBアクセスなんかも分散トレーシングに載せやすくなりますね
- Metric API for application level metric reporting #3455
ネットワーク関連
- Support for multiple instances of a service for load balancing #698
- Support ability to join two Dapr mesh's together (Cloud + Edge) #3331
- 別々のDaprメッシュネットワークを、相互に連携できるようにしようという提案。いわゆるハイブリッドクラウドのような環境でのニーズでしょうかね。議論はあまり活発ではないですが、名前解決の機能強化と一緒に進むかも知れません
その他
- Longhaul and Chaos Testing #11
- Daprの安定性を高めるために長期安定試験やChaos試験をやろうという提案。特にChaos試験による安定性が向上に期待したいので、ぜひやって欲しいです
- Improve remote debugging experience for dapr core component in K8S cluster #978
また、ロードマップにはないのですが components-contribのissue で、次のIssueが重要なものとしてピン止めされています。
ECS上でDaprを動かせるようにしようという提案。以前にもこのAdvent Calendarの中で触れたことがありましたが、ECSで使えるようになればユーザーも増えるんじゃないかと期待しています。
まとめに代えて
全体を眺めた感じ、品質向上のテーマや既存機能の改善がほとんどで、とんでもない大物が待っているような気配はありません。まずはアーリーアダプターが使って満足できるように足場を固めているところ、という感じでしょうかね。利用者が増えてきたり、Azureと絡めて予算がつくようになってくれば、また傾向が変わるかも知れません。
ところで、「とんでもない大物」と言えば、ロードマップにはありませんが、こんなIssueがありました。
SQLを発行するためのAPIを作ろう、トランザクションも有効にしよう、というものです。さすがにそれは考えないようにしてるのかな、と思ってたのですが、少なくとも提案はされているようですね。ちょっと注目しておきたいIssueです。
そんなわけで、今回はここまでにしたいと思います。
明日のAdvent Calendarは、@backpaper0さんがDaprのActorについて書いてくれる予定です。Actorはよく分からなくて飛ばしたところなので、楽しみですね!
それでは!