Training & Workshops
I run various training and workshops for teams, focusing on distributed systems, application architecture, event-driven architecture, event sourcing, microservices architecture, domain-driven design, test-driven development, and vertical slice architecture.
📩 Contact Me
LinkedIn: https://www.linkedin.com/in/mehdihadeli
Some Training and Workshops
From CRUD to CQRS With Vertical Slice Architecture
🛠️ Workshop Overview
CQRS (Command Query Responsibility Segregation) is often misunderstood as a complex pattern requiring multiple databases, event sourcing, or separate read/write models. However, at its core, CQRS is about structuring your codebase for better maintainability and scalability. Combined with Vertical Slice Architecture, it becomes a powerful way to organize your application around business capabilities rather than technical layers. This workshop will guide you through refactoring a traditional CRUD monolith to a simple, maintainable CQRS-based system using Vertical Slice Architecture, without unnecessary complexity.
📚 Topics
- Introduction to CRUD, CQRS, and Vertical Slice Architecture
- Simplifying CQRS
- Vertical Slice Architecture in Action
- Refactoring CRUD to CQRS
- Focusing on the Business
- Hands-On Implementation
- Advanced Topics
Practical Domain-Driven Design and Event Sourcing Using .NET and C#
🛠️ Workshop Overview
Domain-Driven Design (DDD) and Event Sourcing are powerful paradigms for building complex, business-oriented applications. However, they are often considered overly complex or theoretical. This workshop focuses on the practical DDD and Event Sourcing application in .NET and C#. You’ll learn how to design systems that align with business needs, capture changes as events, and build scalable, maintainable applications. This workshop emphasizes real-world scenarios, hands-on implementation, and avoiding unnecessary complexity.
📚 Topics
- Introduction to Domain-Driven Design (DDD) and Event Sourcing
- Designing with Domain-Driven Design
- Implementing Event Sourcing
- Building a Practical Event-Sourced System in .NET
- Integrating DDD and Event Sourcing
- Hands-On Implementation
- Advanced Topics
Migrating From Monolith to Microservices using .NET and Cloud-Native Technologies
🛠️ Workshop Overview
Modernizing legacy monolithic applications into microservices and cloud-native systems is essential for scalability, maintainability, and resilience. This workshop will guide you through the process of breaking down a monolith, designing microservices, and leveraging cloud-native technologies using .NET. You’ll learn practical strategies, tools, and best practices to ensure a smooth and successful migration.
📚 Topics
- Introduction to Monoliths, Microservices, and Cloud-Native
- Strategies for Breaking Down a Monolith
- Designing Microservices in .NET
- Building Cloud-Native Applications with .NET
- Implementing Cloud-Native Patterns
- Advanced Topics
- Hands-On Implementation
Migrating From Monolith To Modern Modular Monolith Applications in .NET
🛠️ Workshop Overview
Not every application needs to be broken into microservices. A modular monolith offers a balanced approach, combining the simplicity of a monolith with the maintainability and scalability of modular design. This workshop will guide you through refactoring a traditional monolithic application into a modern modular monolith using .NET. You'll learn how to structure your application into modules, reduce coupling, and improve maintainability without the complexity of distributed systems.
📚 Topics
- Introduction to Monoliths and Modular Monoliths
- Designing a Modular Monolith
- Refactoring a Monolith to a Modular Monolith
- Implementing Modular Monoliths in .NET
- Testing and Maintaining Modular Monoliths
- Advanced Topics
- Hands-On Implementation
Observability in Distributed Systems Using .NET and OpenTelemetry
🛠️ Workshop Overview
In modern distributed systems, observability is critical for understanding system behavior, diagnosing issues, and ensuring reliability. This workshop will guide you through implementing observability in .NET applications using OpenTelemetry. We’ll cover how to collect logs, traces, and metrics, send them to the OpenTelemetry Collector, and then export them to defined exporters like Kibana, Loki, Prometheus, Jaeger, and Tempo.
📚 Topics
- Introduction to Observability and OpenTelemetry
- Setting Up OpenTelemetry in .NET
- Collecting and Sending Telemetry Data
- Hands-On Implementation
- Advanced Topics