Andrei CoroveiArchitecture & engineering

A PRACTICAL COURSE FOR SOFTWARE DEVELOPERS & TECHNICAL LEADS

Software
architecture.
Built on experience.

Design applications that hold up in production.
Understand the infrastructure, the code, and the decisions that connect them.

Let’s talk about the course

Upcoming sessions and pricing on request.

THE COURSE, AT A GLANCE4 TECHNICAL PARTS + THE ARCHITECT IN PRACTICE
  1. 01Reliable
    foundations
    NFRs & infrastructure
  2. 02Inside the
    application
    Classes & dependencies
  3. 03Design around
    the domain
    DDD & event storming
  4. 04Distributed
    systems
    Communication & resilience
  5. 05 / FINAL CHAPTERThe architect
    in practice
    Decisions & teams

A system has to work
beyond the whiteboard.

Requirements change. Dependencies grow. Networks fail. The course explores how architecture choices play out in these situations, through practical exercises and discussions about the trade-offs.

Understand the constraints. Connect technical decisions to what the system needs to deliver.

Work through the consequences. Use code and group challenges to examine the design.

The whole architecture.
One chapter at a time.

Four technical parts, followed by how to put them into practice with teams.

01

NFRs & INFRASTRUCTURE

Build for mission-critical demands.

Start with the non-functional requirements. Understand what reliability means for your application, then make infrastructure choices that support it.

A question we’ll work through

How much downtime and data loss can the business tolerate, and what does that mean for your infrastructure?

  • Availability, fault tolerance & recovery
  • RTO, RPO, SLIs & SLOs
  • Scaling, security, latency & cost
  • Azure infrastructure & observability
02

CLASSES & DEPENDENCIES

Keep a growing application manageable.

Manage complexity inside the codebase. Structure responsibilities and dependencies so that changes stay understandable as the application grows.

A question we’ll work through

When a requirement changes, how much of your application needs to change with it?

  • Cohesion, coupling & responsibilities
  • Dependency inversion & explicit dependencies
  • Clean Architecture, ports & adapters
  • Refactoring & testability
03

DOMAIN-DRIVEN DESIGN

Let the business shape the system.

Explore the domain with the people who understand it. Use that knowledge to find meaningful boundaries and build models that express the business rules.

A question we’ll work through

Where should a business rule live, and which changes need to stay consistent together?

  • Ubiquitous language & bounded contexts
  • Context mapping & event storming
  • Entities, value objects & aggregates
  • Domain events & CQRS
04

DISTRIBUTED SYSTEMS

Work with the realities of the network.

Understand when distribution helps and what it costs. Design communication and failure handling so that independently running parts can work together reliably.

A question we’ll work through

What happens when a call times out, a message arrives twice, or only half of a workflow succeeds?

  • Fallacies of distributed computing
  • Synchronous calls & asynchronous messaging
  • Retries, idempotency & consistency
  • Dapr invocation, pub/sub & state
05

THE ARCHITECT IN PRACTICE

Make architecture work with teams.

Bring the technical decisions into everyday delivery. Clarify requirements with stakeholders, communicate trade-offs, and stay involved through implementation.

A question we’ll work through

How do you communicate your architecture, document the decisions behind it, and guide the team through implementation?

  • Stakeholder conversations & shared understanding
  • Architecture Decision Records & arc42
  • Planning, implementation & code reviews
  • Evaluating the design against NFRs
For developers ready to shape the system.

You should be comfortable working in an existing codebase. The practical examples use .NET and Azure; familiarity with C# will help.

Andrei
Corovei.

Principal Software Engineer
Microsoft Certified Trainer

More about me on LinkedIn

The projects behind the course.

My 15+ years in software have been hands-on, working alongside teams in the code, infrastructure, and day-to-day realities of delivery. I’ve stayed close to implementation because I want to see how my architecture decisions work in practice, understand their consequences, and adjust when reality challenges the design. That work spans automated warehouse systems, logistics applications, and intelligent document processing.

I bring those experiences into the course: the design choices, the constraints, and the work of translating business reality into software with a team.

01 / LOGISTICS

Automated warehouse systems

Architecture for a mission-critical application used in automated warehouses worldwide, with DDD, event-driven workflows, and Azure infrastructure.

02 / AI & DISTRIBUTED SERVICES

Intelligent document processing

Services that run machine learning and generative AI models across regions, with demanding availability, latency, and throughput requirements.

03 / APPLICATION DESIGN

Business applications that evolve

Clean Architecture for logistics and insurance applications, including a quotation system shaped through requirements discussions, design sessions, and code reviews.

What people say.

“What I liked most was the broad view of software architecture. We covered a range of topics, instead of staying on just one thing, and the number of exercises felt about right.”
Radu
“The mix of solo and group exercises worked really well. The slides were visual, not just a bunch of bullet points, and that helped a lot. Andrei was an excellent tutor.”
Diana
“The examples made the concepts easy to follow. I don’t have much experience with C# or .NET, but the trainer adjusted the explanations and drew comparisons with Java. That really helped me keep up.”
Cristian
“I came away with new ways of looking at things and plenty to digest. I liked breaking into small groups for the exercises. It gave us a chance to work things out for ourselves between presentations :)”
Mihai

Let’s talk
architecture.

Tell me a little about your experience and what you’d like to learn. We can discuss the course, upcoming sessions, format, and pricing.

Get in touch