Domain-Driven Design and microservices Hands-on workshop
Workshop 👥
English 🇬🇧
Tuesday, 9:00 AM – 1:00 PM
Length: 240 minutes
Room: Workshop B
Abstract
This Hands-on workshop would help with learning Domain-Driven Design fundamentals and how to apply them for better microservices architecture. We will also cover how to decide on boundaries of microservices and how/when to split microservices using Domain-Driven Design. Why Domain-Driven Design? DDD is very useful for designing scalable systems and platforms and the basis for designing better microservices architecture. On the data side, DDD is useful for building distributed data architectures including data mesh. DDD also helps with organizing a large team. This one-day workshop will help you learn how to use domain-driven design to split domain and to design better microservice-style architectures. You’ll learn the DDD vocabulary and strategic patterns. Throughout the workshop, you’ll complete exercises in which the name of the domain-driven design concept is initially hidden until you code the problem statement, and then it will be revealed. Using simple coding use cases, you’ll learn DDD from the bottom-up to understand how current and existing code bases can be refactored to use DDD. You will learn - The relationship between DDD and microservices Tactical and strategic DDD patterns Domain model as the primary and most important layer in three-tier/three-layer and hexagonal architecture Domain events, which are the basis for event-driven architecture And you will be able to - Come up with a microservice using the DDD aggregate concept Design and evolve better boundaries for microservices using DDD Understand the domain layer and its importance in the overall success of a project Apply DDD tactical patterns to existing code bases Topics Covered : The what/why/when of domain-driven design; domain-driven design and friends What is a domain layer in the context of 3-tier/3-layer and hexagonal architecture? Hands-on exercises- Problems 1 , 2 and showcase Hands-on exercises- Problems 3 ,4, 5 and showcase DDD Concept 1 Hands-on exercises- Problems 6 and showcase DDD Concept 2 Hands-on exercises- Problems 7 and showcase DDD Concept 3 Hands-on exercises- Problems 8 and showcase DDD Concept 4 Hands-on exercises- Problems 9 & 10 and showcase DDD Concept 5 Relationship to microservices architecture. Demo of microservice code using DDD. Covers when to split microservices. Sagas, microservices communication patterns. Hands-on exercises- Problems 11 and showcase. Demo of microservice code DDD Concept 6 Relationship to microservices architecture. Demo of microservice code using DDD DDD Concept 7 & 8 Relationship to team topology,etc. Modular monolith Brief on Event sourcing, CQRS, Brief on Event storming and Domain Storytelling - Technique to find bounded contexts. Brief on Data Mesh and its relation to Domain-Driven Design.
Prerequisites
A computer set up with the IDE of your choice e.g IntelliJ IDEA community edition, VC Code or other. You can use any programming language for the workshop (Java, C#, Python, Ruby, Kotlin, Scala, Javascript, TypeScript, Go). Please create a repository for the language of your choice before joining the live event . You should preferably have 4+ years of software development experience (such as Java, C#, JavaScript, TypeScript, Kotlin, Scala, Ruby, Python, Go, etc.) ( Please see sample repository for Java/gradle) https://github.com/ddd-workshop-org/ddd-sample-uc1 Please try to write code for the following four code problems before a workshop in the programming language of your choice. This workshop uses Object Oriented Paradigm for Domain Driven Design, so please use Object Oriented programming. Code Problem 1 Add a “Apple Pencil” to a Cart Note: Please do not create a User class. Please do not create ProductCategory, Variant, Colour, etc classes. Sample implementation: https://github.com/ddd-workshop-org/ddd-sample-uc1 Code Problem 2 Add a “Sony Wireless headphone” to a Cart https://github.com/ddd-workshop-org/ddd-sample-uc2 Code Problem 3 Add 2 quantities of “Apple Pencil” to a Cart. https://github.com/ddd-workshop-org/ddd-sample-uc3 Code Problem 4 Remove already added Item “Apple Pencil” (with all its quantities) from Cart. https://github.com/ddd-workshop-org/ddd-sample-uc4
Day & time
Tuesday, 9:00 AM – 1:00 PM
Intended audience
Developer, Architects who are new to Domain Driven Design (DDD) or know little bit about DDD
Sandeep Jagtap
Sandeep Jagtap is principal consultant for Thoughtworks India, where he has worked for 16 years. He’s a proponent, enthusiast, and practitioner of domain-driven design, with experience in building scalable systems using DDD, event sourcing and CQRS. During his 24 years of experience in the industry, he’s also served in roles such as developer, tech lead, tech principal, and architect. Please see LinkedIn profile for details https://www.linkedin.com/in/sandeepsjagtap/
sandeep_jagtap