Upgrade to Pro — share decks privately, control downloads, hide ads and more …

C#とAzure Cosmos DBで簡単にイベントソーシングを始められるSekibanのデモ

C#とAzure Cosmos DBで簡単にイベントソーシングを始められるSekibanのデモ

株式会社ジェイテックジャパン CTO Sekiban Framework メンテナ 高丘 知央

マイクロサービスとも相性の良いデータ永続化の手法であるイベントソーシングですが、実際にアプリケーションを作成するとなると様々なルールを実装する必要があります。オープンソースで先月リリースされたSekibanと、Microsoftが昨年のdotnet confで発表した dotnet Aspireを使用して比較的簡単にイベントソーシングを実装を始めるデモを行います。

Tomohisa Takaoka

January 26, 2024
Tweet

More Decks by Tomohisa Takaoka

Other Decks in Technology

Transcript

  1. C# とAzure Cosmos DBで簡単に イベントソーシングを始められる デモ .NET ラボ 2024年1月 #dotnetlab

    高丘 知央 株式会社ジェイテックジャパン スクショOK ソーシャルポストOK 質問大歓迎!!
  2. 自己紹介 高丘 知央 ( Tomohisa Takaoka ) 福岡出身、株式会社ジェイテックジャパンCTO 米国カリフォルニア州ロングビーチ在住(ロス 近く)

    • X : @tomohisa • Github : @tomohisa • Linkedin : tomohisatakaoka 自作キーボード、3Dプリント自作トラックボール製作 London Tech Talk ポッドキャストとブッククラブ出演 米国生活10年を超えて、あごひげに挑戦中 スクショOK ソーシャルポスト OK
  3. スクショOK ソーシャルポスト OK 株式会社ジェイテックジャパンについて • B2C, B2Bアプリケーションを開発、運用。主にAzureや Microsoft 技術スタックを採用 •

    兄弟会社 J-Tech Creations, Inc. 米国に拠点 • 東京とNew Yorkを拠点としたリモートチーム • 品川にある親会社 株式会社ジャパンテクニカル ソフトウェア(JTS) 、創業50年を超えた日本における歴史あ る総合IT企業 Sekiban 株式会社ジャパンテクニカルソフトウェア様 スポンサー も とに開発されています
  4. Sekiban – イベントソーシング・ CQRSフレームワーク • 2022年4月開発開始 • C#によるイベントソーシング、CQRSフレームワーク • イベントストア

    、Azure Cosmos DB or Amazon Dynamo DB • 社内 5つ以上 プロジェクトで使用中 • 2023年12月にオープンソースソフトウェアとしてリリース • 現時点で有料プランが存在せず、全て 機能を個人、業 務プロジェクトで無料で使用していただけます! sekiban.dev スクショOK ソーシャルポスト OK
  5. イベントソーシングと ? • データ 取り扱い 概念。 • データ 状態変化をイベントとして記録する。 •

    イベント 変更、削除 行わず、変更イベント、削除イベントなどを発行する • イベントソーシングに対して、従来 一般的なデータ 取扱い手法をステートソーシン グと呼ぶ。 • ステートソーシング:状態(結果)を保存する。 • イベントソーシング:過程(原因)を保存する。 • イベントソーシング 将棋 棋譜 ような概念 情報を捨てない で拡張性が高い! スクショOK ソーシャルポスト OK
  6. Sekibanで実現しようとしていること • 最低限 設定(CosmosDB 接続文字列)で開発をスタートできる • イベントソーシング 構成要素をシンプルな関数で実装する ◦ Aggregate

    集約(イベントをまとめるグループ) ◦ Command コマンド(集約にイベントを作成する実行メソッド、失敗したり、 エラーになることも可能) ◦ Event イベント(コマンドを実行して確定した事実、こ 事実を1から実行して Aggregate ステートを作成する) ◦ Query クエリー(複数集約にまたがるたくさん イベントを集約して リードモデルを構成する) • テストやAPI定義、Aspire連携などを簡単に行うため サポート機能を提供する • 早く拡張性 高いアプリケーションを開発できる選択肢 一つに! スクショOK ソーシャルポスト OK
  7. .NET Aspire と ? https://learn.microsoft.com/ja-jp/dotnet/aspire/get-started/aspire-overview から和訳 • Microsoft が 昨年11月

    dotnefconf で発表した、監視可能で、プロダクションリリース可能な 分散型アプリケーションを構築するため クラウド対応スタックです。 • 小さな相互接続した部品やサービスを利用する分散型アプリケーション 構築体験を改善するた めに設計されています • 以下 3つ 主要な部分で構成されています。 ◦ オーケストレーション : 各部品 相互接続を簡単にする機能を提供 ◦ コンポーネント : コンテナで起動するサービスや、Azure マネージドサービス などに簡単にアクセスする機能を提供 ◦ 構成ツール : プロジェクトテンプレートやCLIにより、アプリ 作成やデプロイを 支援します スクショOK ソーシャルポスト OK
  8. デモ 1. .NET Aspire プロジェクトをMacで作成 2. 簡単な書籍管理システムをイベントソーシングで定義 3. 書籍管理システム Web

    APIを作成する 4. (時間があれ )Blazorでデータを表示 5. (時間があれ )ドメインテストを作成 残り20分くらいでどこまでできるかチャレンジ スクショOK ソーシャルポスト OK
  9. デモ まとめ 今日 デモ 詳細をZennに書きました。 .NET Aspire と Sekiban を使ってアプリ

    ケーション作り始める方法 事前準備 CosmosDB 作成からドメイン テストを作るところまで書いています でぜ ひご覧ください。 スクショOK ソーシャルポスト OK
  10. まとめ Sekiban メリット • 早く開発を開始できる • 拡張性 ある、イベントソーシング、CQRS 採用 →

    追加機能を開発しやすい • Cosmos DBにイベントをJSONで保存するため、スキーマ設計不要 • オープンソース ため無料で使用可能 • (他 イベントソーシングフレームワークと比較しても)モダンなC#を使ってシンプル に記述できるようにフレームワークが設計されている Sekiban を使って、イベントソーシングがもたらす 開発 保守性や柔軟性 向上をぜひ体感してほしい!! スクショOK ソーシャルポスト OK