Domain driven design @FrOSCon

40
Escaping the Tower of Babel Domain Driven Design & NoSQL

description

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

Transcript of Domain driven design @FrOSCon

Page 1: Domain driven design @FrOSCon

Escaping the Tower of BabelDomain Driven Design & NoSQL

Page 2: Domain driven design @FrOSCon

Escaping the Tower of BabelDomain Driven Design & NoSQL

Page 3: Domain driven design @FrOSCon

class SpaceShuttle end !class Astronaut end

vI

Page 4: Domain driven design @FrOSCon

Domain Driven Design

• Find an ubiquitous language

• Every person involved understands the language

• The language is based on the domain

Eric Evans

Page 5: Domain driven design @FrOSCon

Iterative DevelopmentClose relationship

between devs & domain experts

Domain Driven Design

Page 6: Domain driven design @FrOSCon

Hi. I’m Lucas.

Page 7: Domain driven design @FrOSCon

From Köln / Cologne

Page 8: Domain driven design @FrOSCon

I work for ArangoDB GmbH

Page 9: Domain driven design @FrOSCon

We build ArangoDB

Page 10: Domain driven design @FrOSCon

ArangoDB is an Open Source NoSQL Database

Page 11: Domain driven design @FrOSCon

But what is NoSQL?

Page 12: Domain driven design @FrOSCon

SQL

NoSQL

Page 13: Domain driven design @FrOSCon

SQL

Not only SQL

Page 14: Domain driven design @FrOSCon

What is NoSQL?

What is SQL?

What is a relational algebra?

What is a relation?

Not SQL

A relational algebra

An algebra on relations

Page 15: Domain driven design @FrOSCon

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

Page 16: Domain driven design @FrOSCon

name birthday city

Alice 1983-07-1 1

Bob 2014-03-19 2

Page 17: Domain driven design @FrOSCon

Disconnect

Iv

Ownership

name: alice…

type: spaceshuttle

Page 18: Domain driven design @FrOSCon

Entity Value Object Service

Identified by ID Value What it does

State Mutable Immutable Stateless

Page 19: Domain driven design @FrOSCon

+ Factories + Repositories + Aggregates

Page 20: Domain driven design @FrOSCon

DENORMALIZATION

Page 21: Domain driven design @FrOSCon

Lift the restriction• Tuples containing other Tuples

• Tuples with arbitrary attributes

Page 22: Domain driven design @FrOSCon

Space Shuttle

Parts

Page 23: Domain driven design @FrOSCon

Space Shuttle

Parts

Document Store

Page 24: Domain driven design @FrOSCon

Itype: spaceshuttle

vname: alice

astronaut: 1 spaceshuttle: 3

Page 25: Domain driven design @FrOSCon

JOINS

Page 26: Domain driven design @FrOSCon

Alice Ownership SpaceShuttle

Page 27: Domain driven design @FrOSCon

Alice Ownership SpaceShuttle

Graph Database

Page 28: Domain driven design @FrOSCon

Alice Ownership

SpaceShuttle

Parts

Page 29: Domain driven design @FrOSCon

Alice Ownership

SpaceShuttle

Parts

I’m a document!

Page 30: Domain driven design @FrOSCon

Alice Ownership

SpaceShuttle

Parts

Me too!

Page 31: Domain driven design @FrOSCon

Alice Ownership

SpaceShuttle

Parts

Page 32: Domain driven design @FrOSCon

Alice Ownership

SpaceShuttle

Parts

Multi Model Database

Page 33: Domain driven design @FrOSCon

Disconnect

Iv

Ownership

name: alice…

type: spaceshuttle

Page 34: Domain driven design @FrOSCon

Itype: spaceshuttle

vname: alice

Ownership

since: 2003

Page 35: Domain driven design @FrOSCon

Explain graphs.

Page 36: Domain driven design @FrOSCon

Learn about the domain.

Page 37: Domain driven design @FrOSCon

Find the common language.

Page 38: Domain driven design @FrOSCon

Build one

model for

everyone involved.

Page 39: Domain driven design @FrOSCon

Evolve the model alongside the implementation

Page 40: Domain driven design @FrOSCon

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