Abstract blue hexagon pattern

Modern Application Architecture

Learn how domain-driven design, event sourcing, CQRS and event modeling help you keep complexity under control.

Back to Workshops

No longer offered as a standard course. Get in touch if you need training in this area.

The central theme of this workshop is complexity: why it creeps into software, why it makes systems hard to change, and how patterns like domain-driven design, event sourcing, CQRS and event modeling help you bring it under control.

Over two days you learn through presentations, live demonstrations and practical exercises, working on real design problems.

What You Will Learn

  • Patterns for reducing and managing complexity in your applications
  • DDD, CQRS and event sourcing, well enough to use them
  • How to design more resilient, maintainable and scalable systems
  • When a monolith still makes sense, and when microservices do

Who Is This Workshop For?

Software developers and architects who want to learn how to build better, more maintainable applications. It is particularly useful for teams with growing or distributed codebases, including those moving toward microservices, who need a shared vocabulary and toolkit for managing complexity.

Prerequisites

You should preferably have worked for a few years as a developer in an object-oriented language. You don’t need experience of a specific framework or platform, because the workshop focuses on patterns and principles that apply across languages and technologies.

Workshop Agenda

During the workshop, we cover the following topics.

  • Introduction:
    • understanding complexity and why software projects fail
  • Documentation and building shared mental models of your architecture
  • Brainstorming and discovering business processes using event storming
  • Domain-driven design (DDD)
    • bounded contexts, ubiquitous language
    • aggregates and entity design
  • Database theory and choosing between SQL and NoSQL
  • Event sourcing as a pattern for storing state as a sequence of events
  • Event sourcing in practice, with hands-on implementation
  • Separating reads from writes
  • CQRS and the importance of separating commands from queries
  • Testing and Behavior-Driven Development (BDD)
  • Modeling systems using event modeling
  • Core architectural concepts and patterns for distributed applications
  • Application resiliency, circuit breakers, and error handling
  • The monolith: when and why it still makes sense
  • From monolith to microservices, and back again

To go deeper and build it in .NET, see my workshop DDD, CQRS, and Event Sourcing in .NET.

About the Trainer

My name is Tore Nestenius. I teach on-site and remotely, both directly for companies and through training companies in Europe. What I bring:

  • I have trained developers since 2010 and taught several hundred courses and talks.
  • I create, maintain and teach every course myself, and improve it after every delivery.
  • I am a Microsoft .NET MVP.
  • I co-founded Edument, a Swedish training and consulting company, where I was CTO, developer and trainer.
  • I work as an independent senior .NET consultant, so I teach from real projects.
  • I have worked with .NET and C# since 2002.
  • I hold the Azure AZ-204 and AZ-900 certifications.
  • I co-founded the .NET Skåne user group.

Tore Nestenius teaching a course

Modern Application Architecture

Duration
2 days

Level
Beginner

Language
English, Swedish

Training FAQs

Do you provide both on-site and remote training classes?

Yes, I provide both types of training.

Do you provide training in both Swedish and English?

Yes, both options are available. All my course materials are in English and I can teach the class in either Swedish or English.

Do you do half-day training?

When I run on-site, I usually do full-day classes. For remote training, I can provide options for both half and full days.

Do you do webinars and shorter talks?

Yes, please visit my Talks page for more details.

Get in touch

Contact