Pham Hai Dang

Backend Engineer Kỹ sư Backend

I build reliable, high-concurrency systems for real-time multiplayer games. Currently looking for part-time backend work. Tôi xây dựng các hệ thống đáng tin cậy, chịu tải đồng thời cao cho game multiplayer thời gian thực. Hiện đang tìm công việc backend part-time.

Open to part-time roles Sẵn sàng cho việc part-time
Download CV Tải CV
AboutGiới thiệu

I'm a backend engineer who cares about the parts of a system most people never see — the race condition that only shows up under load, the payment that must never be charged twice, the service that has to stay up while everything around it is changing.

Most of what I know, I learned by building a game I grew up playing. I spent my childhood inside Ngọc Rồng Online, a Vietnamese MMORPG, so a year ago I started rebuilding it from scratch — not a clone of the gameplay, but the whole backend behind it. That project turned into a live, 14-service system running 24/7 that I still design, deploy, and keep alive on my own.

Along the way I picked up the things you can't really learn from a tutorial: how to keep a distributed transaction consistent when a network call fails halfway through, how to cut database write load by an order of magnitude without losing data, and how to find out a service is down before your players do. I'm a second-year Information Technology student at PTIT — two years out from graduating — and I work part-time and intern at game studios in Hà Nội while I finish my degree.

When I'm not staring at Grafana dashboards, I'm usually playing League of Legends or Genshin Impact — the kind of games that got me into building backends in the first place.

Tôi là một kỹ sư backend quan tâm đến những phần của hệ thống mà ít người để ý — cái race condition chỉ xuất hiện khi tải cao, khoản thanh toán tuyệt đối không được tính hai lần, dịch vụ phải luôn sống trong khi mọi thứ xung quanh liên tục thay đổi.

Phần lớn những gì tôi biết đến từ việc tự xây lại một tựa game tôi lớn lên cùng. Tuổi thơ tôi gắn với Ngọc Rồng Online — một MMORPG Việt Nam — nên một năm trước tôi bắt đầu dựng lại nó từ đầu, không phải bản sao gameplay mà là toàn bộ backend phía sau. Dự án đó đã trở thành một hệ thống 14 service đang chạy thật, hoạt động 24/7, mà tôi vẫn tự thiết kế, deploy và vận hành một mình.

Trên hành trình đó tôi học được những điều mà tutorial không dạy: cách giữ một distributed transaction nhất quán khi một network call lỗi giữa chừng, cách giảm tải ghi database cả chục lần mà không mất dữ liệu, và cách phát hiện một service sập trước cả khi người chơi nhận ra. Tôi là sinh viên năm hai ngành Công nghệ Thông tin tại PTIT — còn hai năm nữa mới ra trường — và đang làm part-time, thực tập tại các studio game ở Hà Nội trong lúc hoàn thành việc học.

Khi không cắm mặt vào dashboard Grafana, tôi thường chơi League of Legends hoặc Genshin Impact — chính những tựa game đã đưa tôi đến với việc xây dựng backend.

ExperienceKinh nghiệm
Nov 2025 — Feb 2026
Backend Developer · Gamota
Gabros Studio · InternshipGabros Studio · Thực tập

Designed a real-time multiplayer backend over WebSocket and load-tested it to 1000+ CCU with low-latency updates. Replaced real-time DB writes with Redis-backed state and RabbitMQ batch persistence — cutting write load by ~95% — and made in-game purchases atomic using Redis + Lua scripting to hold up under high concurrency. Thiết kế backend multiplayer thời gian thực qua WebSocket, load-test tới 1000+ CCU với độ trễ thấp. Thay việc ghi DB trực tiếp bằng state lưu trên Redis và batch persistence qua RabbitMQ — giảm tải ghi ~95% — và đảm bảo giao dịch mua vật phẩm trong game là atomic bằng Redis + Lua scripting để chịu được tải đồng thời cao.

WebSocketRedisRabbitMQLuaConcurrencyConcurrency
Aug 2025 — May 2026
Fullstack Developer · Mobifos JSC
Gahu Studio · Part-timeGahu Studio · Part-time

Built three NestJS microservices for a match-3 puzzle game serving ~2000 CCU over REST and gRPC. Set up RabbitMQ pipelines with retry and exponential backoff that recovered ~30% of transient failures, and brought average query latency down ~70% with MySQL indexing and Redis caching. Hardened everything with JWT/RBAC, rate limiting, Docker, and structured logging. Xây ba microservice NestJS cho một game match-3 phục vụ ~2000 CCU qua REST và gRPC. Dựng pipeline RabbitMQ có retry và exponential backoff giúp khôi phục ~30% lỗi tạm thời, và giảm độ trễ truy vấn trung bình ~70% nhờ indexing MySQL và caching Redis. Gia cố toàn bộ bằng JWT/RBAC, rate limiting, Docker và logging có cấu trúc.

NestJSgRPCRabbitMQMySQLRedisDocker
Download my full résumé (PDF)Tải CV đầy đủ của tôi (PDF)
ProjectsDự án
Live · 14moĐang chạy · 14 tháng
Sacred Dragon Warriors — Production MMORPGMMORPG thực tế

A live MMORPG I designed and operate solo: a 14-service polyglot backend in NestJS and Go, with 100+ APIs across 8 databases, event-driven over RabbitMQ, Redis Pub/Sub and NATS. Over 14 months it's grown to 1000+ commits, shipped by a CI/CD pipeline I built myself. Một MMORPG đang chạy thật do tôi tự thiết kế và vận hành: backend đa ngôn ngữ 14 service bằng NestJS và Go, với 100+ API trên 8 database, hướng sự kiện qua RabbitMQ, Redis Pub/Sub và NATS. Sau 14 tháng đã có hơn 1000 commit, được ship bởi pipeline CI/CD do chính tôi xây.

14
services in prodservice chạy thật
1000+
concurrent usersngười chơi đồng thời
700–1k
RPS sustainedRPS ổn định
p99<500ms
at 1k RPS soakkhi soak 1k RPS
  • Used the Saga + Outbox pattern across every transactional flow — 0% partial-failure incidents in production.Dùng pattern Saga + Outbox cho mọi luồng giao dịch — 0% sự cố lỗi một phần trong production.
  • Cut DB writes ~90% with a dirty-flag + async batch-write strategy while holding 700–1,000 RPS throughput.Giảm ghi DB ~90% bằng chiến lược dirty-flag + ghi batch bất đồng bộ, vẫn giữ throughput 700–1,000 RPS.
  • Integrated PayOS and VietQR with idempotent webhooks — 100% transaction accuracy across ~100 test cases.Tích hợp PayOS và VietQR với webhook idempotent — 100% chính xác giao dịch qua ~100 test case.
  • Migrated the real-time game loop from NestJS/Socket.IO to Go + raw WebSocket + Protobuf + NATS, shrinking payloads ~60%.Chuyển game loop thời gian thực từ NestJS/Socket.IO sang Go + raw WebSocket + Protobuf + NATS, giảm payload ~60%.
  • Built the observability stack (Prometheus, Grafana, circuit breakers, Discord/Telegram alerts) that caught 25 production incidents.Xây stack observability (Prometheus, Grafana, circuit breaker, cảnh báo Discord/Telegram) đã phát hiện 25 sự cố production.
NestJSGogRPCNATSProtobufPostgreSQLRedisPrometheus
2025
RMIT AI & Security Hackathon — Top 16

Placed in the top 16 of the RMIT AI & Security Hackathon, building under time pressure with a small team. A good reminder that shipping something rough but working beats over-engineering — and that security has to be designed in, not bolted on. Lọt top 16 RMIT AI & Security Hackathon, làm việc dưới áp lực thời gian cùng một nhóm nhỏ. Một bài học rằng ship được thứ thô nhưng chạy được tốt hơn là over-engineering — và bảo mật phải được thiết kế từ đầu, không phải gắn vào sau.

AISecurityRapid prototypingPrototyping nhanh
Explore 70+ repositories at github.com/DANG-PHKhám phá 70+ repository tại github.com/DANG-PH
SkillsKỹ năng
LanguagesNgôn ngữ
TypeScript, Go, JavaScript, Python, Java
System DesignThiết kế hệ thống
Saga, Outbox, Idempotency, Concurrency Control, Eventual Consistency, Event-driven Architecture
Backend
NestJS, Microservices, REST, gRPC, WebSocket, Protobuf, Distributed Systems
Data & QueuesDữ liệu & Hàng đợi
PostgreSQL, MySQL, MongoDB, Redis, RabbitMQ, NATS, BullMQ
SecurityBảo mật
JWT, RBAC, OAuth2, 2FA, Rate Limiting, CORS, XSS Sanitization
DevOps
Docker, Nginx, CI/CD, Prometheus, Grafana, PM2, Cloudflare, VPS

Designed and coded by Pham Hai Dang, in Hà Nội, Vietnam.
Built as a single HTML page. Type set in Manrope, Newsreader & JetBrains Mono.
Thiết kế và lập trình bởi Phạm Hải Đăng, tại Hà Nội, Việt Nam.
Dựng dưới dạng một trang HTML duy nhất. Font chữ Manrope, Newsreader & JetBrains Mono.

dangph.ptit@gmail.com · 0396 436 954 · github.com/DANG-PH