WMK-9741 How I discovered Domain Driven Design in GraphQL | Devoxx

Devoxx UK 2019
from Wednesday 8 May to Friday 10 May 2019.

   How I discovered Domain Driven Design in GraphQL


Intermediate level

Looking at the GraphQL spec for the first time I couldn't help but to be impressed by all the DDD ideas it covered. You can imagine my surprise when asking one of the creators Lee Byron about it, and him, being a product designer at Facebook at that time, having not heard of DDD or considered it during the design of GraphQL.

In this talk I want to cover how different aspects of DDD are well supported within GraphQL - starting from the ubiquitous language spelled out in the GraphQL schema over command-query-separation with queries and mutations to bounded contexts and translation layers that GraphQL APIs help to create.

GraphQL queries are the entrypoints for flexibly querying aggregate roots and value objects can be expressed with input or object types without identity, while a built in identity type helps declaring entities. Even newer concepts in DDD like events are provided by GraphQL subscriptions.

I want to bring the two worlds together using Eric Evans ideas and motivations - but the lack of an concrete spec - with the living and useable GraphQL spec and implementation, finishing with a demonstration of putting it all into a practical example.

Service API Design  
Subscribe to Devoxx on YouTube
Michael Hunger
Michael Hunger
From JEXP + Neo4j

Michael Hunger has been passionate about software development for more than 25 years.

As caretaker of the Neo4j community and ecosystem he especially loves to work with graph-related projects, users, and contributors.

Michael enjoys many aspects of programming, learning new things every day, participating in open source projects and contributing and writing software related books and articles. Michael spoke at numerous conferences and helped organized several of them.

Michael helps kids to learn to program by running weekly girls-only coding classes at local schools.

Make sure to download the Android or iOS mobile schedule.