【ダッパー】

Dapr(ダッパー) とは?

最終更新:
💡 マイクロサービスの共通の面倒ごとを引き受ける、頼れるサイドカー相棒

マイクロサービスなど分散アプリケーションの開発を助けるランタイム。サービス間通信、状態管理、Pub/Subなどの共通機能を、アプリの横で動くサイドカーとして提供する。

📌 このページのポイント
Dapr サイドカーアーキテクチャ アプリケーション 任意の言語/FW Go / Python / Java Node.js / .NET ... Dapr サイドカー localhost:3500 HTTP/gRPC ビルディングブロック サービス呼び出し 状態管理 Pub/Sub バインディング シークレット管理 ワークフロー コンポーネント(差し替え可能) Redis Kafka Azure AWS GCP アプリはサイドカーのAPIを呼ぶだけ。インフラの詳細はコンポーネントで抽象化
Daprのイメージ
ひよこ ひよこ
Daprって何をしてくれるの?普通にマイクロサービスを作るのと何が違う?
ペンギン先生 ペンギン先生
マイクロサービスを作ると、サービス間通信、状態管理、イベントのPub/Subなど共通の課題がたくさん出てくるよね。Daprはこれらの機能をサイドカーとしてアプリの横に置いて、HTTP/gRPCで呼ぶだけで使えるようにしてくれるんだよ
ひよこ ひよこ
サイドカーってバイクの横に付いてるやつみたいなもの?
ペンギン先生 ペンギン先生
まさにそのイメージ!アプリ本体の横で別のプロセス(Kubernetesでは同じPodに入る別のコンテナ)として動いて、共通の処理を代わりにやってくれるんだ。アプリからは、既定の設定なら「localhost:3500」にHTTPリクエストを送るだけで、サービス呼び出しもPub/Subも状態管理もできるよ
ひよこ ひよこ
特定の言語じゃないと使えないとかある?
ペンギン先生 ペンギン先生
HTTPかgRPCが使えれば、どの言語やフレームワークからでも使えるよ。Go、Java、JavaScript、.NET、PHP、Python向けには公式のSDKもあって、APIを書きやすくしてくれる。アプリにDaprのランタイムを組み込む必要がないから、既存のアプリに後から足すこともできるんだ
ひよこ ひよこ
サービスメッシュとはどう違うの?
ペンギン先生 ペンギン先生
いい質問だね。Daprの公式ドキュメントは「Daprはサービスメッシュではない」と説明しているよ。サービスメッシュはネットワーク寄りで、トラフィックのルーティングや分割が得意。Daprは開発者寄りで、状態管理やPub/Sub、アクターなど、アプリの部品になるAPIを提供する。mTLSによる暗号化、分散トレーシング、リトライは両方にある機能で、一緒に使うこともできるけど、その場合は重なる機能をどちらか一方に任せるのが勧められているんだ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Dapr」って出てきたら「マイクロサービスの共通機能をサイドカーで提供するランタイム」と思えればだいたいOK!
📖 おまけ:英語の意味
「Distributed Application Runtime」 = 分散アプリケーションランタイム
💬 Microsoftが2019年10月にオープンソースとして発表したプロジェクトだよ。2021年11月にCNCF(Cloud Native Computing Foundation)に加わって、2024年10月30日に最上位のGraduatedプロジェクトになったんだ

参考資料

← 用語集にもどる