Domain driven design @FrOSCon

Post on 02-Jul-2015

477 views 2 download

description

Lucas' Talk about domain driven design at the FrOSCon from 23th and 24th of August

transcript

Escaping the Tower of BabelDomain Driven Design & NoSQL

Escaping the Tower of BabelDomain Driven Design & NoSQL

class SpaceShuttle end !class Astronaut end

vI

Domain Driven Design

• Find an ubiquitous language

• Every person involved understands the language

• The language is based on the domain

Eric Evans

Iterative DevelopmentClose relationship

between devs & domain experts

Domain Driven Design

Hi. I’m Lucas.

From Köln / Cologne

I work for ArangoDB GmbH

We build ArangoDB

ArangoDB is an Open Source NoSQL Database

But what is NoSQL?

SQL

NoSQL

SQL

Not only SQL

What is NoSQL?

What is SQL?

What is a relational algebra?

What is a relation?

Not SQL

A relational algebra

An algebra on relations

{(Alice, 1983-07-1, 1) (Bob, 2014-03-19, 2)}

name birthday city

Alice 1983-07-1 1

Bob 2014-03-19 2

Disconnect

Iv

Ownership

name: alice…

type: spaceshuttle

Entity Value Object Service

Identified by ID Value What it does

State Mutable Immutable Stateless

+ Factories + Repositories + Aggregates

DENORMALIZATION

Lift the restriction• Tuples containing other Tuples

• Tuples with arbitrary attributes

Space Shuttle

Parts

Space Shuttle

Parts

Document Store

Itype: spaceshuttle

vname: alice

astronaut: 1 spaceshuttle: 3

JOINS

Alice Ownership SpaceShuttle

Alice Ownership SpaceShuttle

Graph Database

Alice Ownership

SpaceShuttle

Parts

Alice Ownership

SpaceShuttle

Parts

I’m a document!

Alice Ownership

SpaceShuttle

Parts

Me too!

Alice Ownership

SpaceShuttle

Parts

Alice Ownership

SpaceShuttle

Parts

Multi Model Database

Disconnect

Iv

Ownership

name: alice…

type: spaceshuttle

Itype: spaceshuttle

vname: alice

Ownership

since: 2003

Explain graphs.

Learn about the domain.

Find the common language.

Build one

model for

everyone involved.

Evolve the model alongside the implementation

Explain graphs.

Learn about the domain.

Find the common language.

Build one model for everyone involved.

Evolve the model alongside the implementation

moonglummoonbeamlabs

arangodb.org