Private MMO buộc tôi chịu trách nhiệm cho client cũ, server cũ, dữ liệu sống và người dùng thật. Nhiều lỗi chỉ xuất hiện sau deploy.

Ranh giới

Giá trị tôi giữ lại nằm ở hệ thống hậu trường:

  • System design và legacy integration.
  • Tooling, debugging và operation.
  • Release, recovery và dữ liệu sống.

Một game là cả system graph

“Server” thực ra là một chuỗi contract.

Production graph
01Launcher 02Client 03Services 04State
versionprotocolruntimerecovery

Mỗi mũi tên đều có thể drift. Process active không có nghĩa người chơi vào được.

SurfaceContract cần giữFailure dễ bị hiểu sai
LauncherVersion, endpoint, file integrityMở được không có nghĩa client đúng build
AuthenticationIdentity, session, server selectionLogin pass không chứng minh game service khỏe
Game serviceConfig, dependency, protocolProcess active không chứng minh loop hoạt động
DatabaseSchema, state, backup, recoveryKết nối được không chứng minh dữ liệu nhất quán
Admin toolAuthority, validation, audit trailUI tiện có thể che một mutation nguy hiểm

Production là graph của contract, không phải danh sách process xanh.

Production hỏng theo từng phần

Game system thường hỏng từng phần:

  • Service khởi động thành công nhưng đọc config cũ.
  • Client chạy trên máy dev nhưng thiếu runtime asset sau khi đóng gói.
  • Updater publish đủ file nhưng edge còn giữ artifact trước.
  • Auto restart làm process sống lại nhưng xóa dấu vết của root cause.
  • Một thao tác admin đúng về kỹ thuật nhưng sai authority.

Vì vậy health check phải đi qua nhiều lớp.

LayerCâu hỏiEvidence
ProcessBinary có đang chạy?PID, service state
DependencyNó có chạm được thứ cần thiết?Focused probe, dependency log
ContractMột flow tối thiểu có hoàn tất?Health transaction không mutation
User edgeNgười dùng thật đang nhận gì?Client version, public endpoint, edge hash

Tool cho operator

Server manager, log viewer, config UI và health check phải trả lời nhanh:

  1. Thành phần nào đang chạy?
  2. Nó chạy với config và version nào?
  3. Lỗi gần nhất và recovery path là gì?

UI chỉ là bề mặt. Validation, authority, idempotency và audit trail phải nằm bên dưới.

Một chạm, nhiều guardrail

Một server manager WinUI 3 từng chạy tốt trên máy dev nhưng package crash ngầm với mã 0xc000027b. Nó thiếu language asset của SDK và có XAML implicit style sai.

Bài học:

- one-click = ít code, ít thứ phải nghĩ
+ one-click = complexity được hấp thụ và kiểm chứng ở phía tool
+ artifact phải được test như artifact, không test thay bằng source tree
+ failure phải để lại evidence trước khi auto recovery

Nút Stop cũng phải theo dependency order, graceful shutdown, memory flush, timeout và retry. Surface đơn giản không đồng nghĩa kiến trúc đơn giản.

Dữ liệu sống

Code có thể revert. Vật phẩm, nhân vật và transaction thì không.

ReleaseCó thể đảo ngược thế nàoGate cần có
Code và static configRollback artifact hoặc config đã hashBuild, compatibility, restart plan
Persistent stateRestore, reconciliation hoặc corrective operationBackup, audit, owner authority

AI có thể chuẩn bị evidence và dry-run. Mutation dữ liệu thuộc owner.

Release tới edge

Release chỉ xong khi client, updater, manifest, CDN và service cùng đúng contract.

  • Artifact nào là canonical?
  • Version nào đang được manifest quảng bá?
  • Hash ở origin và edge có khớp?
  • Client cũ gặp server mới sẽ thế nào?
  • Rollback server có yêu cầu rollback client không?
  • Player data sinh ra giữa hai version được xử lý ra sao?

Người dùng nhận artifact từ edge, không nhận badge trên dashboard.

Phần còn lại

  1. Legacy contract luôn thắng assumption mới. Protocol, encoding và config cũ không tự biến mất vì ta thay UI.
  2. Observability là product feature. Operator không nhìn thấy state thì system chưa thực sự operable.
  3. Artifact là thứ được ship. Source build được không chứng minh package chạy được.
  4. Auto recovery phải giữ evidence. Restart nhanh mà mất root cause chỉ chuyển lỗi sang tương lai.
  5. Data mutation cần authority cao hơn code change. Độ khó phục hồi quyết định độ chặt của gate.
  6. Đơn giản ở bề mặt là kết quả của boundary rõ ở bên dưới.

Private MMO không phải toàn bộ GreenJade. Nó là nơi tôi học production bằng hệ thống thật.