タグ

DDDに関するshunt_iのブックマーク (8)

  • DDDを実践するための手引き(ドメインイベント編)

    ドメインイベントを扱う実装は様々な流派があり、記事ではなるべく一般的なものを取り上げたいと思っていますが、あくまで一例です。 実装例は Kotlin を使っていますが、他の言語でも同様の実装が可能です。 ドメインイベントとは イベントとは「過去に発生した出来事」であり、ドメインイベントは「ビジネスドメイン上で発生した重要な出来事を表すメッセージ」です。 (例: チケットが割り当てられた、注文がキャンセルされた) ドメインイベントはシステム内の状態の変化(=集約の状態の変化)を表現するものであり、通常は集約がドメインイベントの発生源となります。 用途 ドメインイベントは主に次のような目的で使用されます。 1. イベントの発生を起点に、別の処理をトリガーする ドメインイベントは、システムの異なる部分間を連携させるために使用されます。 ドメイン上の要件として「...したら...する」のようなフ

    DDDを実践するための手引き(ドメインイベント編)
  • RDBの主キー、UUID使った方がいいの?(DDD, CleanArchitecture対応)

    結論 お手軽モノリスならAutoIncrementが効率的だしこれでいいよ アプリケーション側で主キーを生成したい場合はLUIDを作る必要があるよ。GUIDで大は小を兼ねよう 主キーでGUIDを使うならULIDよりもUUIDv7がおすすめだよ ただし分散されているエンジンによってはUUIDv4の方が効率的になる場合もあるよ 主キーは原則公開しない方がいいよ UUIDv7やULIDはユニーク性を持ったInstant(timestamp)としても使えるよ 分散されたシステムでは厳密な時系列性を担保することはできないよ、あきらめてロックをかけつつ連番を一か所で生成しよう RDBのPrimary Key(主キー)とは? MySQL、PostgresQLなどのRDBでは各レコードを識別するために一意な値を必要とします。これをPrimary Key(主キー)と呼びます。別のカラムにUNIQUEなInd

    RDBの主キー、UUID使った方がいいの?(DDD, CleanArchitecture対応)
    shunt_i
    shunt_i 2024/05/24
  • システム設計日記


     (t-wada)       
    shunt_i
    shunt_i 2024/03/24
    増田亨氏の記事、カテゴリ
  • ドメイン駆動設計入門【DDDをわかりやすく解説】 | 楽水

    突然ですが、エンジニアの皆さま、Javaで開発したWebアプリケーションの構成、このようになっていませんか? データとgetter/setterだけのオブジェクト(JavaBean) 画面のコントロールやビジネスロジックの処理はServletが行う データベースのアクセスは、DAO(Data Access Object)に任せる もしそうであれば、そのシステム、ドメインモデル貧血症に陥ってます。 これは、データとgetter/setterだけのオブジェクトを、Anemic(貧血症になって元気がない)オブジェクトと称し、オブジェクトとはいうものの実質的にはデータであり、それをやりとりするだけの手続き型システムなっていることを嘆いたものです。 今回は、来のオブジェクト指向に立ち返り、そのメリットである高い保守性、再利用性、拡張性を備えた変化に強いシステムを作るための設計方法、ドメイン駆動設計

  • 『現場で役立つシステム設計の原則』を読みました - 人間のあるべき姿の探索


      gihyo.jp QiitaZenn   SQL 
    『現場で役立つシステム設計の原則』を読みました - 人間のあるべき姿の探索
    shunt_i
    shunt_i 2023/06/11
    “Chapter 7 画面とドメインオブジェクトの設計を連動させる”
  • Repositoryパターンのアンチパターン - Qiita

    よく見かけるRepositoryパターンのアンチパターンの紹介と対策です。 Repositoryパターンとは Repositoryパターンとは永続化を隠蔽するためのデザインパターンで、DAO(DataAccessObject)パターンに似ていますが、より高い抽象度でエンティティの操作から永続化ストレージを完全に隠蔽します。 例えばDBコネクションやストレージのパス等はReposiotoryのインターフェースからは隠蔽され、Repositoryのユーザは永続化ストレージが何であるか(例えばMySQLやRedis等)を意識することなく保存や検索の操作を行うことができるようになります。 これによりRepositoryを利用するロジックは業務的な操作に集中できるようになる他、データベースの移行等の永続化層の変更が発生した際にロジックへの影響を切り離すことができるようになります。 // 例) ユーザ

    Repositoryパターンのアンチパターン - Qiita
    shunt_i
    shunt_i 2023/05/27
    “複雑なクエリをRepositoryで頑張って発行する”
  • 設計要件をギッチギチに詰めたValueObjectで低凝集クラスを爆殺する - Qiita


    /// <summary></summary>public class ContractAmount {public int AmountIncludingTax; public decimal SalesTaxRate; } ()Controller /// <summary></summary>public class ContractController { private ContractAmount _contractAmount; /// <summary></summary>
    設計要件をギッチギチに詰めたValueObjectで低凝集クラスを爆殺する - Qiita
    shunt_i
    shunt_i 2019/12/20
    課題が共感できるし解決法も良さそう、丁寧でわかりやすかった。ディレクトリ構成がどうなるかも欲しかったな。
  • InfoQ: Domain Driven Design(ドメイン駆動設計) Quickly 日本語版

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    shunt_i
    shunt_i 2018/11/16
    “「Domain Driven Design(ドメイン駆動設計) Quickly 」は、短くすばやく読める要約と、DDDの原則を紹介します。”
  • 1