Coder Social home page Coder Social logo

looselytyped / ddd-edm-course-materials Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ddd-edm-online-course/ddd-edm-course-materials

1.0 2.0 0.0 165.74 MB

Course Materials for Domain-Driven Design and Event-Driven Microservices Online Class

License: Other

ddd-edm-course-materials's Introduction

Materials for Domain-Driven Design and Event-Driven Microservices Online Course

This class will be offered via O’Reilly’s Live Online Training Platform on a semi-monthly basis. Watch the link for scheduled offerings!

Syllabus

New architectural paradigms like microservices and evolutionary architecture, as well as the challenges associated with managing data and transactional contexts in distributed systems, have generated a renewed interest in disciplined software design and modular decomposition strategies. We know that the secret to obtaining the benefits of these architectures is getting the boundaries right, both at the team and the component/service level, and then keeping them right as the software continues to evolve! A key reason for getting the boundaries right is that it allows us to create a unified and ubiquitous language within the bounded contexts those boundaries enclose, allowing the business and engineers to have productive and coherent conversations.

Fortunately, there is a mature, battle-tested approach to domain modeling and system decomposition that is a perfect compliment to these architectures: Domain-Driven Design (DDD). In this course, we’ll leverage an exemplar business domain, that of a pizza delivery store, to illustrate DDD-based decomposition strategies, data architecture patterns, and implementations.

Prerequisites and Helpful Background:

Setup Instructions:

Foundational Requirements

Your computer should be set up with the following capabilities:

  • Java 8

  • Maven (recent)

  • Git

  • The IDE/editor you are most comfortable using (make sure you have the Lombok plugin installed! Instructions for Eclipse and IntelliJ are linked).

Free SaaS accounts (optional):

  • It will be helpful to have a free RealtimeBoard account. Alternatively, keep handy a presentation or diagramming tool that you are comfortable using.

  • Set up a (free) account with both GitHub and TravisCI, if possible (see below).

(Optional) Setup Path for Enhanced Feedback

The exercises for this course will be enhanced and will provide personalized, real-time feedback if you have (free) accounts with both GitHub and TravisCI. We will use GitHub Classroom to generate a private repository for each participant, and TravisCI will automatically run tests against code exercises submitted to each repository. The instructor will be able to see your code submissions, but no one else.

Accounts with those services are optional, but strongly recommended for the best experience.

  1. Each class offering has a unique GitHub Classroom invitation link. The link for the SDD 2019 offering is: https://classroom.github.com/a/0gzJCeW_. Click on it.

  2. You will be asked to authorize GitHub Classroom to access data from your GitHub account. You will have to accept to continue. If you are not comfortable with this authorization, please continue to the Setup Path for Basic Participation.

    authorize
  3. Next you need to accept the assignment for this course, which will trigger the creation of your private repo.

    accept assignment
  4. Creating your repo and copying over the lab environment will take a moment. You’ll likely see a progress screen similar to this one:

    progress
  5. Once your repository is complete, you can click on the link to visit it:

    ready to go
  6. Copy the clone URL for your repo and clone it to your machine using git clone <REPO URL>.

    clone

At this point, you’ll want to pick up with the instructions found in the README of your private clone of the lab environment!

Setup Path for Basic Participation

Without GitHub and TravisCI accounts, you can still download the course materials manually, as a ZIP file; you just will not receive personalized feedback on the exercises.

Schedule:

Day One:

Class Introduction (10 minutes)

  • Intro to the Course

  • Intro to the Instructor

  • Class Logistics

  • Class Outline

Lecture: Why do we need DDD? (15 minutes)

Open Q&A and Class Discussion: Why DDD / Ubiquitous Language (10 minutes)

Break (10 minutes)

Open Q&A and Class Discussion: Strategic Design (10 minutes)

Open Q&A and Class Discussion: Tactical Design (10 minutes)

Lecture: Overview of Event Storming (15 minutes)

Break (10 minutes)

Open Q&A and Class Discussion: Event Storming and Pizza Shop Domain (10 minutes)

Student Activity: Pizza Shop Event Storming exercise (20 minutes)

Interactive Screen Share: Pizza Shop Event Storming solution (15 minutes)

Open Q&A and Class Discussion: Day One AMA (10 minutes)

Day Two:

Day One Recap (10 minutes)

Lecture: DDD and Technical Architectures (25 minutes)

Break (10 minutes)

Interactive Screen Share: Overview of the Pizza Shop Coding Exercise Environment (10 minutes)

Student Activity: Lab 1: TDD Aggregate Root - Create Kitchen Commands with Business Logic and Invariants (10 minutes)

Interactive Screen Share: Lab 1 Solution (15 minutes)

Student Activity: Lab 2: TDD Aggregate Root - Create and Publish Kitchen Domain Events (10 minutes)

Interactive Screen Share: Lab 2 Solution (15 minutes)

Student Activity: Lab 3: TDD Aggregate Repository - Create Kitchen Repositories and Add Domain Events (10 minutes)

Interactive Screen Share: Lab 3 Solution (15 minutes)

Student Activity: Lab 4: TDD Aggregate Repository - Rehydrate Kitchen Aggregates by Reference (10 minutes)

Interactive Screen Share: Lab 4 Solution (15 minutes)

Student Activity: Lab 5: TDD Application Service - Expose Kitchen Business Interface and Implement Transactions (10 minutes)

Interactive Screen Share: Lab 5 Solution (15 minutes)

Student Activity: Lab 6: TDD Policy - Subscribe to a Kitchen Domain Event from within an Aggregate and Create CQRS View (10 minutes)

Interactive Screen Share: Lab 6 Solution (15 minutes)

Student Activity: Lab 7: TDD Policy - Subscribe to a Kitchen Domain Event from an Adjacent Aggregate and Update State (10 minutes)

Interactive Screen Share: Lab 7 Solution (15 minutes)

Open Q&A and Class Discussion: Day Two AMA (10 minutes)

ddd-edm-course-materials's People

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.