Microsoftの「マイクロサービス開発」を支援する分散アプリケーションランタイム「Dapr」がバージョン1.0に到達

Microsoftによるオープンソースソフトウェア「Distributed Application Runtime(Dapr)」がバージョン1.0に到達しました。Daprはマイクロサービス開発を支援するランタイムで、アルファ版が公開された2019年10月からおよそ1年半後の「製品向け」リリースとなりました。
Announcing Dapr v1.0 | Dapr Blog
https://blog.dapr.io/posts/2021/02/17/announcing-dapr-v1.0/

The community effort that delivered Dapr v1.0 - Open Source Blog
https://cloudblogs.microsoft.com/opensource/2021/02/17/the-community-effort-that-delivered-dapr-v1-0/
Release Dapr Runtime v1.0.0 · dapr/dapr · GitHub
https://github.com/dapr/dapr/releases/tag/v1.0.0
Daprがどういったランタイムなのかは、以下のムービーを見るとよくわかります。
Introducing Dapr: The Distributed Application Runtime - YouTube

マイクロサービス開発時は、アプリケーションの通信をいかに設計するかが重要になります。これまでのマイクロサービス開発においては、各アプリケーションやデータストアなどの要素がお互いに直接通信を行っていたため、モノリシックのマイクロサービス化やアプリケーション入れ替えが困難であったり、新しいアプリケーション導入の障壁となったりすることがありました。

Daprを一言で表すと「マイクロサービスを役割や機能ごとに整理するサービス」で、アプリケーションに通信機能を透過的に提供してくれるランタイムとなっています。導入することで各アプリケーションが通信先に依存しなくなるため、異なる環境にサービスを移動したり、新しいアプリケーションを導入したりすることが容易になります。例えば、アプリケーションとデータストアとの通信にDaprを利用することで、テスト環境ではRedisを、本番環境ではクラウドデータベースを、といった使い分けが、アプリケーションのコードを変更せずとも可能になります。

Daprの機能は、一体となったフレームワークではなく通信の種類ごとにビルディングブロックとして提供されているのが特徴。例えば「ステート管理機能だけ使いたい」場合、Daprのすべての機能を導入せずとも、ひとつのブロックを導入するだけで要件を満たすことができます。

アプリケーションはJava、Python、Go、JavaScript、Rustなどの言語向けに提供されているSDKを用いて、HTTPもしくはgRPCを使ってDaprにアクセスするという構造。DaprはKubernetesでの利用を前提としてはいませんが、Kubernetesで利用する場合はDaprコンテナがPod内にサイドカーとして挿入されます。

マイクロサービスのアプリケーション間通信を管理するシステムとしては、Istioに代表されるサービスメッシュがあります。サービスメッシュとDaprには「分散型サービスのトレーシング機能」や「メトリクス出力機能」など、共通する部分はあるものの、前提となる思想が大きく異なります。サービスメッシュはマイクロサービス全体のネットワーク管理を主な目的とするのに対し、Daprは「実行環境に依存しないポータブルなマイクロサービス開発」を支援するという目的があります。
以下はDaprを用いた開発例で、データストアのRedisに対し、Daprを経由して各アプリケーションがPub/Subに通信を行う時計サービスとなっています。
daprでつくるマイクロサービス - Qiita
https://qiita.com/kzmake/items/4136a11fa301cdec4ccb

そんなDaprが、2019年10月のアルファ版公開から約1年半後の2021年2月17日に、バージョン1.0に到達しました。バージョン1.0は「production ready(製品向け)」として位置づけられており、開発段階から製品段階に至ったことになります。
DaprのGitHubリポジトリにおけるコントリビューター数はアルファ版リリースから着実に増加しており、2021年2月には700人に達しています。DaprはAlibaba CloudやHashiCorp、カール・ツァイスなどの企業も開発に携わっており、例えばDaprのPHP向けSDKはAutomatticに籍を置くエンジニアによって開発されたとのこと。また、カール・ツァイスはDaprをすでに自社システムに導入しているそうです。

Daprはバージョン1.0に到達できたことについて「コミュニティによる努力の証である」とコメント。今後は既存のビルディングブロックを強化していくとともに、クラウドの設定の読み書きといった新しいビルディングブロックの提供も視野に入れているそうです。
・関連記事
NGINXがKubernetes向けサービスメッシュ「NGINX Service Mesh」を発表 - GIGAZINE
たった60秒でKubernetes環境を構築できる「MicroK8s」にHAクラスター機能が追加 - GIGAZINE
DOOMで敵を倒してKubernetesのPodを強制終了させまくれる「Kube DOOM」レビュー - GIGAZINE
GoogleのGmailやクラウドなどのサービスを支える技術「Borg」の統計情報が公開 - GIGAZINE
マインクラフトがAWSの利用を終えてMicrosoft Azureへ移行 - GIGAZINE
・関連コンテンツ
in ソフトウェア, ネットサービス, Posted by darkhorse_log
You can read the machine translated English article Distributed application runtime 'Dapr' t….