タグ

CQRSに関するefclのブックマーク (50)

  • リアクティブは難しいが役に立つ - Chatwork Creator's Note

    お久しぶりです、かとじゅん(@j5ik2o)です。テックブログを書くのは何年ぶりか…。 サービスが停止したり応答性が低下すると、お叱りや逆に励ましをいただきますが、エンジニアとして設計レベルからそういった問題に対処するにはどうするか、日々精進しているところですmm。この記事はそういう論点で注目されている「リアクティブ原則」についてまとめてみたいと思います。 それなりのボリュームになってしまったので、時間があるときに読んでいただければと思います。 さて、Linux Foundation内の新たなトップレベルプロジェクトであるReactive Foundationが主催する、Reactive Summit 2020が11月10日にオンラインで開催されたので参加しました。 www.reactivesummit.org 参加されていたスピーカーはLightbendをはじめ、Netflix, Fac

    リアクティブは難しいが役に立つ - Chatwork Creator's Note
    efcl
    efcl 2020/11/23
    リアクティブ原則(The Reactive Principles) https://principles.reactive.foundation/principles/index.html について。 CQRS + ES、CAP定理に当てはめる問題、整合性について
  • 技術系の境界線 | La Verda Luno

    これは 設計ナイト2020 の感想記事です。 CQRS と GraphQL の話が主な話題でしたが、ディスカッションなどで示唆に富む話を聞けたので、(レポートというよりも)考えたことを書き残しておきます。 発表内容についてはあまり書きませんが、すでに 設計ナイト2020感想 - Qiita と 設計ナイト2020に参加してきました。 | achanBlog という記事があります。 Q&A やディスカッションについても #sekkeinight 付きのツイートを見ると、何が交わされたか把握できると思います。 コンテキスト DDD・CQRS・GraphQL・アーキテクチャの進化戦略などについて深い話(触ってみたレベルでなく実運用等を経たもの)についても興味深かったのですが、サーバー再度にとっての理想的なモデルとフロントエンドの要求が衝突する境界線について考えるきっかけになりました。もしかしてサ

    技術系の境界線 | La Verda Luno
    efcl
    efcl 2020/11/14
    CQRSによるRead系の分離によるシンプル化。 Readの処理を肥大化させないものとしてのGraphQL
  • CQRS/ESによって集約の境界定義を見直す - かとじゅんの技術日誌

    peing.net メッセージングシステムのお題のようです。面白そうなのでちょっと考えてみよう。 問題提起 集約候補が以下の3つ。 ユーザー 企業 スレッド メッセージ スレッド集約はメッセージを複数保持するようです。 1000件のメッセージを保持するスレッド集約を更新した際、1000件のアップデートが行われる スレッド集約内部で更新された属性を把握していない場合は、リポジトリでは全メッセージ分の更新となる。これを避けるための仕組みはどう実装するのか? ということが指摘されている。まぁわかります。これはCQRS/ESなら解決できるよと言ってみる 問題の分析 で、僕ならどう考えて実装に落とすかつらつらまとめてみよう。CQRS/ES前提です。Akkaの成分は少なめでScalaの擬似コードで解説します。コードはコンパイルしてないので…おかしなところあるかも。 問題はスレッド集約がメッセージの集合

    CQRS/ESによって集約の境界定義を見直す - かとじゅんの技術日誌
    efcl
    efcl 2020/07/18
    コレクションデータを持つエンティティの整合性の問題をCQRS/ESでかいけつする話
  • CQRS実践入門 [ドメイン駆動設計] - little hands' lab

    この記事では、CQRSの入門として、軽量CQRS、別名クエリモデルについて解説します。 DDDの参照系処理で発生する課題 解決策 CQRSのメリット、デメリット 実装時の注意事項 部分的導入について なぜQueryServiceの定義がUseCase層なのか 整合性をどうやって担保するのか よくある誤解 データソースを分ける必要があるのか イベントソーシングとの関係 過去資料との繋がり もっと詳しく知りたい方は 現場での導入で困ったら DDDの参照系処理で発生する課題 DDDで定義されている実装パターンを使っていると、基的には永続化層との入出力はRepositoryを使うことになります。 更新系の処理ではEntityやValueObjectでドメインの知識を表現し、Repositoryを使って集約単位で永続化するという構成をとると、非常にメンテナンス性の良いものになります。 参考過去記事

    CQRS実践入門 [ドメイン駆動設計] - little hands' lab
    efcl
    efcl 2019/12/08
    CQRSのView/データの分離について
  • CQRS and Event Sourcing Intro For Developers - Altkom Software

    efcl
    efcl 2019/05/29
    CQRSとEvent Sourcing
  • EventStoreを用いたCQRS+イベントソーシングの実践と考察 - Qiita

    TL;DR Dockerを用いて以下の環境を用意し、EventStoreの挙動を確認しイベントソーシングの実現方法について検討しました。 EventStoreSampleをcloneしてdocker-compose up すれば動きます。 詳細な使用方法は↓。 はじめに ステートレスアプリケーションでEvent Sourcingするなら、EventStoreを使うとよさそう。仕様をよくみたら、楽観ロック機構もあるようだし実用に耐えれそう。https://t.co/EZu6EsG5VP — かとじゅん (@j5ik2o) 2019年4月24日 にてEventStoreの存在を知ることができました。ありがとうございました。 イベントソーシングとは 書籍だと 実践ドメイン駆動設計 .NETのエンタープライズアプリケーションアーキテクチャ: .NETを例にしたアプリケーション設計原則 ネットだと

    EventStoreを用いたCQRS+イベントソーシングの実践と考察 - Qiita
    efcl
    efcl 2019/05/13
    EventStoreを使ったイベントソーシング
  • Aecor による純粋関数型イベントソーシング - Qiita

    Aecor という純粋関数型 Event Sourcing ライブラリをざっくり紹介したい。 概要 Aecor は Denis Mikhaylov というロシア技術者が開発した、Scala の純粋関数型イベントソーシングライブラリ。作者が勤務するオンライン予約会社の Evotor 社では、Arcorベースの数十のサービスが実運用されているという。 ラテン語で海の意味で、あえて五十音で近似すると、ラテン語読みだとアエコル、英語読みだとエイカーみたいな感じ。 純粋関数型DDD に親和性が高い。OOP とは逆に、FP ではデータと振る舞いを分離することが基となるが1、この辺りは関数型 DDDでも同様。分離の仕方にはいくつかあるが2 3、Aecor 流では Tagless Final で実現する。 Typelevel エコシステムのライブラリ、Cats, Cats Effect, FS2 など

    Aecor による純粋関数型イベントソーシング - Qiita
    efcl
    efcl 2019/03/06
    関数型でDDD/CQRS/ESを行うAecorについて https://github.com/notxcain/aecor
  • リードモデルのN+1問題とCQRS - Qiita

    背景 集約とリポジトリなどをアプリケーションサービスやコントローラから呼び出し、書き込みや読み込みの要求を実装することがよくあります。ほとんどの場合、トランザクション整合性の観点から考えると、書き込み要求は集約単位になりますが、読み込みは結果整合性も含めると、複数種の集約を合成した、いわゆるリードモデルを返すことが多いです。この記事では、このリードモデルに起こるN+1問題とCQRSの関連性についてまとめたいと思います。 リードモデルを返す処理 みなさんは、どのようにしてリードモデルを構築していますか? いろいろな方法がありますが、ここでは以下に観点を絞ってみたい。 複数種のリポジトリを使って集約を取得し、リードモデル用DTOに詰め直す リポジトリを使わず、ストレージに対応したDAOで、JOINするような問い合わせを行う 対象のドメイン 話をわかりやすくするために、想定のドメインが必要ですね

    リードモデルのN+1問題とCQRS - Qiita
    efcl
    efcl 2019/01/31
    readを分けることで1 + N問題を解決する話
  • the native web | Framework

    wolkenkit empowers you to build and run scalable distributed web and cloud services that process and store streams of domain events. wolkenkitbuild distributed web and cloud APIswolkenkit is a CQRS and event-sourcing framework based on Node.js. It empowers you to build and run scalable distributed web and cloud services that process and store streams of domain events. It supports JavaScript and

    the native web | Framework
    efcl
    efcl 2018/12/21
    CQRS、イベントソーシングを目的としたNode.jsフレームワーク
  • DDD+CQRSを.NETでやるならReactivePropertyが便利なのでは、という話 - Qiita

    お勉強でTodoListをDDD的流れで作成していたらReactivePropertyが良かったので紹介して見ようと思いました。 以下、作成記録です。 TL;DR ドメインイベントのメッセージ基盤にはMessageBrokerで必要十分。 CQRSのコマンド部はReactiveCommandを継承して実装すれば便利なのでは。 どちらも.NET Standardでも使えるからドメイン層を使い回し可能。 オレオレで作るよりかは良いかと。 ステークホルダーからの要件っぽい内容を定義しておく TodoListを作成したい。 ひとつのTodoをタスクとして管理する。 管理する内容はタイトルと説明とそのTodoの状態。 状態は2値ではなく実行中を含めた3値としたい。 タスクのリストを表示して、ひとつを選択すると詳細な情報が表示されるようにしたい。 タスクを新規に作成するとそのタスクの詳細な情報を入力で

    DDD+CQRSを.NETでやるならReactivePropertyが便利なのでは、という話 - Qiita
    efcl
    efcl 2018/11/17
    ドメインイベントのコマンドをReactivePropertyのCommandを継承して実装する話
  • マイクロサービスで DDD と CQRS パターンを使ってビジネスの複雑さに取り組む

    ビジネス ドメインの理解を反映するマイクロソフトサービスまたはコンテキスト境界ごとのドメイン モデルを設計する このセクションでは、複雑なサブシステムへの取り組みが必要な場合に実装する高度なマイクロサービスについて、またドメイン専門家の知識と絶えず変化するビジネス ルールに由来するマイクロサービスについて説明します。 このセクションで使用するアーキテクチャ パターンは、図 7-1 に示すように、ドメイン駆動設計 (DDD) とコマンドクエリ責務分離 (CQRS) の手法に基づいています。 図 7-1。 外部マイクロサービス アーキテクチャとマイクロサービスごとの内部アーキテクチャ パターンとの対比 ただし、ASP.NET Core Web API サービスの実装方法や、Swashbuckle または NSwag を使った Swagger メタデータの公開方法など、データ駆動型マイクロサービ

    マイクロサービスで DDD と CQRS パターンを使ってビジネスの複雑さに取り組む
    efcl
    efcl 2018/03/10
    マイクロサービス、DDD、CQRSパターンについての文章。 DDDやCQRSについて具体的な解説が多い。 トップレベルアーキテクチャではないが、どのようなときに適応すると効果的なのかについて書かれてる
  • Web API を使用したマイクロサービス アプリケーション レイヤーの実装 - .NET

    依存関係挿入を使用し、アプリケーション レイヤーにインフラストラクチャ オブジェクトを挿入する 前のセクションで述べたように、アプリケーション レイヤーは、Web API プロジェクトや MVC Web アプリ プロジェクトなどで作成する成果物 (アセンブリ) の一部として実装できます。 ASP.NET Core を使用して作成されたマイクロサービスの場合、アプリケーション レイヤーは通常、Web API ライブラリになります。 ASP.NET Core から来るもの (そのインフラストラクチャとコントローラー) を、カスタム アプリケーション レイヤー コードと分離したい場合は、アプリケーション レイヤーを別のクラス ライブラリに配置することもできますが、これは任意です。 たとえば、注文マイクロサービスのアプリケーション レイヤー コードは、Ordering.API プロジェクト (AS

    Web API を使用したマイクロサービス アプリケーション レイヤーの実装 - .NET
    efcl
    efcl 2018/03/10
    MediatRを使ったメディエイターパターンでのコマンドハンドルについて。 メディエイターパターンで、コマンドの呼び出しとそのハンドリングを分離して、結合性を現象させる。 コマンドの処理は横断的な関心事隣りやすい
  • DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話

    より詳細なCQRSに関する資料はこちら https://little-hands.hatenablog.com/entry/2019/12/02/cqrs 参考資料:http://little-hands.hatenablog.com/entry/jjug2017fall 社内新規プロダクトでDDD, CQRSの思想をベースとしたアーキテクチャを構築し、コマンド(更新系処理)ではSpring Data JPA(Hibernate)を、クエリ(参照系処理)ではjOOQを採用しました。 結果としてそれぞれのORMの良いところを生かした組み合わせのアーキテクチャが構築できたので、その経緯と得られた知見についてお話ししたいと思います。 以下のようなトピックを考えています。 ・CQRSの定義とメリットデメリット ・DDD,CQRSを検討するにあたってのORMの選定ポイント ・構築したアーキテクチャ

    DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
    efcl
    efcl 2018/02/13
    CQRについて。 読み書きのモデルを分離する所取り入れた利点について
  • Evolving CQRS and Event Sourced Systems

    FINOS and Open Source in the Financial Services Industry Elspeth Minty discusses the background of FINOS, introduces some of its projects and initiatives, and the importance of FINOS to open source in the financial services industry.

    Evolving CQRS and Event Sourced Systems
    efcl
    efcl 2018/02/08
    EventSourcingの課題について。 イベントのバージョニングとスキーマ。read modelの作成コストとProjection
  • Money Transfer Saga | ProtoActor

    Money Transfer Saga Part 1 - The Scenario Part 2 - The Implementation Part 3 - The Audit Log Part 4 - Supervision, error kernels and idempotency Part 5 - Results The Saga pattern was first coined by Hector Garcia-Molina and Kenneth Salem in their paper, Sagas. Although originally described in the context of a database management system, the Saga pattern has gained popularity in a distributed syste

    efcl
    efcl 2018/01/27
    Sagaパターンを使った送金システムを実装するチュートリアル
  • Patterns for designing flexible architecture in node.js (CQRS/ES/Onion)

    In this post, I’ve presented a project that is using CQRS and Event Sourcing patterns. It’s organized using onion architecture and written with TypeScript. “flexible” —a free stock photo I found which makes this blog post much nicer and artistic.“flexible” how?I’m using the term flexible to promote an architecture which is able to adapt to different kind of environments. More precisely, I’m trying

    Patterns for designing flexible architecture in node.js (CQRS/ES/Onion)
    efcl
    efcl 2017/12/18
    TypeScriptを使ってCQRS+EventSoucingのパターンでNode.jsアプリを実装する記事。 サンプルプロジェクトと共にコマンドからイベントを作りそれをRepositoryに保存する流れを紹介してる。
  • #jjug_ccc 僕がDDDを勉強したりDomain Event使ってみたいと思ったりKafkaでCQRSの素振りをしている背景と現状 - Mitsuyuki.Shiiba

    11/18(SAT)にJJUG CCCという、日Javaコミュニティの最大規模のカンファレンスで発表してきましたー。1000人を超える申し込みがあるような感じです。そんな場で登壇させていただいて幸せです。 www.java-users.jp 僕のセッションにも 沢山の人が来てくれました。ありがとうございます(∩´∀`)∩ワーイ お話しした内容は この記事のタイトルの通り、僕がDDDを勉強したりDomain Event使ってみたいと思ったりKafkaでCQRSの素振りをしている背景と現状についてです。スライドはこちら。 speakerdeck.com セッションに参加してない方にも喋った雰囲気が伝わるといいなと思って、コメントを加えたりしてみました。スライド内のリンクをクリックしたい方はSpeaker DeckからPDFでダウンロードができるのでそちらをどうぞ。 デモプロジェクト もアッ

    #jjug_ccc 僕がDDDを勉強したりDomain Event使ってみたいと思ったりKafkaでCQRSの素振りをしている背景と現状 - Mitsuyuki.Shiiba
    efcl
    efcl 2017/12/05
    CQRSとESについて
  • Event Sourcing and CQRS with .NET Core and SQL Server

    You understand Event Sourcing and CQRS but are you ready for the difficult, complex edge cases in your domain? You’re a developer in a .NET/SQL Server shop. Your team has used Domain-Driven Design in the past with both success and failure. You have a new project. It’s complex - it has requirements that are new to your team and the pressure is on… It as a significant impact on the competitive advan

    Event Sourcing and CQRS with .NET Core and SQL Server
    efcl
    efcl 2017/10/24
    CQRSとESについての本
  • Derek Comartin - Fat Controller CQRS Diet

    efcl
    efcl 2017/10/21
    肥大化していくコントローラー問題と Featureで(ディレクトリを)切る構造のトレードオフについて
  • http://www.matthewrenze.com/presentations/clean-architecture.pdf

    efcl
    efcl 2017/09/25
    レイヤードアーキテクチャ、CQRS、EventSoucingについて