Awesome Domain-Driven Design
Domain-Driven Designを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
目次
- Awesome Domain-Driven Design
書籍
- Applying Domain Driven Design with CQRS and Event Sourcing - イベントストーミングおよびその他のモデリング技術を用いて、架空のビジネスドメインに対してCQRSおよびイベントソースベースのプロトタイプを構築するプロセスの解説
- Architecture Modernization - ソフトウェアアーキテクチャをビジネスドメイン、組織設計、チームトポロジー、企業戦略と一致させるための具体的なツール、技術、プロセス
- Collaborative Software Design - ソフトウェア設計においてすべてのステークホルダーを効果的に関与させるための実践的なガイド
- CQRS - グレッグ・ユンから学んだDDDおよびCQRSに関するマーカス・ニホフのノート。本書に併せて広範なサンプルプロジェクトが付属している。
- Crafting Great APIs with Domain-Driven Design: Collaborative Craftsmanship of Asynchronous and Synchronous APIs - ドメインドリブンデザインの原則に基づいてAPIを設計・構築するための包括的なガイド。イベント駆動型の非同期および同期APIパターンをカバー。
- Domain-Driven Design: Tackling the Complexity at the Heart of Software - ドメインドリブンデザインという用語を創出した定番書。また、「ブルーブック」とも呼ばれる。
- Domain-Driven Design Distilled - Implementing Domain-Driven DesignまたはDomain-Driven Design: Tackling the Complexity at the Heart of Softwareを読む前に読むべき非常に良い入門書。
- Domain-Driven Design in PHP - PHPで書かれた実際の例が示され、DDDアーキテクチャスタイル、戦術設計、境界コンテキスト統合が紹介されている。
- Domain-Driven Rails - ドメインドリブン・レールズは、11の技術(境界コンテキストからイベントソースまで)を紹介し、新しいおよび古いレールアプリケーションでそれぞれ独立してまたは組み合わせて使用することで、より良いアーキテクチャを実現できるようにする。
- Domain Modeling Made Functional - ドメインドリブンデザインとF#を用いてソフトウェアの複雑性に取り組む。
- Domain Specific Languages - DDDと関連性が薄いが、普遍言語の重要性やドメイン専門家との協働、そして多くの技術的詳細について説明。
- Event Sourcing and CQRS with .NET Core and SQL Server - ASP.NET CoreとSQL Serverを用いて、生産環境でイベントソースおよびCQRSとドメインドリブンデザインを実装するプロセスの解説。
- Hands-On Domain-Driven Design with .NET Core - アレクセイ・ジマレフがDDDの原則を実践することで、ソフトウェアの中心部における複雑性に取り組む。
- Implementing Domain-Driven Design - ドメインドリブンデザインを理解するためのトップダウンアプローチを示す定番書。また、「レッドブック」とも呼ばれる。
- Implementing DDD, CQRS and Event Sourcing - DDD、CQRS、イベントソースの実装方法を学び、理論を理解し、JavaScriptおよびNode.jsで実践する方法を学ぶ。
- Introducing Event Storming: An act of Deliberate Collective Learning - イベントストーミングについて最も深いチュートリアルと説明。発明者自身が提供した内容。
- Learning Domain-Driven Design: Aligning Software Architecture and Business Strategy - ドメインドリブンデザインの基本的なパターンと実践方法を学び、グリーンフィールドおよびブラウンフィールドプロジェクトにおいて日々の業務に応用する方法を学ぶ。
- Microsoft .NET - Architecting Applications for the Enterprise (2nd Edition) - ソフトウェアアーキテクトが実際の開発現場で適用する基本的な実践をまとめた解説。
- Patterns, Principles, and Practices of Domain-Driven Design (1st Edition) - ドメインドリブンデザインの原則、原則、パターンに基づいた複雑なソフトウェア開発の管理方法。C#でのコード例を伴う。
- Secure by Design - ドメインドリブンデザインを用いてセキュリティ脆弱性を回避する方法を示す。
- Specification by Example - この書籍は、世界中でチームをリードしてきた経験から、ソフトウェアの短いイテレーションサイクルでの仕様化、テスト、デリバリーに有効な方法をまとめており、本書のケーススタディは、小さなウェブスタートアップから大きな金融機関まで、XP、スクラム、カンバンなど多くのプロセスで実際の業務を実施しているものである。
- Versioning in an Event Sourced System - イベントソースシステムのバージョン管理に困った経験がありますか?初めてイベントソースシステムに触れる方へ。本書は、長期間にわたるバージョン管理をどう行うかを示す、決定的なガイドである。
- What is Domain-Driven Design? - ドメインドリブンデザインの核となるパターンと原則、および旧システムプロジェクトでのDDDの適用戦略について、短い読書で紹介する。
- Writing Great Specifications - 「素晴らしい仕様書を書く」は、Gherkin仕様書の良質な作成方法を学ぶための、事例を豊富に含んだチュートリアルである。
無料電子書籍
- The Anatomy of Domain-Driven Design - The Infographic - ドメインドリブンデザインの構造を示す情報グラフィック。
- Architecting Modern Web Applications with ASP.NET Core and Microsoft Azure - DDDを用いて、ASP.NET CoreとAzureを活用したモノリスウェブアプリケーションの開発に至るまでの一貫したガイドを提供する。 eShopOnWeb sample
- Architecture Patterns with Python - Pythonによるアプリケーションアーキテクチャパターンが複雑性を管理する方法についての書籍。
- CQRS Journey - CQRSとイベントソースについての探索。
- Domain-Driven Design: The First 15 Years - 記念日を祝うために、ソフトウェア設計分野の著名な著者たちが、過去と現在のエッセイを寄稿しました。マーティン・フォーバー、ジェームズ・コープリエン、リベッカ・ウィルズ・ブロック、メル・コンウェイ、その他多くの著者による寄稿があります。
- DDD Reference - DDDのパターンと定義についての要約。
- Domain Driven Design Quickly - ドメインドリブンデザインを迅速に理解するための短い、読みやすい要約と導入。
- Effective Aggregate Design - この3部構成のシリーズでは、ヴァーン・ヴェルトンが、よくある設計の誤りについて説明し、さまざまなアグリゲートモデル選択の利点と欠点を議論し、アグリゲートモデルの設計に使えるルールを提示する。
- Getting Started with DDD when Surrounded by Legacy Systems - 大きな継承システムへの対応を強いられる場合に、DDDを始めるための3つの戦略について説明する。
- Living Documentation by Design, with Domain-Driven Design - 生きているドキュメントが、ビジネス目標からビジネスドメイン知識、アーキテクチャと設計、プロセスおよびデプロイメントまで、すべてのプロジェクトにおいてどのように役立つかを解説する。
- .NET Microservices: Architecture for Containerized .NET Applications - コンテナを用いてマイクロサービスベースアプリケーションを開発し、それらを管理するための導入ガイド。 eShopOnContainers sample
- The Semantic JavaScript Backend for Event-Driven Development - DDD、CQRS、イベントソースがそれぞれ何であるか、そしてどう関係しているかを68ページの無料電子書籍で解説する。
- DDD Magazine from Xebia #1 - このマガジンは、個人、ビジネス、顧客の経験に基づく、視覚的で実用的な洞察を豊富に盛り込み、あなたのDDDの旅をサポートする。
- Visual Collaboration Tools - ソフトウェア開発チーム向けの書籍。日々の業務に役立つツールを説明し、さまざまな実務家による現場のストーリーを紹介する。
トレーニングコース
- Advanced Distributed Systems Design - ウディ・ダーンによるオンライントレーニングコース。ウディのライブトレーニングスケジュールは、 here で確認できます。
- DDD Workshops across Europe and Online - エリック・エヴァンス、アルベルト・ブランドオリニ、マティアス・ヴェラース、リベッカ・ウィルズ・ブロック、ニック・チューン、その他多くの著者による公開セミナー。
- DDD Workshop by Xebia - 公開および内部のドメイン駆動設計(DDD)ワークショップ。基礎からプロレベルまで。
- Distilling Domain-Driven Design - ヴァーン・フォーリンのオンライントレーニングコース。
- Domain Language eLearning - 元のDDD書(ドメイン駆動設計)を著したエリック・エヴァンズによる動画レッスンを活用し、実際のソフトウェアの品質を高めるためのモデルの進化技術を自習できます。
- Event Sourcery - DDD、CQRS、イベントソースの概要。
- EventStorming Fundamentals Course () - イベントストーミングの基礎を学びます。イベントストーミングに関するすべての内容と例を含みます。 also in Spanish
- Greg Young’s CQRS Class - これらの動画には、グレッグ・ユンのDDD、CQRS、イベントソース講義のすべてが含まれています。
- Mixter - CQRSおよびイベントソースの「コアン」(問題解決の練習)。
- Nomad PHP - イベントソースとCQRSの概要。
- Pluralsight
- Domain-Driven Design Fundamentals - エリック・エヴァンズのアドバイスを交え、顧客とのインタラクションや複雑なデモアプリケーションをもとに、ドメイン駆動設計(DDD)の基礎を学びます。
- Domain-Driven Design in Practice - ドメイン駆動設計(DDD)の原則を実際の開発現場で適用するための詳細な説明と実践的な導入方法。
- Modern Software Architecture: Domain Models, CQRS, and Event Sourcing - このコースは、ビジネスドメインのトップレベルアーキテクチャを発見するためのDDD分析パターンをカバーしています。アーキテクトおよび開発者は、ドメインモデル、CQRS、イベントソースなどの実装パターンの詳細を学びます。
- Rails + Domain Driven Design Workshop - DDDの概要、CQRSおよびイベントソースの基礎(Ruby/Rails開発者向け)。
- Reactive Architecture: CQRS and Event Sourcing - このコースでは、CQRS/ESを使用する理由、それがもたらすメリット、そしてそのコストについて説明します。CQRS/ESがアプリケーションのスケーラビリティ、一貫性、可用性に与える影響についても見ていきます。
- Reactive Architecture: Domain Driven Design - DDDを用いて問題領域を管理可能な部分に分解し、それらが反応型マイクロサービスおよび反応型アーキテクチャの基礎となる方法を学びます。無料、オンライン、自習型。完了後に証明書を発行。
- Spatie’s Event Sourcing Course - Laravelでイベントソースアプリケーションを構築する方法を学びます。Spatieのイベントソースパッケージを使用します。動画コンテンツは2時間、それに伴う電子書籍も提供されています。
動画コレクション
- DDD Europe - DDDヨーロッパでの講演の録画。
- SkillsCasts by SkillsMatter - DDDを検索すると、グレッグ・ユン、アルベルト・ブランドオーニ、ダン・ノースなどによるさまざまな講演が返されます。
- Alberto Brandolini: Event Storming - アルベルト・ブランドオーニによるイベントストーミング講演のYouTubeコレクション。
- GlobalAppTesting TechTalks - DDDおよびCQRSに特化したVimeoチャンネル。
- Greg Young - グレッグ・ユンによるさまざまな講演のYouTubeコレクション。
- Explore DDD videos - Explore DDDカンファレンスで行われた講演の録音ファイル
- KanDDDinsky - KanDDDinskyで行われた講演のYouTubeコレクション
- Virtual Domain-driven design - Virtual Domain-driven designのミーティングセッションの録画を収録したYouTubeコレクション
- Visuality DDD webinars - Ruby on RailsにおけるDDDに焦点を当てたウェビナーのYouTubeコレクション
- The Art of Discovering Bounded Contexts by Nick Tune - 2017年のDevoxxUKでのセッション:bounded contextの定義方法
コミュニティリソース
- DDD/CQRS Google Group - 質問を投げかけたり、DDD/CQRSに関する細かい知識を学ぶために活用できるメールマガジンと優れたリソース
- DDD-es Google Group - スペイン語でDDDを議論するGoogleグループ
- DDDinPHP Google Group - PHPの文脈におけるDDD、CQRS、Event Sourcing、Model Storming、Hexagonal Architecture、分散システム、Reactiveなどに関する議論の場
- EventStorming Google Group - EventStormingに関する議論をするGoogleグループ
- DDD in Ruby on Rails - Ruby on RailsにおけるDDDに関する記事のコレクション
- DDD in Ruby subreddit - DDDに興味があるRuby開発者向けのRedditコミュニティ
- DDD/CQRS/ES Discord - DDD、CQRS、Event Sourcing、あるいは偶然の話題について話すためのDiscord(旧Slack)チーム。メインチャンネルは言語やフレームワークに依存しない。
- Domain StoryTelling Discord - DDDに関するストーリーテリング(#domain-storytellingチャンネル)に関するDiscordチーム( @hofstef による)。ホームページは domainstorytelling.org にあります。
- Software Engineering Stack Exchange - Software Engineering Stack Exchangeに投稿されたdomain-driven-designタグ付きの質問
- Code Review Stack Exchange - Code Review Stack Exchangeに投稿されたdomain-driven-designタグ付きの質問
- Stack Overflow - Stack Overflowに投稿されたdomain-driven-designタグ付きの質問
- Advanced Topics in Event Sourcing / CQRS / DDD - @sebastianharkoが編集・維持しているEvent Sourcing / CQRS / DDDに関する高度なトピックリスト
- Quora - domain-driven-designタグ付きの質問
- wolkenkit Slack - DDD、event-sourcing、CQRSおよびwolkenkitに関するSlackチーム
- Awesome Event Storming - Event Stormingに特化したawesomeリスト
- Awesome Domain Storytelling - 素晴らしいリストで、ドメインストーリーテリングにのみ焦点を当てる.
- Virtual Domain-driven design community - オンラインミートアップによるパネルディスカッション、オンラインコラボレーション、リソース共有.
- Domain-driven design heuristics - ドメインドリブンデザインヒューリスティクスは、デザインヒューリスティクスの記録と議論を行うコミュニティ運営サイトです.
- Domain-Driven Design in dynamic languages GitHub - GitHubにおけるドメインドリブンデザインの動的言語でのプロフィール.
- Domain-Driven Design Crew GitHub - GitHubにおけるドメインドリブンデザイン・クルーのプロフィール.
- Context Mapping by ddd-crew - ddd-crewによるコンテキストマッピングのキャッチアップシートとスタートキット.
- DDD North America - 北米各地のライブトレーニング、イベント、ユーザーグループの開催予定.
ブログ
- Aardling Blog - Mathias Verraesおよび他の人々によるDDDとソフトウェア設計に関する記事.
- Nick Chamberlain - .NET開発者向けの有効な開発および設計アドバイス.
- Ardalis.com - Steve Smith. Pluralsightの著者であり、DDD FundamentalsコースおよびMicrosoft eShopOnWeb sample appの著者です.
- DDD Weekly - DDD/CQRS/ESに関連する週間キュレーションされたリンク.
- Daniel Whittaker - CQRSとイベントソースについて学びたいですか?このブログにはステップバイステップの記事が多数あり、初学者にも最適です.
- Cyrille Martraire - 金融業界に深く浸っており、プログラミングにも情熱をもつため、エリック・エヴァンズのドメインドリブンデザイン、TDD、BDDおよびアジャイル/XPの実践に自然と好意を持っています.
- Jimmy Bogard - 私はDDD、分散システム、およびその他の略語中心の設計/アーキテクチャ/メソッドに特に注目しています.
- CodeBetter - CodeBetter.Comは、ソフトウェア開発コミュニティにおける優れた実践、優れたツール、確立されたメソッドおよび技術の認識を高めるために存在しています.
- Greg Young - Good Enough Softwareは定義上、Good Enoughである.
- InfoQ Blog - InfoQにおけるドメインドリブンデザインのコンテンツ.
- Dan North - 行動ドリブンデザインの発明者。イベントストーミングに関するブログと講演も行っています.
- Mike Mogosanu - 維持可能なコードはビジネス上の利点です。ドメインマップ:ドメインモデリングツール「簡単で強力なドメインドリブンデザイン」の開発者です.
- Christian Posta - Red Hatでの主要なミドルウェアアーキテクト。オープンソースの愛好家。Apacheでのコンテナ、統合、Kubernetes、Docker、OpenShift、Fabric8のコンテイブラーです.
- Vladimir Khorikov - プラルスightの著者。ソフトウェア開発の原則とベストプラクティスについてのブログを執筆。
- TechBeacon - TechBeaconに掲載されたドメインドリブンデザインに関する記事。
- Derek Comartin - ドメインドリブンデザインカテゴリの記事。
- Alberto Brandolini - イベントストーミングの創始者。問題を解決するための思考は、その問題が生まれた当初の思考とは異なると主張し、頻繁にアーキテクト、メンターやコーチ、マネージャー、開発者といった視点を切り替える。
- Jérémie Chassaing - DDD/CQRSに関するさまざまな記事。F#でグレッグ・ユンのSimpleCQRSサンプルを実装。
- Vaughn Vernon - ヴァーン・フォーリンは、ソフトウェア開発の独自の要件や、急速に進展する業界でスキルを高める際に直面する課題を理解している。
- Vladik Khononov - DDDに関連するさまざまな記事。
- Eventsourcing Publications - 実用的なイベントソースの導入。
- Jef Claes - ドメインドリブンデザインに関する優れた記事と講演。
- Udi Dahan - NServiceBusの創設者によるコンテンツ。
- Chris Patterson - MassTransit分散アプリケーションフレームワークの創設者によるコンテンツ。
- Aaron Stannard - PetabridgeのCTOおよび共同創業者の視点から、Akka.NETアクターモデルフレームワークの開発者たちの視点から。
- Roger Johansson - 主にC#、DDD、Akka.NETについて。
- Konrad Garus - Java、Clojure、JavaScriptでのrantingとプログラミング。cqrsにタグ付けされた記事。
- Oasis Digital - Oasis Digitalが掲載したcqrsにタグ付けされたコンテンツ。
- Adaptech - Adaptech Solutionsのブログ。当社の創業者であるアダム・ディミトルクは、グレッグ・ユンが「CQRS」という用語を定義する前から、その価値についてグレッグと議論した。アダムとビジネスパートナーのロバート・レプルは、イベントソースマイクロサービスの主要な実践者である。
- Lev Gorodinski - 2013年に掲載されたDDDに関するいくつかの記事。その内容は今も関連性がある。
- Dino Esposito - ソフトウェアアーキテクト、トレーナー、著者。Microsoft .NET - Architecting Applications for the Enterprise (2nd Edition)を著した。
- Dan Bergh Johnsson “Dear Junior” - セキュリティとアジャイルの一般に、ドメインドリブンデザインを融合した内容。若いプログラマーへ宛てたフィクションの手紙形式で書かれた。
- the native web - DDD & Co.シリーズ
- Arkency - Rubyの専門家たちが執筆したDDD、CQRS、イベントソース関連の記事のさまざまなもの。
- Svaťa Šimara - DDDシリーズ - 言語、ドメイン、モデリング、インフラ、PHPでの実装
- Martin Havlišta - C# .NETでDDD、CQRS、TDDに関するブログ記事とコードサンプル
- Khalil Stemmler - DDDシリーズの紹介およびDDDをTypeScriptで実装する方法についての話
- Kenny Baas-Schwegler - DDD、BDD、ソシオテクニカル、イベントストーミングおよび継続的デリバリーに関するブログ。
- João Rosa - ドメインドリブンデザイン、視覚的な協働、リーダーシップおよび組織設計についての個人ブログ。その他にも中間的なテーマを扱っています。 Visual Collaboration Toolsのキュレーターであり、 Software Crafts Podcastのホスト。
- GlobalAppTesting engineering - GlobalAppTestingのエンジニアリングブログで、実用的なDDDとCQRSに関する資料が掲載されています。
サンプルプロジェクト
Go
- BDD in GO - Cucumber + GOを用いたBDDテストアプローチのサンプルアプリ。ブログ記事は here にあります。
- Citerus DDD Sample App GO Port - これは DDD Sample App を、Goにふさわしい形で移植しようとする試みです。アプリケーションのプレビューにはDockerで実行可能です。
- DDD by Refactoring - DDD、クリーンアーキテクチャ、CQRSを実用的なGoプロジェクトのリファクタリングを通じて適用するためのサーバレスアプリケーションの完全な例。詳細は https://threedots.tech/ にあります。
- DDD Food App - 4層(ドメイン、インフラ、アプリケーション、インターフェース)を実装し、2つのドメインパターンを考慮したDDDアプリケーションのサンプル。そのために書かれたブログ記事は here にあります。
- DDD Sample in GO - ただのもう一つのDDDの4層を実装したサンプルアプリケーション。
- Evolutive CRUD API - SOLID、ヘキサゴナルアーキテクチャを用いたフルCRUDのAPI実装。そのために書かれたブログ記事は https://blog.friendsofgo.tech/ にあります。
- Go DDD Template - 価格の高いDDDとCQRSテンプレート。バリュー・オブジェクト、競合を避ける一貫性のあるコマンド、トランザクション出力ボックス付きのドメインイベント、そしてゼロからDDDを教えるチュートリアルシリーズを含む。
- Simple Hexagonal Architecture PoC API - ヘキサゴナルアーキテクチャパターンを用いた患者APIのプロトタイプ。
- Azure DDD boilerplate - Azure上でDDDを実装するためのボイラープレートプロジェクト。カスタムハンドラーとCosmos DBを用いたイベントソース。
.NET(C#/F#)
- AppointMe - .NET 10、React、モジュラリモノリス、垂直スライス、マルチテナント、CQRS、DDD、イベント駆動アーキテクチャ、持続可能なメッセージング(出力ボックス)を備えたプロダクションレベルのSaaSテンプレート。
- Better code with DDD building blocks - ソリューションは、コードの読みやすさと表現力を高めるためにDDDの戦略的パターンの活用を示しています。DDDパターンと普遍的な言語を組み合わせることで、専門家とチーム間の言語とコード内の言語のギャップを埋めます。
- CQRS-DDD Example - GetEventStore、CommonDomain、NServiceBus、Entity Framework、SQL Server、SignalRを用いたDDD、CQRS、イベントソースの例。
- Companion Code for Microsoft .NET Architecting Applications for the Enterprise - イベントベースのマイクロERP。
- ContosoUniversityCore - ContosoUniversity が ASP.NET Core とフル .NET フレームワークを使用したアプリケーション
- DDD-starter-dotnet - DDD アプリケーションのさまざまなアプローチのサンプル実装と比較。DDD .net プロジェクトを迅速に開始するためのベースラインとして有用。
- DDDInventoryItemFSharp - ドメイン駆動設計のための自然な F# 実装
- DDDSkeletonNet (C#) - ドメイン駆動設計と緩い結合層の概念を紹介する .NET のフレームワークプロジェクト
- DotNet CQRS Intro - イベントソースを用いたCQRS実装の例(進化型アプローチ:CQRSなし、同じモデルの分離モデルとコマンド、分離モデルとコマンド、分離モデルと分離ストレージ、イベントソース)。
- EISK - .NET CLI と VS テンプレートによるシンプルなケースで、.NET Core 上のスケーラブルアプリケーションをアーキテクチャのベストプラクティス(DDD、オンネンアーキテクチャなど)に基づいて構築するもの
- EmailMaker - メールマーケティング ASP.NET Core MVC および ASP.NET MVC デモアプリで CoreDdd の使用を示す
- Equinox Project - フル ASP.NET Core 3.1 アプリケーションでクリーンアーキテクチャ、DDD、CQRS およびイベントソースの概念を実装
- eShopOnWeb - Microsoft が提供するフル ASP.NET Core 3.1 リファレンスアプリケーションで、モノリスックデプロイメントアーキテクチャを示す
- eShopOnContainersDDD - eShop フルスタック例でカタログ、バスケット、チェックアウト、注文のバウンドコンテキストを示す
- Example of Domain-Driven Design in F# - チェッカーボードのゲームに対するドメイン駆動設計の例。2つのファイルがある:設計のスクラッチファイルと最終版。
- Event Sourcing .NET - .NET におけるイベントソースと CQRS に関するサンプルとリソース。また、自習用のイベントストアの構築方法を含む。
- EventFlow.Example - DDD、CQRS、イベントソースの例で、以下の技術スタックを含む: EventFlow, EventStore, RabbitMQ, MongoDB, PostgreSQL, Docker
- Fohjin - マーク・ニホフの CQRS 書籍に付随する例プロジェクト。
- FsUno - F# でのイベントソース実装サンプル。
- IDDD Samples in .NET - これらのサンプルは、ヴァーン・ヴェルンの『ドメイン駆動設計の実装』書籍から導かれた C#.NET のバウンドコンテキストです。
- LexiQuest-Modular-DDD - クリーンアーキテクチャとDDDの原則に基づいたモジュラリティを持つアプリケーションで、迅速にマイクロサービスに分割できるように設計されている。
- Microsoft Patterns and Practices: CQRS Journey Sample Code - CQRS フィードバックのサンプルコード。
- Modular Monolith - フルモジュラリティのモノリスケ .NET アプリケーションでドメイン駆動設計アプローチを採用。
- Modular.StarterTemplate - モジュラリティを備えたクリーンアーキテクチャ DDD スタイルのスタートテンプレートで、モジュール間の同期インタラクションが単一トランザクション内で行われる。ERP アプリケーションに最適。
- NLayerAppV3 (.Net Core Preview 2) - N層アーキテクチャのサンプルプロジェクト。
- OpenMind.DDD.Patterns - 注文管理ドメインを用いた、DDD戦術パターン(エンティティ、バリュー・オブジェクト、アグリゲート、ドメインイベント)および戦略設計(バウンド・コンテキスト、コンテキストマッピング)を網羅したC#のデモ。CQRS、イベント駆動アーキテクチャ、MongoDBを用いる。
- Photostock CQRS-DDD Example
- Reactive Trader Cloud - Adaptive ConsultingによるReactive Trader Cloud。
- Sample .NET Core CQRS REST API - .NET Core REST APIにおけるCQRS実装(raw SQLとDDDを用いた)およびクリーンアーキテクチャ。
- Scritchy - CQRSのパイプラインなし、。 video
- Simple CQRS in F# - Greg YoungによるF#でのSimpleCQRS。
- SimpleCQRS - Greg Youngによる「最もシンプルなこと」CQRSとイベントソースプロジェクト。
- TaskoMask - .NET Coreをベースとしたタスク管理システム。DDD、CQRS、イベントソースの概念を用いる。
- TodoMVC-DDD-CQRS-EventSourcing - eventsourcing、cqrs、ドメインドリブンデザインを用いたtastejs/todomvcベースのTodoアプリの実装。
Haskell
- Eventuria gsd - HaskellによるTodoリストアプリケーション。DDD、CQRS、イベントソース、FRPを用いる。
Idris
- OrderTaking - 『Domain Modeling Made Functional』書の依存型による実装。バウンド・コンテキストとワークフロー図の形式化例。NodeJSでデプロイ可能なデモ。
JavaScript / TypeScript
- wolkenkit Sample Applications - DDDサンプルアプリケーションのコレクション。TodoMVC、地図キャッシュアプリ、協働ボードなど。
- Booster framework examples Booster Frameworkで構築された例アプリケーション。
- Over-engineered ToDo app - TypeScriptとNestJSで生成された、ドメインドリブンデザイン(DDD)、ヘキサゴナルアーキテクチャ、CQRS、イベントソース(ES)、イベント駆動アーキテクチャ(EDA)、行動ドリブン開発(BDD)を用いた完全な実行例。 Bitloops Language (BL)
txob- PostgresとMongoDBのネイティブプラグインを用いたトランザクショナルアウトボックスイベントプロセッサ — 最低1回の配信、近いリアルタイムのウェイクアップシグナル、スムーズなシャットダウン、および水平スケーリング。
JVM言語
- Akka CQRS ES Demo - Scala-AkkaでCQRSおよびイベントソースパターンを実装するデモプロジェクト。
- Casino Engine - Kotlin/KtorによるプロダクションiGaming/カジノエンジン。ヘキサゴナルアーキテクチャとDDD、CQRSを示す。アグリゲートはドメインイベントを発行し、リポジトリポートはドメイン層に存在し、コマンドとクエリハンドラーはKoinで発見されたレジストリを通じて接続され、ドメインイベントは書き込みトランザクションがコミットされた後、RabbitMQに公開される。Apache 2.0。
- DDD By Examples - Library - 実際のビジネス要件に基づくライブラリのサンプルプロジェクト。DDD、BDD、イベントストーミング、例マッピング、CQRSなどにより実現されたモジュラリーモノリス。
- DDD Leaven - Spring、JPA、テストを用いた、高度なドメインモデリングの開始に役立つDDD-CQRSサンプルv2.0プロジェクト。
- DDD Workshop - Project Manager - 「自分でやる」DDDワークショップと、同時にサンプルDDDアプリケーションを提供。プロジェクトマネジメントドメインをベースにしている。
- Event Sourcing Example - イベントソースとCQRSのJavaコードにおける簡易な(メモリ内)例(銀行業界の用途事例を想定)。
- Event Sourcing and CQRS Examples - イベントソースとCQRSの実用的なJava実装例。よくある問題(イベントの順序、一意性など)に関する参考資料も提供。
- Event Sourcing and CQRS Sample - コマンド・クエリ責任分離(CQRS)を用いたイベントソースアプリケーションのサンプル。
- IDDD Samples - ヴァーン・フォーリンの『ドメインドリブンデザインの実装』書籍に掲載された、ボンデッドコンテキストのサンプル。
- Java CQRS Intro - イベントソースを用いたCQRS実装の例(進化型アプローチ:CQRSなし、同じモデルの分離モデルとコマンド、分離モデルとコマンド、分離モデルと分離ストレージ、イベントソース)。
- Kotlin DDD Sample - Kotlinで書かれたDDD/CQRSプロジェクトのサンプル。
- EventStormingWorkshop - Designing Cloud Native Microservices On AWS - イベントストーミングワークショップを経て、JavaでDDDの戦略設計パターンを実装し、AWSクラウドネイティブサービスを用いてビジネスイベントベースのコーヒーショップシナリオを構築するための具体的なサンプル。
- DDDSample - Spring Bootを使用したDDDプロジェクトのサンプル(元々は http://dddsample.sourceforge.net/ でホスト)。
- Eclipse CargoTracker - このプロジェクトは、Jakarta EEプラットフォームを用いて、ドメインドリブンデザイン(DDD)といった広く採用されているアーキテクチャベストプラクティスを用いてアプリケーションを開発する方法を示しています。The code は、実際の開発現場で開発者が扱うような非自明なアプリケーションを模倣しています。このプロジェクトは、Jakarta EEを用いて実際の企業課題(生産性、柔軟性、テスト可能性、柔軟性、保守性、スケーラビリティ、セキュリティなど)を効果的に解決する方法を、実際の体験を通じて示しています。このプロジェクトは、DDDの先駆者であるエリック・エヴァンズの会社「ドメイン・ラングュエージ」とスウェーデンのソフトウェアコンサルティング会社「Citerus」が開発した著名なオリジナル Java DDD sample application を直接基にしています。
- https://github.com/felipexw/clean-arch-ddd-intro - マイクロナウで構築されたシンプルなDDD+クリーンアーキテクチャ。
PHP
- DDD CQRS Todo Sample - PHP 7とSymfony 5を用いたDDD CQRS ADRの六角アーキテクチャ実装。
- DDD Modulith - Symfony 7を用いたDDDのオニオンアーキテクチャ実装(モジュリス構造)。
- DDD Wish List - Symfony 3とVue.jsを用いたPHPで構築されたアプリケーションのサンプル。
- DDD Playground - PHPでの実装サンプル。
- Eric Evans DDD Cargo Sample - エリック・エヴァンズのDDD書籍で使用されたPHP 7版のキャロットサンプル。
- Shop Cart in PHP - 買い物かごのシンプルな構造を示すサンプルプロジェクト。ドメインオブジェクト、Doctrine統合、TDD、レイヤー、ユニットテスト。
- Symfony 5 DDD ES CQRS backend - SymfonyとPHP 8を用いたDDD、CQRS、イベントソースアプリケーション。
ライブラリとフレームワーク
Go
- Ginkgo - GinkgoはGoのテストパッケージをベースにし、表現力の高い行動駆動開発(BDD)スタイルのテストを可能にします。
- GOBDD - GO向けの小さなBDDフレームワーク。
- GoConvey - ブラウザ上でGoでのテスト。
go testと統合。Goで行動テストを書く。 - Godog - godogパッケージはGolang用の公式Cucumber BDDフレームワークであり、仕様とテストドキュメンテーションを一つの統合された全体として統合し、Given、When、Then形式のGherkin形式のシナリオを使用する。
.NET
- Aggregates.NET - .NETにおけるイベントソースドメインドリブン設計モデルをNServicebusとGetEventStoreで実現。
- AggregateSource - アグリゲートを使用したイベントソースを実行するための軽量インフラストラクチャ。
- Akka.NET - Akka.NETは、.NETおよびMono上で高スレッド性、分散性、障害耐性を備えたイベント駆動アプリケーションを構築するためのツールキットおよびランタイム。
- ABP - ASP.NET Boilerplateの継承者——N層構成、ドメインドリブン設計を採用したWebアプリケーションフレームワークで、マイクロサービスに焦点を当てたモジュラーフレームワークを提供。
- ASP.NET Boilerplate - ASP.NET MVC、Web APIおよびASP.NET Coreに基づくアプリケーションフレームワークで、N層構成、ドメインドリブン設計を採用したWebアプリケーションを実装し、ベストプラクティスを適用。
- ByValue - このライブラリは、コレクションプロパティを含むValueObjectの作成を支援し、適切に実装された等価性の振る舞いを提供する。
- Cedar.CommandHandling - HTTP上のコマンドを処理するためのミドルウェア;通常はCQRSアプリケーションで使用。
- Cirqus - d60イベントソース+CQRSフレームワーク。
- CommandQuery - 🌐ASP.NET Core ⚡AWS Lambda ⚡Azure Functions ⚡Google Cloud Functions 🌐ASP.NET Web API 2におけるコマンド・クエリ分離。
- CoreDdd - DDDおよびCQRSを支援するオープンソース.NETライブラリのセット、NHibernateによる永続化を含む。
- CQRS on Azure Windows AzureにおけるCQRS。
- Dolittle - Dolittleでより良いアプリケーションを構築。イベントソース、マイクロサービスプラットフォームであり、開発者の生産性と簡易性を最優先に設計。
- Edument CQRS and Intentful BDD Testing Starter Kit - CQRS/ESアプリケーションの構築方法に関するライブラリおよびチュートリアル、BDDスタイルのテストフレームワークを含む。
- EventFlow - .NET向けのAsync/awaitを第一に設計したCQRS+ESおよびDDDフレームワーク http://geteventflow.net/.
- Core.EventStore - CommandServiceとQueryService間の通信を支援するライブラリ。イベントがCommandServiceで発生した際、QueryServiceのMongoDbに保存されるように設計されている。
- Its.Cqrs - CQRSおよびイベントソースを支援するライブラリセットで、ドメインドリブン設計の味方を提供。
- Marten - Postgresqlを.NETアプリケーションのドキュメントデータベースおよびイベントストアとして使用。
- MassTransit - .NET向けの分散アプリケーションフレームワーク。
- MediatR - リクエスト/レスポンス、コマンド、クエリ、通知、イベントをサポートし、同期および非同期で、C#のジェネリックバリアンスを用いた知的なディスパッチを実現。
- MessageRouter - この動画で説明されている: The Beating Heart of CQRS, or Actor-Based Message Routing on the CLR による Paulmichael Blasucci の New York F# .NET User Group の発表.
- NetDevPack - .NET を使用した開発効率の向上を目的とした、よく使われるクラスと実装のスマートなセット (DDD, CQRS, Specification Pattern, MediatR, Validations, Notifications).
- NEventStore - イベントソースをストレージメカニズムとして使う場合に、異なるストレージ実装を抽象化するための永続性ライブラリ.
- NServiceBus - .NET 用のサービスバス.
- OpenCQRS - OpenCQRS は DDD, CQRS, イベントソースをサポートする .NET フレームワークであり、シンプルなメディエーターとして利用可能であり、Cosmos DB または Entity Framework Core をストレージとして使う場合の完全なイベントソースソリューションとしても利用可能。Service Bus, RabbitMQ, Redis Cache, Memory Cache, FluentValidation などに内蔵されたサポート機能を備えている.
- Projac - Projac は、さまざまなバックストアに向けたプロジエクションを書けるプロジエクションライブラリのセット.
- shriek-fx - .NET Core 2.0 を使用して開発された、シンプルで洗練されており、有用なドメインドリブンデザインと CQRS フレームワーク.
- SqlStreamStore - SQLベースの実装をターゲットとした .NET ストリームストアライブラリ.
- Stratara - .NET 用の CQRS およびイベントソースフレームワークで、タップアンドエビデンスストリームとテナント認識暗号化を提供し、統合されたメディエーター、アウトボックス、サガ、プロジエクションを提供.
- Streamstone - Azure Table Storage 用のイベントストア.
- Stringly.Typed - 文字列を .NET 型に変換する際の、より簡単で効率的な方法を提供する.
- Xer.Cqrs - C# で開発された .NET Standard 1..0 をターゲットとした、CQRS パターンに基づくアプリケーションを作成するためのシンプルなライブラリ。属性ルーティングとホストされたハンドラーをサポートしている.
- Deveel Repository - .NET 用のリポジトリパターンのシンプルな実装で、MongoDB および Entity Framework をサポートし、モデルにキャッシュ、ページング、バリデーションなど、さらに多くのユーティリティを拡張している.
- Deveel Events- .NET アプリケーションにおけるイベントの公開および購読を簡単に行えるフレームワークを提供しており、複数のメッセージチャネル(例:RabbitMQ, Azure Service Bus など)およびさまざまなシリアル化形式(例:JSON, XML など)をサポートしている.
データベース
- Event Store - JavaScript で実装されたオープンソースの機能的なデータベースで、複雑なイベント処理を提供している.
- Eventsourcing - ビジネスイベントのキャプチャおよびクエリフレームワーク.
- Message DB - Postgres 用のマイクロサービスネイティブイベントストアおよびメッセージストア。Pub/Sub、イベントソース、メッセージング、イベントドリブンマイクロサービスアプリケーション向けに完全に機能するイベントストアおよびメッセージストアを PostgreSQL で実装している.
- Serialized - イベントソースおよび CQRS 用の完全なプラットフォーム.
Elixir
- Commanded - CQRS/ES アプリケーション向けのコマンドハンドリングミドルウェア、アグリゲートおよびプロセスマネージャー用の純粋な関数データ構造、ポイントツーポイントメッセージルーティングなど、Elixir(Erlang VM)で実装されたもの。すべてアクター並列モデルで構成されている.
- Event Bus - ETS をベースにした、トレース可能で拡張可能かつミニマリストなイベントバスの実装。内蔵されたイベントストアとイベントウォッチャーを備えている。
- eventstore - PostgreSQLを永続化として使用するCQRSイベントストア
JavaScript / TypeScript
- cqrs.js - node.jsにおけるCQRSの実装。含まれる node-eventstore, node-cqrs-domain, node-eventdenormalizer, node-cqrs-saga。
- wolkenkit - JavaScriptおよびNode.js向けのCQRS、DDD、イベントソースフレームワーク。
- Bitloops Language (BL) - オープンソースで、4世代のトランスパイルプログラミング言語であり、DDDおよびヘキサゴナルアーキテクチャを用いて、テスト可能、確認可能、維持可能な高品質ソフトウェアを書くことを支援します。
- Booster - CQRS、DDD、イベントソースを用いたオープンソースフレームワーク。すべてのインフラを活用し、高度な抽象化と規約を提供。ユーザーはビジネスロジックに集中できるように、高度なイベント駆動アプリケーションを構築できるようになります。
- Node API Boilerplate - DDDおよびクリーンアーキテクチャアプリケーション向けのNodeJSウェブAPIのボイラプレート。
- nestjs-hexagonal - Claude CodeプラグインによるNestJSの境界コンテキスト構築。ヘキサゴナルアーキテクチャ、DDD、CQRS、イベント駆動パターンを用いる。
JVM
- akka-ddd - Akkaプラットフォーム上でCQRS/DDDベースのアプローチを用いたアプリケーション開発に必要な再利用可能なアーティファクト。
- Apache Isis - Apache IsisはJavaでドメインドリブンアプリケーションを高速開発するためのフレームワーク。
- Axon Framework - Axonフレームワークは、CQRS原則に基づくJavaアプリケーションを作成する開発者にとって、開発をしやすくするためのもの。
- DDDplus framework - DDDに基づく複雑なビジネスアーキテクチャを実現する軽量で柔軟な開発フレームワーク。
- JESA - Java向けのイベントソースアグリゲート。
- Lagom - Lagomフレームワークは、Java仮想マシン向けのマイクロサービスフレームワークであり、JavaおよびScala言語のAPIを提供。イベントソース/CQRSベースの永続化モジュールを含む。
- Pure Assert - 軽量かつ依存関係のないJavaライブラリ。純粋な入力断言とドメイン不変性を表現するためのもの。
- SeedStack’s Business Framework - ドメインドリブン設計(DDD)アプローチに基づいてビジネスロジックをコードするための構成ブロックのセット。
- Spine Event Engine - クラウドアプリケーション開発向けのCQRS/ESフレームワーク。プロトブの構文で境界コンテキスト、コマンド、イベント、エンティティ状態を定義。バックエンドロジックは、プロトコード生成に基づくJavaで実装。Java、JSまたはDartのクライアントコードはgRPCを介してバックエンドと通信。
- Ahoo-Wang/Wow - DDDおよびイベントソースに基づく現代的な反応型CQRSアーキテクチャマイクロサービス開発フレームワーク。
PHP
- Broadway - Broadwayは(PHP)プロジェクトで、CQRSおよびイベントソースアプリケーションのインフラとテスト支援を提供。
- CodefyPHP Framework - ドメインドリブン設計、CQRS、イベントソースを用いて複雑なアプリケーションをコード化・構築するためのPHPフレームワーク。
- Ecotone - PHPにおけるメッセージ駆動アーキテクチャを可能にし、DDDおよびCQRSの原則を実現するための構成ブロックを提供。
- PHP Glossary - 項の分析を適用して、領域用語と範囲外用語をDDD方式で抽出する。
Python
- Eventsoucing in Python - 成熟し、安定したPythonライブラリ。イベントソーシングとDDDをサポートし、さまざまなデータベース、ドメインイベントの順序、アプリケーションレベルの暗号化、スナップショット、最適な競合制御、イベントプロセスをサポート。アプリケーションやその全体のシステムはインフラに依存せず定義でき、単一スレッド、マルチスレッド、クロック付き、ステップモード、マルチプロセス、アクターモデルなどさまざまな実行方式とインフラで動作できる。
- dry-python - プラグイン可能なビジネスロジックコンポーネント向けのライブラリセット。
- PyAssimilator - DDD Pythonパターン、イベントベースシステム、CRUDアプリケーションを迅速に作成。SQLAlchemy、MongoDB、Redis、または純粋Pythonをサポートするデータベースアクセス用のPythonパターンセット。PyAssimilatorは、依存関係のないコードを書けるため、SQLをNoSQLに変更しても、システム内の1つのファイルも変更しなくてもよい。
Ruby
- Eventide - Ruby向けのイベントソーシングとマイクロサービススタック。イベント駆動型、自律サービスを書くためのライブラリセット。
- Rails Event Store - Rails Event Store (RES) は、イベントの発行、消費、保存、取得を行うためのライブラリ。Railsアプリケーションでイベント駆動アーキテクチャを採用する際の最適なパートナー。
ポッドキャストとインタビュー
- Deeper into DDD on DotNetRocks with David Real - 2015年6月11日。
- Thinking in DDD on DotNetRocks with Julie Lerman and Steve Smith - 2014年8月19日。
- Eric Evans on Domain Driven Design on DotNetRocks - 2007年5月10日。
- Jimmy Nilsson on Domain Driven Design on DotNetRocks - 2006年8月29日。
- Being the Worst - 2012年から2016年まで。
- Software Engineering Radio Episode 225: Eric Evans on Domain-Driven Design at 10 Years - 2015年5月13日。
- Software Engineering Radio Episode 218: Udi Dahan on CQRS (Command Query Responsibility Segregation) - 2015年1月30日。
カンファレンス
- Domain-Driven Design Europe - DDDコンファレンス(COVID19期間中のオンライン開催)
- EventSourcing - CQRS/イベントソーシングコミュニティ向けの新しいイベント
- DDD Foundations - DDD初心者向けのセレクトされたコンファレンス
- Explore DDD - USA
- Kandddinsky - Germany
ユーザーグループ
- Collective CFP - すべてのDDDユーザーグループに一括で講演を提出できる。
- Map of user groups in Europe
- Map of user groups in North America
- Map of user groups in South America
- Map of user groups in Asia
- Map of user groups in Africa
- Map of user groups in Oceania
- Virtual
- Worldwide - イベントストーミングに関する具体的な情報
- Austria
- Barcelona
- Belfast
- Belgium
- Berlin
- Cologne/Bonn
- Copenhagen
- Cracow
- DDD Taiwan Community
- Denver
- Iran
- Greece
- Hamburg
- London
- Munich
- Nederland
- Norway
- Phoenix
- Warsaw
- Wroclaw
- Russia
ツール
- Domain Storytelling - 関与する人々が領域を理解し、共有された理解を表現するモデルを導き出すための知識の整理技術。print-out templateとして提供され、オープンソースのオンラインツール WPS Modeler(source)も提供。
- DDD Toolbox - 現代のウェブベースツールのオープンソースコレクション。領域ストーリーリングとイベントストーミング(Source Code)を含む。
ライセンス
法的に可能である範囲で、Nick Chamberlain はこの作品に関するすべての著作権および関連又は隣接する権利を放棄した。