目次
マイクロサービスとは1つのWebApiを複数に分散することです。分散することで採用する言語やフレームワークを変更できたり、 サーバがダウンした時の障害を最小限に抑えられるなどメリットを得られます。Daprとはそのマイクロサービスを通信するランタイム
eShopOnContainerというマイクロソフトが提供しているサンプルコードがあるので、周辺のミドルウェアなどの調査したので自分用の備忘録としてまとめた。
アーキテキチャ
フロントエンドは各マクロサービスには直接通信しません。Api gatewayとaggregatorを介して通信します。aggregatorは各マクロサービスを
フレームワーク
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やライブラリを追加したり、テクノロジーの詳細を理解する手間を省いてくれるらしい