NTT

Backend Engineer · Django & .NET · 10+ năm

Nguyen Tran Tung

Hơn 10 năm làm backend, 5 năm gần đây làm game server cho WWE Champions của Scopely, trên Django và .NET Core. Phần lớn công việc là giữ dữ liệu không sai khi nhiều người chơi cùng ghi vào một chỗ, đảm bảo job chạy đúng lịch trên nhiều worker, load test trước khi lên production, và migrate hệ thống cũ sang stack mới mà không có downtime. Phần lớn những việc đó đều làm từ đầu đến cuối — viết design, code, test, rồi theo dõi lúc chạy thật.

10+
Năm kinh nghiệm ngành phần mềm
5+
Năm làm hệ thống game trực tuyến
  • Migration không downtime
  • Hệ thống xử lý concurrency cao
Ảnh chân dung Nguyen Tran Tung

21.0278° N, 105.8342° E
Hà Nội, Việt Nam

02

Công việc tiêu biểu

Bốn hệ thống bên trong WWE Champions — game mobile của Scopely, một trong những nhà phát hành lớn nhất tại Mỹ. Trang chính thức công bố hơn 45 triệu người chơi. Trang chính thức ↗

Dự án 01 / 04

Daily Boss

Write có tính tranh chấp cao
Vấn đề

Ngăn mất dữ liệu do race condition khi nhiều người chơi cùng gửi damage vào một boss trong cùng thời điểm.

Vai trò

Chịu trách nhiệm toàn bộ write path — từ thiết kế data model, code đến test.

Cách làm Xem cách làm ↓ Ẩn cách làm ↑

DynamoDB conditional write đảm bảo tính atomic, ngăn các lần submit ghi đè lên nhau. Leaderboard theo faction và cá nhân dùng Redis sorted set — điểm cộng dồn qua zincrby, xếp hạng lấy qua zrevrank thay vì quét toàn bộ set. Phần thưởng theo mốc damage chạy qua Celery job, có unit test đầy đủ.

Kết quả

Đã xử lý dứt điểm lỗi race condition từng ghi nhận; leaderboard vẫn chính xác dù có hàng trăm write mỗi giây lúc cao điểm.

  • DynamoDB
  • Redis sorted sets
  • Celery
  • Atomic writes
  • Unit tests
Dự án 02 / 04

PvP Tournament

Lập lịch job phân tán
Vấn đề

Giải đấu diễn ra định kỳ, nhưng người chơi ở nhiều timezone khác nhau — cùng một event phải rơi vào đúng giờ địa phương cho từng người, và lịch có thể đổi mà không cần redeploy.

Vai trò

Thiết kế kiến trúc lập lịch và mô hình cách ly giữa tournament với các tính năng khác.

Cách làm Xem cách làm ↓ Ẩn cách làm ↑

rrule điều khiển lịch lặp; một coordinator job điều phối các worker job chia thưởng và cập nhật leaderboard, tất cả chạy trên Celery với Redis làm broker. RedBeat cho phép đổi lịch khi hệ thống vẫn đang chạy. Bảy Celery app tách biệt, mỗi app có Redis và worker pool riêng, giúp một tournament trả thưởng hàng loạt không làm nghẽn queue của tính năng khác.

Kết quả

Ngăn được tình trạng nghẽn queue chéo giữa các tính năng khi trả thưởng hàng loạt; đổi lịch không cần downtime.

  • Python
  • Celery
  • Redis
  • rrule
Dự án 03 / 04

Tactics Event

Kiến trúc service
Vấn đề

Mỗi event system trước đó được xây riêng từ đầu, không có pattern chung cho việc theo dõi tiến trình hay mở tier.

Vai trò

Định hình kiến trúc phân lớp (view / controller / service / manager / model) đang được dùng chung cho mọi event system.

Cách làm Xem cách làm ↓ Ẩn cách làm ↑

Xây dynamic tier unlocking, tự sinh tier mới giữa event mà không cần scan toàn bảng. Phát hiện và fix lỗi write nested-attribute trên DynamoDB, sau đó dùng lại fix này như một pattern chung.

Kết quả

Event system mới được xây trên một kiến trúc chung thay vì làm lại từ đầu mỗi lần; mở tier giữa event mà không cần scan toàn bảng.

  • Architecture
  • Design patterns
  • DynamoDB
Dự án 04 / 04

Faction Feud

Migration & load test
Vấn đề

Một tính năng đang chạy live cần chuyển khỏi Python 2 mà không downtime — và team cần biết chắc hệ thống chịu được tải cao điểm trước khi launch.

Vai trò

Dẫn dắt migration và xây model load test làm cơ sở cho kế hoạch launch.

Cách làm Xem cách làm ↓ Ẩn cách làm ↑

Migrate toàn bộ API sang .NET Core 6, chuyển đổi không downtime. Mô phỏng tải đồng thời cao điểm dự kiến bằng Locust, sau đó benchmark cả API mới và API cập nhật trên model đó.

Kết quả

Kết quả load test đặt ra kế hoạch scale server và database trước khi launch, chỉ ra trước những điểm nghẽn cần xử lý.

  • C# / .NET 6
  • Locust
  • Load testing
  • Capacity planning
03

Kinh nghiệm

  1. 07/2018 – Hiện tại
    Hà Nội

    Web Developer → Game Server Engineer

    Gear Games

    Web Developer, 07/2018 – 11/2021 · Game Server Engineer, 09/2021 – Hiện tại

    Được thăng lên team game server trong khi vẫn đang bàn giao vai trò Web Developer.

    Backend cho WWE Champions, game mobile của Scopely — hệ thống live event ở quy mô lớn (xem phần Công việc tiêu biểu ở trên). Bắt đầu bằng việc xây LiveOps tool nội bộ và phối hợp với team Unity / server để thiết kế data structure cho các bản release mới.

    • Python
    • Django
    • .NET Core
    • DynamoDB
    • Redis
    • Celery
    • AWS
  2. 12/2017 – 06/2018
    Hà Nội

    Full Stack Developer

    Software Outsourcing Vietnam (ICTS)

    Làm việc trực tiếp với khách Nhật; đã ra mắt bireki.jp (ReactJS, AWS EC2) và app Relotalent dạng PWA.

    * Có overlap ngắn với vai trò VTC Game bên dưới, trong giai đoạn chuyển tiếp giữa hai công ty.

    • ReactJS
    • AWS
  3. 03/2016 – 01/2018
    Hà Nội

    Web Developer

    VTC Game

    Bắt đầu với các trang marketing cho game mới ra mắt, sau đó chuyển sang VTCPay.vn — cổng thanh toán quốc gia, lần đầu tiếp cận vận hành hệ thống quy mô lớn. Có tham gia We25.vn và Game8.vn.

    • PHP
    • MySQL
  4. 09/2014 – 02/2016
    Hà Nội

    PHP Web Developer

    MQ ICT Solutions

    Xây và bảo trì web app PHP / MySQL cho các dự án outsourcing với khách Nhật — lần đầu sở hữu một codebase production.

    • PHP
    • MySQL
04

Công nghệ sử dụng

Core

  • Python
  • Django
  • C# / .NET Core
  • DynamoDB
  • Redis
  • AWS

Cũng dùng

  • Flask
  • PHP
  • MySQL
  • PostgreSQL
  • Docker
  • Docker Compose
  • GitHub Actions
  • Locust
  • Datadog

Frontend (giai đoạn đầu)

  • ReactJS
  • VueJS
  • Angular
  • PWA
05

Cách làm việc

  1. 01

    Thiết kế cho concurrent writes.

  2. 02

    Test failure path trước khi release.

  3. 03

    Load test trước khi lên plan capacity.

  4. 04

    Giám sát hệ thống sau khi deploy.

Đang học solution architecture, dự kiến lấy chứng chỉ tiếp theo.

Công cụ dùng trong quá trình dev

  • Claude Code
  • Codex
  • opencode

06 — Học vấn

  • Đại học Bách khoa Hà Nội

    Kỹ sư Công nghệ Thông tin

    Tốt nghiệp 2015

  • THPT Chuyên Nguyễn Tất Thành, Lào Cai

    Chuyên Vật lý

    Khóa 18

Chứng chỉ