AWSサーバレスアーキテクチャに基づいてCQRS + Event Sourcingバックエンドを実装しようとしています。 問題はreadmodelの更新で発生します。AWS Lambdaを使用したサーバレスCQRS + EventSourcing ReadModelの更新
イベントがイベントストアに保存されると、SNSに公開されます。 SNSは次にUpdateReadModel
ラムダを呼び出します。 いくつかのシーケンシャルイベントがSNSに公開されると、いくつかのラムダが呼び出されます。
最初のの問題は、すべてが同じReadModelアップデートを実行し、実際にはすべてのイベントに対して1つのラムダのみを呼び出さなければならないということです。
第2のの問題は、いくつかのラムダの実行後に最終的なReadModel状態が壊れることがあります。
ReadModelごとに1つのラムダが呼び出される必要があります。
可能な解決策:
使用のMessageBroker(RabbitMQの又はカフカ)+ EC2インスタンスが
UpdateReadModelLambda
を呼び出します。SNS + EC2インスタンスの後にSQSを追加し、lambdasを呼び出してSQSからイベントを取得するコードを記述します。
しかし、私はそれはサーバーレスアプローチで収まらないだと開発者が管理し、規模のコンテナまたはMessageBusの手動なければならないので、インスタンスを使用しないでしょう。
誰かが既にクラウドサービス+ CQRS + EventSourcingにこの問題を解決しているのでしょうか?
はそれを自分自身を試しませんでしたが、この事は、何が必要やっているように見えます:私たちはEventSourcingとCQRSを提供するクラウドホスト型イベントエンジンに取り組んでいるhttps://github.com/doodeck/aws-lambda-idempotent –
APIを介して超初期段階ですが、あなたが望むなら無料で試すことができます:-) https://serialized.io – hammarback
KinesisはSNSの代わりにこのストリームを流していますか?パーティションキー(=ストリームID)とソートキー(=シーケンス番号)を持つDynamoDBは、潜在的なイベントストアと考えられ、ラムダやキネシスとうまく統合されています。 – TomW