Talk to an instructur:
+41 61 551 00 82
jonas@letsboot.ch

Vlad K.: DDD for architecting modular systems 

Course & Training

DOMAIN-DRIVEN DESIGN FOR ARCHITECTING MODULAR SYSTEMS

First Sessions: 5th & 6th December! Fully Booked!
Second Sessions: 7th & 8th December - Spots Still Available!

“Domain-Driven Design for Architecting Modular Systems" is a comprehensive training focusing on the design and implementation of modular software systems. Divided into four interactive modules — strategic design, business logic modeling patterns and strategies, architectural and integration patterns, and balanced coupling — it covers in detail the intricacies of identifying subdomains, creating ubiquitous language, implementing bullet-proof business logic, and architecting flexible systems. The balanced coupling module focuses on the underlying design principles at the heart of popular software patterns, including microservices and event-driven architecture. Furthermore, the module demonstrates a simple design heuristic shared among them. The training, enriched with quizzes, discussions, and hands-on exercises, enables participants to master the principles and patterns of domain-driven design, providing them with the essential skills for architecting modular software systems.

In-House Course:

We are happy to conduct tailored courses for your team - on-site, remotely or in our course rooms.

Request In-House Course

 

Content:


The training includes four modules: strategic design, business logic modeling patterns and strategies, architectural and integration patterns, and balanced coupling. A module’s length is, on average, 4 hours. However, the actual length can be higher depending on the audience’s participation. All modules include interactive elements, such as quizzes, discussions, and hands-on exercises.

Strategic Design


Subdomains: Identifying boundaries and implications of the different types of subdomains
Subdomains vs. Business Capabilities: Explore the commonalities and differences of the two models, applicability, and how to use business capabilities to discover subdomains.

Ubiquitous Language: Discovering and modeling domain knowledge through cultivating a shared understanding between domain experts and IT.
Navigating uncharted waters: building ubiquitous languages for novel solutions in which both problem and solution domains are uncertain.
Bounded Contexts: Effectively solving problems using multiple, task-oriented models. Explore the implications of bounded contexts on both technical and socio-technical design decisions

Tactical Design: Business Logic Modeling Patterns and Strategies


Business Logic: Definition, goals, and importance of a system’s business logic.
Transaction Script: Implementing bullet-proof business logic that ensures correctness and consistency of the data under all circumstances. Discussed topics include concurrency management, idempotency, reliable messaging, commonly overlooked business logic implementation issues, and how to avoid them.
Active Record: Extending the transaction script pattern to deal with complex data structures.
Domain Model: How to tackle complex business logic with domain-driven design’s aggregates, value objects, domain events, and domain services.
Event-Sourced Domain Model: Extending the domain model pattern to include the dimension of time.

Tactical Design: Architectural and Integration Patterns


Patterns of architecting individual components / services: layered architecture, ports & adapters, and CQRS.
Integration patterns: Orchestrating the work of related components through designing process managers, sagas, and transactional outboxes.

Balanced Coupling


The majority prevalent software design patterns, architectures, and techniques — including domain-driven design — share the same goal: increasing the flexibility of a system by managing the coupling of its components. This module shifts the focus from specific techniques to the underlying design principles at their core.
The attendees will learn what software coupling is and how it manifests itself in three dimensions: integration strength, distance, and volatility. Later, the three dimensions will be used to formulate a design heuristic for architecting modular software systems: balanced coupling.
Ultimately, the balanced coupling model will be used to reinforce core principles and patterns of domain-driven design, as well as guidance for designing microservices and event-driven architecture based systems.


Disclaimer: The actual course content may vary from the above, depending on the trainer, implementation, duration and constellation of participants.

Whether we call it training, course, workshop or seminar, we want to pick up participants at their point and equip them with the necessary practical knowledge so that they can apply the technology directly after the training and deepen it independently.

Goal:

Upon completion of the training, participants are expected to know the principles and patterns of domain-driven design, providing them with essential skills for architecting modular software systems.


Form:

The course is delivered in a mix of teaching methods, including lectures, quizzes, discussions, and hands-on exercises, all aimed at reinforcing learning outcomes and encouraging increased participation.


Target Audience:

This course is ideal for IT professionals, software architects, and developers aiming to enhance their skills in architecting modular software systems.


Requirements:

A basic understanding of software development and coding language is required.


Preparation:

All participants will receive detailed preparation instructions prior to the start of the course. This may include specific software or tools set up on their personal laptop, readiness to participate in interactive activities, or any necessary pre-reading. Feedback and clarification will also be provided based on individual participant needs through a pre-course questionnaire.

Request In-House Course:

In-House Kurs Anfragen

Waitinglist for public course:

Sign up for the waiting list for more public course dates. Once we have enough people on the waiting list, we will determine a date that suits everyone as much as possible and schedule a new session. If you want to participate directly with two colleagues, we can even plan a public course specifically for you.

Waiting List Request

(If you already have 3 or more participants, we will discuss your preferred date directly with you and announce the course.)

Share by: