Hệ thống & web app doanh nghiệp

Năm đầu, hệ thống chạy êm và thêm gì cũng nhanh. Năm thứ ba, mỗi lần thêm một tính năng là một lần cả đội nín thở.

Đó không phải dấu hiệu đội kỹ thuật yếu đi. Đó là dấu hiệu hệ thống đã lớn vượt qua kiến trúc ban đầu của nó: dữ liệu phình ra, tính năng đắp lên nhau, các lối tắt của những năm đầu bắt đầu thu lãi. Phát triển hệ thống web là việc đưa hệ thống đó qua điểm gãy — tái cấu trúc từng phần có kế hoạch, trong lúc vận hành vẫn chạy.

Xem thêm giải pháp
Năm đầu, hệ thống chạy êm và thêm gì cũng nhanh. Năm thứ ba, mỗi lần thêm một tính năng là một lần cả đội nín thở. — Dũng Virgo

Ít hệ thống nào sập vì một quyết định sai lớn. Chúng xuống sức qua hàng trăm quyết định nhỏ hợp lý tại thời điểm đó: thêm một trường dữ liệu cho kịp việc, bắc một đoạn code vòng qua chỗ khó, để một báo cáo chạy thẳng vào bảng dữ liệu chính cho nhanh. Mỗi quyết định đều “chạy được”. Cộng dồn ba năm, chúng thành một hệ thống mà mọi thay đổi đều chạm vào mọi thứ.

Cái giá phải trả không hiện trong một hóa đơn nào: nó hiện ở thời gian báo giá cho mỗi tính năng mới, ở số lỗi lan không rõ nguyên nhân, và ở việc doanh nghiệp bắt đầu né ra mắt tính năng vì sợ đụng vào hệ thống. Khi cái giá vô hình đó vượt chi phí tái cấu trúc, bạn đang ở điểm gãy.

Bốn dấu hiệu hệ thống đã tới điểm gãy — tự kiểm chứng không cần biết code

Dấu hiệu 1 — Tính năng mới ngày càng chậm và đắt một cách bất thường

Một thay đổi nhỏ về mặt nghiệp vụ liên tục được báo cần nhiều ngày và “phải kiểm tra kỹ vì ảnh hưởng nhiều chỗ”. Đây là triệu chứng kinh điển của kiến trúc đã bị xuyên thủng: mọi phần đều dính vào mọi phần.

Dấu hiệu 2 — Sửa chỗ này, lỗi chỗ khác

Lỗi xuất hiện ở module không liên quan đến phần vừa sửa, và đội ngũ bắt đầu sợ các đợt cập nhật. Hệ thống thiếu ranh giới rõ ràng giữa các phần và thiếu kiểm thử tự động cho phần lõi.

Dấu hiệu 3 — Chỉ một người dám đụng vào phần lõi

Kiến thức về hệ thống nằm trong đầu một cá nhân. Người đó nghỉ là doanh nghiệp mất khả năng thay đổi hệ thống của chính mình — một rủi ro vận hành, không chỉ rủi ro kỹ thuật.

Dấu hiệu 4 — Dữ liệu phình và chậm thấy rõ ở giờ cao điểm

Các thao tác vốn nhanh bắt đầu ì vào những khung giờ đông người dùng, báo cáo chạy lâu đến mức phải chạy đêm. Dữ liệu tăng trưởng là tin tốt — nhưng kiến trúc dữ liệu của năm đầu hiếm khi được thiết kế cho quy mô của năm thứ ba.

Cách đọc: một dấu hiệu là chuyện bình thường của hệ thống đang lớn. Từ ba dấu hiệu trở lên, việc tiếp tục vá theo phản xạ thường đắt hơn một lộ trình phát triển có kế hoạch.

Bốn dấu hiệu hệ thống đã tới điểm gãy — tự kiểm chứng không cần biết code

Ba chiến lược phát triển lại — chọn theo dữ kiện, không theo cảm xúc

Chiến lược 1 — Vá tiếp, nhưng có kỷ luật

Nếu nền còn tốt và điểm đau nằm ở vài khu vực: giữ nguyên hệ thống, bổ sung kiểm thử cho phần lõi, dọn các lối tắt nguy hiểm nhất và lập tài liệu cho các phần “chỉ một người hiểu”. Đây là kết luận hợp lệ cho nhiều hệ thống — và buổi khám hiện trạng có thể kết luận đúng như vậy.

Chiến lược 2 — Tái cấu trúc từng phần (chiến lược mặc định nên cân nhắc)

Giữ hệ thống chạy, thay thế lần lượt từng phần đã mỏi — thường bắt đầu từ phần gây lỗi lan hoặc phần sắp phải mở rộng — sang cấu trúc mới, nối với phần cũ qua các đầu mối rõ ràng. Mỗi phần thay xong là một phần khỏe lên thật, không có “ngày chuyển đổi lớn” đầy rủi ro.

Chiến lược 3 — Xây mới song song rồi chuyển đổi theo đợt

Chỉ dành cho hệ thống mà nền đã hết đường cứu hoặc nghiệp vụ đã đổi hẳn. Hệ thống mới được xây song song, người dùng chuyển theo nhóm/đợt, hệ thống cũ vẫn chạy cho đến khi đợt cuối hoàn tất. Đây là phương án tốn nhất và rủi ro nhất — cần lý do thật sự mạnh.

Ba chiến lược phát triển lại — chọn theo dữ kiện, không theo cảm xúc

Nguyên tắc sống còn: nâng cấp trong lúc hệ thống vẫn đang vận hành

Mọi giai đoạn của lộ trình đều tuân bốn nguyên tắc:

1. Không có đợt thay đổi nào không có điểm quay lui: sao lưu và phương án trở về trạng thái trước được chuẩn bị trước khi bắt đầu, không phải khi sự cố xảy ra.

2. Dữ liệu chuyển đến đâu, kiểm chứng đến đó: số lượng bản ghi, tổng kiểm tra và các trường hợp biên được đối chiếu sau mỗi lần di chuyển dữ liệu.

3. Người dùng được chuyển theo nhóm: nhóm nhỏ dùng trước phần mới, phản hồi được xử lý xong mới mở rộng — thay vì toàn công ty cùng “sốc” trong một buổi sáng.

4. Phần cũ chỉ tắt khi phần mới đã chứng minh chạy được trong vận hành thật, không tắt theo lịch cứng.

Nguyên tắc sống còn: nâng cấp trong lúc hệ thống vẫn đang vận hành

Phần thường bị bỏ quên: trả lại “bản đồ” cho hệ thống

Một hệ thống khỏe không chỉ cần code khỏe. Sau lộ trình phát triển, doanh nghiệp phải cầm được:

Đây là cách chấm dứt vĩnh viễn dấu hiệu số 3 — hệ thống thuộc về doanh nghiệp, không thuộc về trí nhớ của một ai.

  • Bản đồ kiến trúc hiện tại: các phần, cách chúng nối nhau, dữ liệu chính nằm ở đâu.
  • Tài liệu các quy tắc nghiệp vụ quan trọng đang được hệ thống thực thi.
  • Danh sách tài khoản hạ tầng, khóa truy cập và người chịu trách nhiệm từng phần.
  • Nhật ký các quyết định kỹ thuật lớn kèm lý do — để người đến sau không phải đoán và không phá vỡ một chủ đích cũ vì tưởng là lỗi.
Phần thường bị bỏ quên: trả lại “bản đồ” cho hệ thống

Quy trình triển khai

1

Khám hiện trạng

Rà soát cấu trúc, dữ liệu, các điểm đau và lịch sử chắp vá; phỏng vấn người vận hành về những chỗ “không dám đụng”.

2

Nhận lộ trình trong 24–48 giờ làm việc sau khám

Lộ trình gồm chiến lược được chọn kèm lý do, thứ tự các phần cần xử lý, cách giữ vận hành trong từng giai đoạn và thời gian dự kiến theo giai đoạn.

3

Thực hiện từng giai đoạn có nghiệm thu vận hành

Mỗi giai đoạn kết thúc khi phần mới đã chạy thật với người dùng thật và số liệu đối chiếu khớp — không kết thúc ở bản demo.

4

Bàn giao bản đồ và nhịp chăm sóc

Tài liệu kiến trúc, quy trình sao lưu/khôi phục và nhịp rà soát định kỳ được bàn giao để hệ thống không trượt lại về trạng thái cũ.

Câu hỏi thường gặp

Hệ thống của tôi có nhất thiết phải làm lại không?

Không nhất thiết — và không ai nên kết luận điều đó trước khi khám hiện trạng. Nhiều hệ thống chỉ cần vá có kỷ luật và tái cấu trúc một, hai phần. Kết luận làm lại toàn bộ chỉ đứng vững khi nền hết đường nâng cấp hoặc nghiệp vụ đã đổi hẳn.

Người dùng đang dùng thật mỗi ngày thì nâng cấp có làm gián đoạn không?

Lộ trình được thiết kế để tránh gián đoạn: thay đổi lớn được chuẩn bị song song, chuyển người dùng theo nhóm và luôn có điểm quay lui. Các cửa sổ bảo trì ngắn nếu cần đều được lên lịch vào khung giờ ít ảnh hưởng nhất và thông báo trước.

Đội viết hệ thống ban đầu không còn liên lạc được — có tiếp quản được không?

Được, bắt đầu bằng khâu khám hiện trạng sâu hơn bình thường: đọc cấu trúc code và dữ liệu để dựng lại bản đồ hệ thống, xác định các phần chưa rõ và mức rủi ro của từng phần trước khi cam kết lộ trình.

Làm sao biết nâng cấp có hiệu quả thật, không chỉ “cảm thấy mượt hơn”?

Bằng các chỉ dấu vận hành được chốt từ đầu: thời gian triển khai một thay đổi điển hình, tần suất lỗi lan sau cập nhật, thời gian chạy các báo cáo nặng ở giờ cao điểm. Các chỉ dấu này được đo trước và sau từng giai đoạn.

Trong lúc phát triển lại, có thêm tính năng mới được không?

Có, nhưng theo kỷ luật: tính năng mới được xếp vào phần kiến trúc mới hoặc ghi vào danh sách chờ đúng giai đoạn của nó — tránh việc vừa tái cấu trúc vừa tiếp tục đắp lên phần sắp thay, điều làm lộ trình mất ý nghĩa.

Cần cung cấp gì cho bước khám hiện trạng?

Quyền truy cập xem hệ thống và mã nguồn (theo thỏa thuận bảo mật), mô tả các điểm đau vận hành đang gặp, và đầu mối người đang vận hành hệ thống. Phản hồi về phạm vi khám được gửi trong 24–48 giờ làm việc.

Hệ thống của bạn không cần trẻ lại trong một đêm — nó cần một lộ trình để mỗi quý khỏe hơn quý trước một phần

Nỗi sợ lớn nhất — “đụng vào là đứng hết” — được xử lý bằng chính thiết kế của lộ trình: khám trước, kết luận sau; thay từng phần; luôn có đường quay lui. Hãy bắt đầu bằng việc gửi hiện trạng: hệ thống đang chạy gì, đau ở đâu, chỗ nào không ai dám đụng. Bản đồ và thứ tự xử lý là thứ bạn nhận được trước khi bất kỳ dòng code nào bị thay đổi. Phản hồi bước đầu được gửi trong 24–48 giờ làm việc. Văn phòng Hà Nội: 144 Trần Vỹ · Văn phòng Phú Thọ: Số 2 Chùa Cấm, Phúc Yên. Liên hệ nhanh qua các nút Điện thoại/Zalo trên trang.