Hi, I’m Tuyen

.NET Lead focused on backend, infra, and AI. AWS/EKS, RDS/Redis, CI/CD, high-uptime systems, and practical trade-offs.

CQRS in .NET: when to use it, trade‑offs

What is CQRS (in one line) Separate the write side (commands that change state) from the read side (queries that return data), so each can optimize independently. When to use CQRS Read/write needs are very different: Reads are hot and need tailored projections, denormalized views, caching, or a different store. Writes need strong validation, invariants, and transactions. Performance and scaling: Reads outnumber writes by a lot (10×–100×), and you want to scale/read-optimize without complicating write logic. UX wants different shapes than your domain: E.g., “Order with line items and fulfillment status by customer” needs a custom read model that doesn’t match your normalized write schema. Complex domains: Clearer boundaries and testing by separating write rules (invariants) from read concerns (reporting, search). Event-driven systems: You already publish events and can build read models/projections asynchronously. When not to use CQRS ...

Aug 28, 2025 · 8 min

Event Sourcing in .NET

Event Sourcing in one line Store every state change as an event in an append-only log; rebuild state by replaying events and serve reads from projections. When to use Event Sourcing You need a full audit/history of changes (who did what, when). Complex domain invariants benefit from explicit events and replay. You want temporal queries (state as of time T) or easy rebuilds of new read models. Distributed workflows where event streams are the source of truth. You already embrace CQRS and projections (read models). When not to use it ...

Aug 28, 2025 · 10 min

From .NET to EKS with GitHub Actions: OIDC, Helm, canary

Goal Ship a .NET service to EKS with a clean pipeline: GitHub Actions uses OIDC (no long‑lived AWS keys) Builds and pushes image to ECR Helm deploy with safe rolling updates (optional canary) Connect to RDS with TLS Optional: upload static assets to S3 Repo layout . ├── src/MyApi/. │ ├── Program.cs │ ├── MyApi.csproj │ └── Dockerfile ├── charts/api/ # simple Helm chart for the API │ ├── Chart.yaml │ ├── values.yaml │ └── templates/ │ ├── deployment.yaml │ ├── service.yaml │ ├── hpa.yaml │ └── ingress.yaml └── .github/workflows/deploy.yml Dockerfile (multi-stage, non‑root) ...

Aug 28, 2025 · 6 min

6 Essential Design Patterns for Microservices

Timeless design patterns for reliable, scalable microservices.

Jun 14, 2024 · 4 min · Nguyen Thanh Tuyen

6 Essential Design Patterns for Microservices

Timeless design patterns for reliable, scalable microservices.

Jun 14, 2024 · 4 min · Nguyen Thanh Tuyen

What's New in C sharpt 12 and 13?

C# 12 is out and C# 13 is coming—see what’s new

Jun 14, 2024 · 4 min · Nguyen Thanh Tuyen