Spring CloudでMicroservicesとEvent Sourcingのソースを読んでみる

最初にイマココ

  • 自社開発のWebサービス
  • 10年くらい常にビジネスの要望を柔軟に・素早く取り入れて
  • 「最初から完璧でずっと変わらない」のではなくて「常に良い状態に改善し続けていける」
  • そういうサービスを作れたらいいなぁって思ってる。

ので、DDD、Microservices、Spring Cloudらへんを試しておきたい。という感じ。

最初に言っておきたかったのは、DDDやMicroservicesやSpring Cloudに関して「すごいいいよ!」って薦めるレベルにまだ僕はいなくて「いいかどうかをプライベートで触ってみて確かめたい」ってくらいの位置ですってことね。

今月上旬に教えてもらった記事をまだ読んでる


この記事

いい記事。これ自体は読み終わってる。今はデモアプリのソースコードを読んでる。

www.kennybastani.com

ざっくりまとめると

結果整合性

マイクロサービスの場合には結果整合性を考えることが大切になってくるよね。

イベントソーシング

その結果整合性の実現方法として、DBのトランザクションログみたいな考え方の、イベントソーシングっていうやり方がある。

IDDDにも書いてたね。

いまぐぐったら、ますださんのん分かりやすかった: state ソーシング、 event ソーシング 【スタイルの選択肢】 | システム設計日記

Spring Cloud

Spring Cloudを使ってそのデモアプリを作ったよ。マイクロサービスアーキテクチャで、イベントソーシングを使ったデモアプリ。

Reactor

さらに、ロジックにはReactorを使ってる。

という僕にとって盛りだくさんなもの。あと、起動にはDocker Composeを使ってるっぽいね。

全体像

詳しい図は、記事を参照すると良いんだけど。大きく3つのグループに分かれてて。こんな風になってる:

  • 1) Front
    • Online Store Web
  • 2) Spring Cloud Backing Services
    • Config Service
    • Discovery Service
    • Edge Service
    • User Service
  • 3) Backend Microservices
    • Catalog Service
    • Account Service
    • Inventory Service
    • Cart Service
    • Order Service

そっかー。User Serviceは2階層目に入るんだーとか、色々興味深い。

ほんで、イマココ

基盤

ConfigとDiscovery(Eureka)は以前に勉強してたので何となく大丈夫。

Edge(Zuul)も以前勉強したはずなんだけど、全く忘れてるので明日の朝思い出そう。あわよくば、User Serviceの認証の部分まで分かればいいなー。内部的にHystrixを使ってるっぽいから、そこも思い出さなきゃかもだけど。

そこまでがSpring CloudでMicroservicesを構築するときの基盤みたいなものかな。

ビジネスロジック

その後は、Backend Microserviceを読んで、Event Sourcingをどんな風に実装してるのかを見たい。こっちは、ビジネスロジックって感じだね。今回はここに一番興味がある。

やらないこと

Reactorに関しては、今回はあんまり深く考えない。こんな書き方でリアクティブなのを簡潔に書けるんだなーってくらいに留めといて、また後日ちゃんと勉強する。

という、頭の整理を、ブログを使ってしてみた。よし。明日はZuulとかRibbonとからへんを思い出せばいいんだな。おやす。