はじめに
ZOZOMO部プロダクト開発ブロックの木目沢です。
11/25にZOZOとChatworkさん合同でCQRSをテーマにしたCQRS Meetup【Chatwork × ZOZO】を開催しました。
開催の経緯
ZOZOMO部プロダクト開発ブロックでは、CQRSアーキテクチャの採用に際し、ZOZOの技術顧問であるかとじゅんさん(加藤潤一さん/@j5ik2o)にアドバイスをいただいてきました。今回採用したCQRSアーキテクチャをもっと広く知っていただこうと、かとじゅんさん所属のChatwork社と共同でイベントを開催しました。
登壇内容まとめ
本イベントでは、ZOZOエンジニアの岡元と、かとじゅんさんに登壇いただきました。さらに、CQRSに対して一家言ある両者によるパネルディスカッションを行いました。
当日の様子はYouTubeのアーカイブをご覧ください。
両者の発表資料はSpeaker Deckに公開されています。
店舗在庫連携のCQRSを支えるメッセージング周りの技術(株式会社ZOZOブランドソリューション開発本部ZOZOMO部/岡元政大)
弊チーム岡元の登壇では、ZOZOTOWN上での「ブランド実店舗の在庫確認・在庫取り置き」機能で採用されているCQRSアーキテクチャの詳細を共有しました。
OutBoxパターンとCDCパターンを組み合わせたアーキテクチャになっており、どのような経緯でこのアーキテクチャを採用したか、どんな利点があるかなどを説明しました。
合わせてテックブログDynamoDBによるOutboxパターンとCDCを用いたCQRSアーキテクチャの実装〜ZOZOMOでの取り組みもぜひ御覧ください。
AWSデータベースブログの記事「Amazon DynamoDBによるCQRSイベントストアの構築」を勝手に読み解く(Chatwork株式会社/加藤潤一)
かとじゅんさんの登壇では、AWSデータベースブログの「Amazon DynamoDBを使ったCQRSイベントストアの構築」という記事を紹介いただきました。元のブログ記事のCQRSのアーキテクチャの説明を補足する形で詳細に解説いただきました。
パネルディスカッション
パネルディスカッションではお互いの登壇の感想戦、及び視聴者の皆様の質問にお答えする形で話していただきました。
今回の発表のどちらを選択するかの判断基準として、コマンド側のDynamoDBのトランザクションを許容できるかが論点となっていました。お二人の結論としては、トランザクションを許容できる場合は岡元の登壇内容のような実装の方法、できない場合はかとじゅんさんに解説いただいたアーキテクチャで実装できそうだということでした。
どちらもCQRSアーキテクチャを実装するための特別なソフトウェアを利用することなく実現できます。そして、AWSマネージドなサービスのみを利用して実現できることも紹介できました。敷居が高いと思われているCQRSアーキテクチャが広がるきっかけを作れたのではないでしょうか。
最後に
ZOZOでは、プロダクト開発以外にも今回のようなイベントの開催など外部への発信も積極的に取り組んでいます。
一緒にサービスを作り上げてくれる方はもちろん、エンジニアの技術力向上や外部発信にも興味のある方を募集中です。ご興味のある方は、以下のリンクからぜひご応募ください!