【ダッパー】

Dapr(ダッパー) とは?

💡 マイクロサービスの面倒ごとを全部引き受けてくれる、頼れるサイドカー相棒
📌 このページのポイント
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で呼ぶだけで使えるようにしてくれるんだよ

ひよこ ひよこ

サイドカーってバイクの横に付いてるやつみたいなもの?

ペンギン先生 ペンギン先生

まさにそのイメージ!アプリ本体の横で別プロセスとして動いて、面倒な共通処理を代わりにやってくれるんだ。アプリからは「localhost:3500」にHTTPリクエストを投げるだけで、サービス呼び出しもPub/Sub状態管理もできるよ

ひよこ ひよこ

特定の言語じゃないと使えないとかある?

ペンギン先生 ペンギン先生

それがDaprの大きな強みで、言語やフレームワークに一切依存しないんだ。Go、PythonJavaNode.js、.NET、何でもOK。HTTPgRPCが使えればいいから、既存のアプリにも後付けできるよ

ひよこ ひよこ

サービスメッシュとはどう違うの?

ペンギン先生 ペンギン先生

いい質問だね。Istioのようなサービスメッシュはネットワークレベルの制御(トラフィック管理、mTLS)が中心だけど、DaprはアプリケーションレベルのAPI状態管理Pub/Subワークフロー)を提供する。実は両方を組み合わせて使うこともできるんだよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Dapr」って出てきたら「マイクロサービスの共通機能をサイドカーで提供するランタイム」と思えればだいたいOK!
📖 おまけ:英語の意味
「Distributed Application Runtime」 = 分散アプリケーションランタイム
💬 Microsoftが2019年にオープンソースとして公開したプロジェクトで、現在はCNCF(Cloud Native Computing Foundation)のインキュベーティングプロジェクトだよ
← 用語集にもどる