Daprでマイクロサービスを実装する備忘録

投稿者: | 2022年11月14日

 マイクロサービスとは1つのWebApiを複数に分散することです。分散することで採用する言語やフレームワークを変更できたり、 サーバがダウンした時の障害を最小限に抑えられるなどメリットを得られます。Daprとはそのマイクロサービスを通信するランタイム

 eShopOnContainerというマイクロソフトが提供しているサンプルコードがあるので、周辺のミドルウェアなどの調査したので自分用の備忘録としてまとめた。

アーキテキチャ

 フロントエンドは各マクロサービスには直接通信しません。Api gatewayとaggregatorを介して通信します。aggregatorは各マクロサービスを

eShopOnDapr reference application architecture.
eShopOnContainerのアーキテキチャ
eShopOnContainers reference application architecture.

フレームワーク

Envoy(サービスメッシュ)

 サービスメッシュマクロサービスを統括してクラスタを構築するフレームワーク。サービスメッシュを構築するフレームワーク。Istioという類似のフレームワークも存在する。

Zeebe(ワークフローエンジン)

 データベースでいうロールバックを実装するフレームワーク。例えば、カートに商品を追加するマクロサービスに処理を実行させた後にオーダーの処理を実行するマクロサービスが失敗した場合に、そのロールバックを構築するために使う。

RabbitMQ(メッセージキューイング)

 マクロサービス間の通信を一時保存するフレームワーク。クラッシュしたサービスに他のサービスが何かの通信を送信したい場合は、一時保存しておいて復旧後に送信する。

pub/sub

メッセージキューイングとは、異なるソフトウェア間でデータを送受信する手法の一つで、直接データを渡すのではなく一旦第三者のソフトウェアに預けることで、送信側も受信側も好きなタイミングで送受信処理をおこなうことができるようにする方式。

https://e-words.jp/w/%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%AD%E3%83%A5%E3%83%BC%E3%82%A4%E3%83%B3%E3%82%B0.html

Docker(コンテナ)

アプリケーションを仮想環境に配置するオープンプラットフォーム。

Kubernetes(コンテナオーケストレータ)

上記のコンテナを自動デプロイ・スケーリングするためのプラットフォーム。

Dapr (ビルディングブロック)

HTTP/gRPC API
コードにSDKやライブラリを追加したり、テクノロジーの詳細を理解する手間を省いてくれるらしい

.NET 開発者向け Dapr

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)