QM
Đang mở cơ hội Backend .NET / DevOps

Lê Nguyễn Quang Minh

Software Engineer · Backend .NET & DevOps

Xây dựng backend .NET và tự tay đưa nó lên production.

Software Engineer thiên Backend .NET với 2 năm kinh nghiệm phát triển web/API, mạnh về multi-tenant, e-commerce platform và system integration. Điểm khác biệt của tôi là ownership trọn vẹn: từ thiết kế database, API/business logic cho tới Docker, CI/CD, Nginx/SSL và troubleshooting trên server thật.

Lê Nguyễn Quang Minh
9+
Dự án E-commerce, B2B, Affiliate & Sales-POS
3→1
Rút thời gian delivery từ ~3 tháng xuống ~1 tháng nhờ base platform tái sử dụng
3
Khách hàng chạy thật trên hệ thống multi-tenant MeU Omni
9+
Dịch vụ bên thứ ba đã tích hợp qua webhook & event

Về tôi

Tôi bắt đầu từ Backend .NET, nhưng công việc thực tế nhanh chóng kéo tôi xuống tầng hạ tầng: đóng gói Docker image, dựng GitLab CI/CD, cấu hình Nginx reverse proxy và SSL, rồi ngồi đọc log lúc production có sự cố. Tôi thấy đó là điều may mắn — nó buộc tôi hiểu hệ thống như một khối thống nhất chứ không chỉ là đoạn code mình viết.

Cách tôi làm việc gọn trong một câu: hiểu vấn đề trước khi gõ phím, và không coi task là xong cho tới khi nó chạy ổn trên production. Tôi quen với việc phối hợp cùng PM/BA/FE/QA, review code cho đồng đội và hướng dẫn intern.

Cách tôi làm việc

Đọc log trước, đoán sau

Phần lớn sự cố tôi gặp đều đã tự khai báo trong log. Thói quen đi tuần tự từ tầng ngoài vào trong giúp tôi tiết kiệm rất nhiều thời gian so với việc sửa theo linh cảm.

Ownership tới production

Tôi không xem một task là xong khi code đã merge. Nó xong khi chạy ổn trên server thật, và tôi biết cách xử lý nếu nó hỏng lúc nửa đêm.

Dùng AI có kiểm chứng

Tôi dùng Claude Code và ChatGPT cho planning, review repo/log và viết tài liệu kỹ thuật. Nhưng mọi thứ đều được đọc lại và kiểm chứng trước khi đưa vào hệ thống — công cụ hỗ trợ tư duy, không thay thế nó.

Học bằng cách dựng lại

Cách tôi học công nghệ mới là dựng lại nó ở quy mô nhỏ trên server riêng. Chính website này cũng chạy trên VPS tôi tự cấu hình bằng Docker, Nginx và SSL.

Kinh nghiệm làm việc

MeU Solutions

Software Engineer · Backend .NET

05/2025 – Hiện tại

Công ty công nghệ cung cấp dịch vụ phát triển, kiểm thử phần mềm và giải pháp Web/Mobile theo yêu cầu cho doanh nghiệp.

  • Phân tích solution, thiết kế database và xây dựng REST API/business logic bằng .NET/ASP.NET Core và Node.js; phối hợp chặt với PM/BA/FE/QA suốt vòng đời sản phẩm.
  • Thực hiện migration, indexing, transaction và query optimization; backup/restore, phân quyền và ownership trên PostgreSQL/SQL Server.
  • Đóng gói Docker image, build/maintain GitLab CI/CD và Docker Registry, cấu hình Nginx reverse proxy và SSL cho các môi trường Dev/Staging/Production.
  • Viết Bash script hỗ trợ vận hành và database; thực hiện root cause analysis xuyên suốt Application → Database → Container → Network/Reverse Proxy khi có incident.
  • Review code, estimate và hướng dẫn nhóm intern nhỏ.

Dự án tiêu biểu

Bốn dự án nói được nhiều nhất về cách tôi làm việc.

PowerShop

06/2026 – Hiện tại

Nền tảng e-commerce multi-service, .NET + Node.js/Medusa

Trực tiếp tích hợp Viettel Post và GHN cho vận chuyển, liên kết luồng Payment/Affiliate, đồng thời làm việc với OnePay, MISA, Auth, S3 và Email. Áp dụng Webhook, Event-driven, Retry và Idempotency để hạn chế xử lý trùng và giữ trạng thái nhất quán giữa các service.

Kết quảLoại bỏ duplicate processing khi đối tác gửi lại webhook

Backend & Integration.NETNode.jsMedusaPostgreSQLWebhookGHNViettel PostOnePayMISA

MeU Omni

04/2026 – 08/2026

Hệ thống quản lý bán hàng multi-tenant

Phát triển các module Product, Inventory/Warehouse, POS/Order, Customer/Debt, Employee/Payroll, Cashbook, Report và RBAC. Xử lý transaction, tồn kho và công nợ; cô lập dữ liệu theo tenantId; phụ trách cả migration, deployment và troubleshooting sau khi lên production.

Kết quảTriển khai thực tế cho 3 khách hàng trên cùng một codebase

Backend chính.NETASP.NET CorePostgreSQLMulti-tenancyRBACDocker

E-commerce Base Platform

01/2026 – 03/2026

Nền tảng tái sử dụng cho 4 dự án

Cùng PM đề xuất kiến trúc và chuẩn hóa phần Database/Backend dùng lại được cho Auth, Product/Inventory, Customer, Cart/Checkout, Order/Payment, Shipping, Promotion, Affiliate và CMS. Tự setup environment, database, Docker, reverse proxy/SSL và deployment trên server được cung cấp.

Kết quảGiảm thời gian delivery từ ~3 tháng xuống ~1 tháng

Database & Backend .NET.NETASP.NET CorePostgreSQLDocker ComposeNginxGitLab CI/CD

SAMCO · Merphaco · FirstGreen

2025

Ba dự án khách hàng, từ solo module tới team 15+

SAMCO: tự làm trọn module News từ database → API → lưu trữ S3/Long Vân → deploy. Merphaco: phát triển plugin Product/Order/Email. FirstGreen: module Article/User/Customer/Action và Media Upload, phối hợp integration/testing trong team lớn.

Backend .NET.NETSQL ServerS3REST API

Kiến trúc hệ thống

Cách tôi tổ chức một hệ thống multi-tenant và đưa nó lên server.

Khách hàng A/B/CHTTPSNginxreverse proxy · SSLDocker Compose · VPS.NET APIASP.NET CoreTầng dữ liệutenantId filterSignalRrealtime POSHàng đợi sự kiệnretry · idempotentPostgreSQL3 tenantBên thứ baGHN · OnePayCô lập dữ liệuMỗi request mang tenantId → filter áp ở tầng dữ liệu → truy vấn không bao giờchạm được dữ liệu của tenant khác.

Vuốt ngang để xem đầy đủ

Một Nginx đứng trước, nhận SSL và định tuyến vào các service .NET chạy trong Docker. Mỗi request mang tenantId, và tầng dữ liệu áp filter theo tenant trước khi chạm database — cùng một codebase phục vụ 3 khách hàng mà dữ liệu không lẫn vào nhau.

Từ production

Hai sự cố thật, và điều tôi rút ra sau đó.

Webhook đối tác gửi lại — đơn hàng bị xử lý trùng

Triệu chứng

Sau khi tích hợp đơn vị vận chuyển, một số đơn hàng ghi nhận trạng thái hai lần, kéo theo sai lệch tồn kho và công nợ.

Chẩn đoán

Đọc log ứng dụng và đối chiếu với request từ phía đối tác cho thấy họ retry webhook khi không nhận được phản hồi đủ nhanh — cùng một sự kiện được gửi nhiều lần, trong khi endpoint của chúng tôi xử lý mỗi lần gọi như một sự kiện mới.

Xử lý

Bổ sung idempotency key dựa trên mã sự kiện của đối tác, lưu lại các sự kiện đã xử lý và trả về sớm cho request lặp; đồng thời tách phần xử lý nặng ra khỏi luồng phản hồi để trả 200 nhanh hơn.

Bài học

Với webhook, mặc định phải giả định sự kiện sẽ đến nhiều lần. Idempotency không phải tính năng thêm vào sau — nó là yêu cầu cơ bản của mọi endpoint nhận sự kiện từ bên ngoài.

Ứng dụng chạy tốt ở Staging nhưng lỗi ngay sau khi lên Production

Triệu chứng

Bản release chạy ổn định ở Staging nhưng vừa lên Production thì API trả lỗi, trong khi container vẫn ở trạng thái running.

Chẩn đoán

Kiểm tra lần lượt từ Nginx → container → ứng dụng → database. Container sống, nhưng log ứng dụng cho thấy lỗi kết nối; nguyên nhân nằm ở biến môi trường và quyền truy cập database khác biệt giữa hai môi trường, không phải ở code.

Xử lý

Chuẩn hóa lại file cấu hình môi trường theo từng environment, rà soát permission/ownership trên database, và bổ sung bước kiểm tra cấu hình vào quy trình trước khi release.

Bài học

Container 'running' không có nghĩa là ứng dụng khỏe. Khi troubleshooting, đi tuần tự từ ngoài vào trong — Nginx, container, ứng dụng, database — sẽ nhanh hơn nhiều so với đoán mò.

Kỹ năng

Không có thanh phần trăm — chỉ là những gì tôi đã thực sự làm.

Backend & Ngôn ngữ

  • C# / .NET / ASP.NET Core

    Ngôn ngữ chính qua 9+ dự án production

  • Entity Framework

    Migration, quan hệ phức tạp, tối ưu truy vấn

  • Node.js

    Service phụ và tích hợp Medusa tại PowerShop

  • SignalR

    Cập nhật realtime cho màn hình POS

Kiến trúc & Tích hợp

  • Multi-tenancy

    Cô lập dữ liệu theo tenantId cho 3 khách hàng thật

  • Webhook & Event-driven

    Retry + Idempotency chống xử lý trùng

  • REST API / JWT

    Chuẩn hóa API và xác thực cho toàn base platform

  • 9+ third-party services

    GHN, Viettel Post, OnePay, MISA, Firebase, Google/Facebook Auth, S3, SMTP

DevOps & Hạ tầng

  • Docker / Docker Compose

    Đóng gói và vận hành nhiều service trên cùng host

  • GitLab CI/CD + Registry

    Pipeline build → push image → deploy tự động

  • Nginx / SSL

    Reverse proxy, chứng chỉ Let's Encrypt, cấu hình theo môi trường

  • Ubuntu / Linux

    Vận hành server thật: log, service, port, quyền truy cập

  • Bash scripting

    Mức cơ bản — script clone/migrate database, hỗ trợ deploy

Database

  • PostgreSQL

    Database chính; migration, index, transaction, backup/restore

  • SQL Server

    Dự án khách hàng doanh nghiệp

  • MongoDB

    Dữ liệu phi cấu trúc và log

Liên hệ

Nếu bạn đang tìm một backend engineer có thể tự đưa sản phẩm lên production, tôi rất sẵn lòng trò chuyện.

Điện thoại
0582879834
Khu vực
TP. Hồ Chí Minh, Việt Nam
Gửi email cho tôi