-
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
8 changed files
with
334 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,7 @@ | ||
{ | ||
"azureFunctions.projectSubpath": "src\\Sekiban.Testing", | ||
"cSpell.words": [ | ||
"appsettings", | ||
"Stöckl" | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
# Sekiban - イベントソーシングとCQRSフレームワークの紹介 | ||
|
||
## Sekibanとは何ですか? | ||
|
||
**Sekiban** は、**イベントソーシングとCQRS** を活用したアプリケーション開発フレームワークです。C# .NET Core 7+を使用して構築され、開発者が宣言的なAPIを使用してイベントソーシング应用を作成することを可能にします。Sekibanは、[Microsoft Azure Cosmos DB](https://azure.microsoft.com/en-us/products/cosmos-db)や[Amazon Dynamo DB](https://aws.amazon.com/dynamodb/)などのさまざまなイベントストアをサポートしており、AzureまたはAWS上での展開を容易にします。 | ||
|
||
## イベントソーシングとCQRSを理解する | ||
|
||
このページを見ている皆様は、おそらくすでにイベントソーシングとCQRSについて知っているでしょう。ただし、詳しい解説が必要な場合は、グレッグ・ヤング氏の有益なYouTubeトークが参考になるかもしれません。CQRSとイベントソーシングについての2014年のCode on the Beachイベントでのグレッグのプレゼンテーションの[要旨](https://www.eventstore.com/blog/transcript-of-greg-youngs-talk-at-code-on-the-beach-2014-cqrs-and-event-sourcing)をチェックしてみてください。 | ||
|
||
私たちは、フレームワークに頼るのではなく、イベントソーシングシステムを自分で作成することをグレッグが提案しているという見解に同意します。なぜなら、自分のフレームワークを構築することで、イベントソーシングの概念についての理解を深めることが可能になるからです。 | ||
|
||
しかし、多くの開発者はビジネスロジックに集中し、ツールやドキュメントデータベースを迅速に進めることを好みます。クラウド全体でのデータベースの速度とスケーラビリティの最近の進歩を考えると、フレームワークとクラウドソリューションを使用したイベントソーシングはかなり効率的になり得ます。幸いなことに、Sekibanはオープンソースであるため、深く掘り下げたい開発者はリポジトリ内のソースコードで実験することができます。 | ||
|
||
**免責事項:** フレームワークを使用するにもかかわらず、開発者はイベントソーシングの概念に精通していることが重要です。特に、ローンチ後の成長するユーザーベースとデータセットのクエリパフォーマンスを最適化する際や、それをマイクロサービスに変換したりパフォーマンスを向上させる際には、イベントソーシングとCQRSの適切な知識が必要不可欠です。 | ||
|
||
## Sekibanの主な機能 | ||
効果的で効率的なSekibanを利用して、アプリケーション開発体験を向上させることができます: | ||
|
||
- **シンプルなコマンドとイベント:** アプリケーション内での機能作成を容易にする。 | ||
- **パブリッシュ専用のコマンドとイベント:** 集約を投影せずにイベントを保存する方法を提供する。 | ||
- **楽観的な集約バージョンチェック:** 同時環境での効率的な競合検出を可能にする。 | ||
- **イベントバージョン:** 前方互換性の向上を可能にする。 | ||
- **シングル/マルチ集約プロジェクション:** 個々の集約レベルと複数の集約レベルの両方でのプロジェクションをサポートする。 | ||
- **プロジェクションスナップショット:** 特定の時点でのプロジェクションの状態をキャプチャする能力を提供する。 | ||
- **大規模なスナップショットストレージ:** Azure Blob StorageやAmazon S3を使用して大きなスナップショットを収容する。 | ||
- **組み込みのテストフレームワーク:** 統合されたスイートを使用してテストを簡素化する。 | ||
- **Cosmos DB / Dynamo DBデータストア:** スケーラブルでグローバルに分散したデータストレージソリューションを提供する。 | ||
- **テナントパーティション:** テナントに基づいてデータを分離することで、データ管理と取り扱いを容易にする。 | ||
- **複数の投影からのクエリ:** より動的なデータ分析のために、範囲のプロジェクションからクエリを可能にする。 | ||
- **SwaggerをサポートしたコマンドとクエリWeb APIジェネレーター:** API設計、構築、文書化を効率化する。 | ||
|
||
これらの機能に加えて、開発者はビジネス面に集中し、不必要な複雑性なく実用的な解決策のためのコマンド、イベント、プロジェクション、テスト、クエリを実装できます。 | ||
|
||
## 互換性 | ||
.NET 7と8に対応しています。 | ||
**Cosmos DB**の場合、Sekibanは[階層型のパーティションキー](https://learn.microsoft.com/en-us/azure/cosmos-db/hierarchical-partition-keys?tabs=net-v3%2Cbicep)機能をサポートしています。これにより、テナント(またはルートパーティションキー)、集約タイプ、パーティションキーを作成することにより、Cosmos DBを使用したクエリがより効率的になります。 | ||
***Dynamo DB*** をSekibanと共に使用する場合、パーティションキーとソートキーを設定する必要があります。 | ||
|
||
|
||
## Sekibanプロジェクトの規模 | ||
|
||
Sekibanバージョン0.14の時点で、フレームワークには組み込みのマテリアライズドビュー作成ヘルパー機能はありません。Sekibanのライブプロジェクション機能は、小〜中規模のシステムに適しています。通常、Sekibanはシステムメモリがマルチプロジェクションのデータを収容できるサイズがある限り、ライブプロジェクションを処理できます。 | ||
ライブプロジェクションについての詳細な情報は、Anton Stöckl氏の興味深い記事[イベントソーシングとCQRSでのリードモデルのためのライブプロジェクション(英語)](https://medium.com/@TonyBologni/live-projections-for-read-models-with-event-sourcing-and-cqrs-42dd18b19fd0)を参照してください。 | ||
|
||
開発者は、Cosmos DBの変更フィード機能やDynamo DBの変更フィード機能を使ってマテリアライズドビューを実装することができます。変更フィードを用いたマテリアライズドビューの作成は比較的簡単なプロセスであるにもかかわらず、それはSekiban Frameworkのコア機能に直接関連するものではないため、フレームワークには含まれていません。 | ||
|
||
## オープンソース | ||
|
||
Sekibanは、Apache 2.0ライセンスの下でオープンソースとしてリリースされています。[ライセンス](https://github.com/J-Tech-Japan/Sekiban/blob/main/LICENSE)はこちらからご覧いただけます。このプロジェクトをフォークして、バグを修正したり、新機能を追加したりする開発者の方々を歓迎します。貢献に興味がある方のために、詳細な[貢献ガイドライン](https://github.com/J-Tech-Japan/Sekiban/blob/main/CONTRIBUTING.md)と[行動規範](https://github.com/J-Tech-Japan/Sekiban/blob/main/CODE_OF_CONDUCT.md)を提供しています。このプロジェクトはJ-Tech Japanが所有し、その未来の方向性を決定します。 | ||
|
||
## サポートとトレーニング | ||
|
||
J-Tech Japanは、高品質のフレームワークを維持するために、このプロジェクトのスポンサーを歓迎します。トレーニングやセミナーが必要な場合は、ぜひ[[email protected]](mailto:[email protected])までお問い合わせください。 | ||
|
||
今日からSekibanを使い始めてみてください。[クイックスタートガイド](./quick-start.md)をチェックしてみましょう。 | ||
|
||
|
||
|
||
|
||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
# 早速始めましょう | ||
|
||
## 実験してみよう。 | ||
|
||
迅速に始めるために、まずはすでに設定されたプロジェクトを使ってsekibanをテストしてみることをおすすめします。 | ||
|
||
リポジトリ内の`/Tutorials/1.GetStarted` フォルダにあります。 | ||
|
||
### GetStarted Solutionを開く。 | ||
|
||
Get Started .NET 7で作成されています。試す方法は複数あります。 | ||
|
||
1. Cosmos DBを使用 [Cosmos DBを使って試す](./test-out-cosmos.md) | ||
2. Dynamo DBを使用 [Dynamo DBを使って試す](./test-out-dynamo.md) | ||
|
||
|
||
### 自身のSekiban Projectを作成する。 | ||
|
||
基本的に、自分のプロジェクトを作成するためには3つのプロジェクトが必要です。 | ||
|
||
自分のプロジェクトを作成するためには、`/Tutorials/1.GetStarted` フォルダ内のチュートリアルプロジェクトを参考にできます。 | ||
|
||
1. Domain Project。このプロジェクトは通常、Aggregate、Command、Event、Projection、Queryなどのコアなイベントソーシングの内容のみを含みます。 | ||
|
||
Domain Projectは`Sekiban.Core` Nugetパッケージを追加します。 | ||
|
||
Domain Projectは Aggregate、Command、Event、Projection、Queryなどを含みます。 | ||
|
||
Domain Projectには Domain Dependency Definitionが含まれています。 | ||
|
||
2. Test Project。このプロジェクトはDomain Projectをテストします。 | ||
|
||
Test Projectは Domain Projectを参照します。 | ||
|
||
Test Projectは Sekiban.Testing Nugetパッケージを追加します。 | ||
|
||
Test Projectには Aggregate Test および/または Unified Testが含まれています。 | ||
|
||
3. Executing Project。このプロジェクトはコンソールアプリケーション、Webアプリケーション、ファンクションアプリケーション、またはその他の実行形式のアプリケーションです。多くの場合、Domain ProjectにアクセスするためのWeb APIインターフェースになります。 | ||
|
||
Executing Projectは Domain Projectを参照します。 | ||
|
||
Executing Projectは Infrastructure projectを追加します。現在、Sekibanは Azure | ||
Cosmos DB および AWS Dynamo DBをサポートしています。 | ||
|
||
Executing ProjectがAzure Cosmos DBを使用する場合は、`Sekiban.Infrastructure.Cosmos` Nugetパッケージを追加します。 | ||
|
||
Executing ProjectがAWS Dynamo DBを使用する場合は、`Sekiban.Infrastructure.Dynamo` Nugetパッケージを追加します。 | ||
|
||
Executing Projectが Sekiban.Web API Generatorを使用したWeb API Projectとなる場合は、以下の項目が含まれます。 | ||
|
||
- Sekiban.Web Nugetパッケージを追加します。 | ||
- IWebDependencyDefinitionを継承した Web Dependency Definition。 | ||
- Program.csは Sekiban.Core 設定として`AddSekibanCoreWithDependency`を持つ。 | ||
- Program.csはインフラ設定として`AddSekibanCosmosDB`を持つ。 | ||
- Program.csは Web 設定として`AddSekibanWeb`を持つ。 | ||
|
||
|
||
これらは基本的なプロジェクト設定です。詳細情報は [Sekiban Event Sourcing Basics](./sekiban-event-sourcing-basics.md) でフォローされます。 |
Oops, something went wrong.