Go言語でCQRS+ESの アプリを作ってみた
by
Kizuku
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Go言語でCQRS+ESの アプリを作ってみた イベントソーシング・CQRS勉強会 #1 Kizuku
Slide 2
Slide 2 text
Kizuku 九州工業大学 学部4年 →先日、上京 好きな言語: Go X: @Kizuku_tech 趣味: イベント・カンファレンス 参加/運営 自己紹介
Slide 3
Slide 3 text
今年の正月に CQRS+ESでアプリを作った
Slide 4
Slide 4 text
そこまで踏み込んだ 内容ではないです 🙇♂️
Slide 5
Slide 5 text
話すこと 実装ベースの説明 Goの実装で便利だったライブラリ Goの実装で楽だったこと/辛かったこと 話さないこと アプリの詳細 詳しい話(是非懇親会で!)
Slide 6
Slide 6 text
イベントストーミング Figjamを用いた 参考:イベントストーミング入門(なるセミ) https://youtu.be/jC9lE4YqgyY
Slide 7
Slide 7 text
技術構成 EventStore DynamoDB ReadModel TiDB GraphQL Next.js
Slide 8
Slide 8 text
使用ライブラリ event-store-adapter-go https://github.com/j5ik2o/event-store-adapter-go アクターシステムを用いずに Event Sourcingを行うライブラリ https://speakerdeck.com/j5ik2o/akutasisutemunilai -razuevent-sourcingsurufang-fa-nituite
Slide 9
Slide 9 text
Goの実装で楽だったこと Protocol Buffersとの親和性が高い lambdaの関連ライブラリが多く使いやすい
Slide 10
Slide 10 text
データのシリアライズ Protocol Buffersを用いてシリアライズ Goもprotobufも開発元が同じで親和性が高 い oneofフィールドがイベントのデータの取り 扱いと相性がいい
Slide 11
Slide 11 text
protobuf
Slide 12
Slide 12 text
データのシリアライズ bufを用いてコード生成 protoc-gen-goのプラグインを使用
Slide 13
Slide 13 text
Goの実装で辛かったこと 他言語と比べるとパターンマッチがやや貧弱 やや冗長な書き方が多くコードが長くなりが ち
Slide 14
Slide 14 text
Goでのパターンマッチング type switchで動的な型に応じた処理ができる
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
Goでのパターンマッチング Rustなどの言語のパターンマッチ機能と比べ るとGoはシンプルでわかりやすい 厳密性はないため、抜け漏れは発生しやすい
Slide 17
Slide 17 text
まとめ CQRS+ES 難易度が高いように見えるが、(簡 単な実装であれば)案外手は動く 難しい部分に関してはいろんな人がライブラ リを作ってくれている 好きな言語でトライしてみる!!