Về bản web

caltalys.dev

Email báo tài khoản sắp bị khoá. Tài khoản vẫn đăng nhập bình thường.

Một định nghĩa được sửa đúng quy trình ở một chỗ, trong khi nó đang sống ở bảy chỗ. Thay đổi thì có người làm, lan truyền thì không.

Caltalys · 30/09/2026 · 11 phút đọc

Sáng thứ Hai nào chị Loan cũng nhận một cái email giống hệt nhau.

“Tài khoản của quý vị đã không phát sinh hoạt động trong 90 ngày. Tài khoản sẽ bị tạm khoá nếu tiếp tục không hoạt động.”

Chị vẫn dùng hệ thống. Không thường xuyên - xã chị ít hồ sơ, có quý chị chỉ đăng nhập một lần. Nhưng lần nào cần thì chị vẫn vào được bình thường, làm việc bình thường, không có gì bị khoá cả.

Chị gọi lên tổng đài hỗ trợ. Bạn trực tổng đài kiểm tra, thấy tài khoản đang hoạt động, trạng thái bình thường. Bạn ấy trả lời đúng: “Không sao đâu chị, tài khoản chị vẫn mở.”

Tuần sau email lại đến. Chị gọi lại. Bạn trực lại kiểm tra, lại thấy bình thường, lại trả lời đúng như vậy.

Chuyện này kéo dài bốn tháng. Trong hệ thống ghi nhận sự cố, không có một phiếu nào - vì mỗi cuộc gọi đều kết thúc bằng kết luận tài khoản vẫn hoạt động, và kết luận ấy đúng. Chẳng rõ có gì để mà mở phiếu.

Bài trước là bốn người trong một phòng họp, cùng nghe một câu vào cùng một lúc. Lần này không có phòng nào cả. Hai người liên quan tới chuyện này chưa bao giờ ngồi cùng nhau, và hai việc họ làm cách nhau bốn tháng.

Tháng Ba, hệ thống định nghĩa tài khoản không hoạt động là không đăng nhập trong 90 ngày. Con số ấy có lý do: chuẩn an toàn thông tin nội bộ đặt ra như vậy.

Tháng Bảy, cán bộ ở các xã vùng xa bắt đầu bị khoá nhầm hàng loạt - họ chỉ dùng hệ thống mỗi quý một lần, và ba tháng thì vừa đúng 90 ngày. Anh phụ trách hệ thống nâng ngưỡng lên 180 ngày. Có tờ trình, có phê duyệt, có ghi vào nhật ký thay đổi. Đây là một quyết định đúng, làm đúng cách, giải quyết đúng vấn đề.

Chỉ có điều con số 90 lúc ấy đang nằm ở ba chỗ.

Nó nằm ở chỗ quyết định khi nào khoá tài khoản. Chỗ này được sửa thành 180.

Nó nằm ở chỗ sinh email nhắc nhở - một tính năng viết trước đó nửa năm, bởi một nhóm khác, cho một mục đích khác. Chỗ này không ai nhớ tới.

Và nó nằm ở chỗ đếm số tài khoản đang hoạt động để đưa vào báo cáo tháng. Chỗ này cũng không ai nhớ tới.

Nên từ tháng Bảy, tài khoản của chị Loan sống trong hai trạng thái cùng một lúc: đang mở, theo cái chỗ có quyền khoá; và không hoạt động, theo cái chỗ có quyền gửi email. Cả hai đều đang chạy đúng cái mà chúng được bảo phải làm.

Đây là chỗ cần đóng đinh, và nó khác với chuyện “một chữ có hai nghĩa”. Ở đây chỉ có một nghĩa, và nghĩa ấy đã được đổi một cách hợp lệ. Vấn đề là một khái niệm thì có nhiều bản sao, và các bản sao ấy mang những ngày tháng khác nhau. Người đi sửa biết rất rõ mình đang sửa cái gì. Cái người ấy không có sẵn trong tay là danh sách những chỗ đang phụ thuộc vào con số cũ.

Nói cho gọn: thay đổi thì có người làm, còn lan truyền thì không có ai làm cả.

Cái tiêu đề “người sửa sau thắng” thật ra sai. Người sửa sau chỉ thắng ở đúng chỗ mà người ấy sửa. Ở hai chỗ còn lại, bản tháng Ba vẫn đang thắng, và nó vẫn thắng ở đó suốt bốn tháng nữa.

Đến đây thì cách sửa hiện ra, và đó cũng là cách bên mình đã làm ngay sau vụ này: đánh số phiên bản cho tài liệu định nghĩa, ghi ngày hiệu lực, phổ biến lại cho các nhóm.

Cần thiết, nhưng nó trả lời một câu hỏi khác với câu đang cần hỏi.

Đánh số phiên bản trả lời: bản nào là bản mới nhất. Câu đó thường không khó - mở tài liệu ra là biết ngay. Câu khó, câu đã làm chị Loan nhận email suốt bốn tháng, là: những chỗ nào đang chạy trên bản cũ. Và tài liệu, dù đánh số kỹ đến đâu, cũng không biết ai đang đọc nó, ai đã đọc nó từ năm ngoái, và ai đã chép một con số từ nó ra rồi mang đi chỗ khác.

Cái mẹo bọn mình dùng bây giờ nghe rất tầm thường: khi sắp đổi một định nghĩa, đi tìm theo giá trị chứ đừng tìm theo tên.

Tìm chữ “tài khoản không hoạt động” thì ra được đúng cái tài liệu định nghĩa và vài chỗ dẫn chiếu, vì mỗi nơi gọi khái niệm ấy một kiểu - chỗ ghi “tài khoản không hoạt động”, chỗ ghi “tài khoản ngủ đông”, chỗ chẳng gọi tên gì cả mà cứ thế dùng.

Tìm con số 90 thì cho một đường rẻ hơn, vì một con số không có từ đồng nghĩa: chỗ nào chép nó thì nó nằm ở đó y hệt - trong tài liệu, trong cấu hình, trong một câu điều kiện, trong một dòng mô tả báo cáo, trong một cái email mẫu.

Hôm bọn mình đi tìm lại theo cách đó, con số 90 hiện ra ở bảy chỗ, không phải ba.

Bảy chỗ ấy không phải bảy chỗ cùng nói về một thứ. Trong đó có một chỗ là thời gian chờ 90 giây, chẳng liên quan gì. Và chiều ngược lại cũng đúng: cùng cái ngưỡng ba tháng ấy, một chỗ khác lại ghi là “một quý”, nên tìm số 90 thì không ra. Cái mẹo này không cho bạn danh sách những chỗ phụ thuộc. Nó cho bạn một danh sách chỗ đáng mở ra xem, rẻ hơn hẳn cách đi hỏi từng nhóm.

Nói thật với bạn một chuyện, để bạn đừng tưởng mẹo này gỡ được mọi ca: nó chỉ chạy khi định nghĩa có một con số. Những định nghĩa thuần chữ - thế nào là “hồ sơ phức tạp”, thế nào là “trường hợp ưu tiên” - thì không có gì để mà tìm, và mỗi chỗ lại diễn đạt một kiểu. Với loại đó thì mình chưa có mẹo nào rẻ, chỉ có cách đi hỏi từng nhóm, và thường là hỏi sót.

Giờ mình kể lại chuyện đó ở một chỗ mà bạn sẽ không nghĩ là cùng gốc.

Tháng Chín, đội bổ sung một bạn mới. Bạn ấy được phát bộ tài liệu để đọc, gồm bản hướng dẫn sử dụng in từ hồi bàn giao - bản viết 90 ngày.

Hai tháng sau, có người hỏi bạn ấy về quy tắc khoá tài khoản. Bạn ấy trả lời: 90 ngày. Trả lời rất tự tin, vì bạn ấy đã đọc kỹ tài liệu, và tài liệu ấy là bản chính thức, có số hiệu, do chính đội phát cho.

Từ lúc đó, con số 90 có thêm một đường sống mới. Nó không còn nằm trong một file để ai đó sửa nữa. Nó nằm trong đầu một người, và người ấy sẽ nói nó ra trong các cuộc họp, viết nó vào các tài liệu mới, giải thích nó cho người vào sau nữa.

Hai triệu chứng. Một cái là một cái email vô hại gửi suốt bốn tháng, một cái là một người mới học đúng theo tài liệu và học phải bản đã chết. Cùng một chỗ hỏng: định nghĩa thì được sửa ở một chỗ, còn nó thì đang sống ở nhiều chỗ - và những chỗ kia không có cách nào biết là chúng vừa lạc hậu.

Cái thứ hai khó gỡ hơn nhiều. Một chỗ nằm trong cấu hình thì ít nhất còn là một chỗ cụ thể để mà sửa. Một con số đã đi vào trí nhớ của một người thì nó tự lan tiếp, qua những cuộc trao đổi không ai ghi lại, tới những người mà bạn không biết là có tồn tại.

Cái mẹo này mình không đọc được ở đâu cả, và cũng không biết có ai đã viết ra chưa. Nó chỉ là thứ bọn mình mò ra sau vụ đó, dùng thấy được việc, và bạn kiểm được nó trong hai mươi phút bằng chính hệ thống của bạn - phần cuối bài có cách kiểm.

Nhưng đừng đi truy vết mọi định nghĩa. Phần lớn khái niệm trong một hệ thống chỉ sống ở đúng một chỗ, và đổi chúng thì chẳng ảnh hưởng tới ai.

Thang đo mình dùng: khái niệm đó có đang được nhiều hơn một bộ phận dùng cho nhiều hơn một mục đích hay không. Con số 90 kia phục vụ ba mục đích khác nhau - bảo mật, nhắc nhở người dùng, và thống kê. Ba mục đích ấy do ba nhóm khác nhau quan tâm, nên khi một nhóm đổi, hai nhóm kia không có lý do gì để biết. Còn một ngưỡng chỉ một nhóm dùng cho một việc thì đổi thoải mái, sai thì chính nhóm ấy phát hiện trong tuần.

Và cái nguyên lý đằng sau chẳng dính gì tới tài khoản hay số ngày. Trong một tổ chức, một khái niệm không nằm ở một chỗ - nó được chép ra nhiều bản, vào những thời điểm khác nhau, bởi những người khác nhau, cho những việc khác nhau. Khi ai đó sửa khái niệm ấy, họ sửa được bản mà họ nhìn thấy. Các bản còn lại vẫn chạy, vẫn đúng với cái ngày chúng được chép ra, và vẫn không phát ra tín hiệu nào - bởi vì một bản sao lỗi thời trông giống hệt một bản sao đúng.

Một việc bạn thử được trong hai mươi phút. Chọn một con số ngưỡng trong hệ thống của bạn - số ngày, số lần thử, hạn mức, thời gian chờ. Rồi đi tìm chính con số đó, không tìm tên khái niệm: trong tài liệu, trong cấu hình, trong mã nguồn, trong các mẫu thông báo. Đếm xem nó xuất hiện ở mấy chỗ.

Nếu nó xuất hiện ở nhiều chỗ, điều đó chưa chứng minh có gì đang hỏng. Rất có thể tất cả đều đang dùng cùng một giá trị và mọi thứ chạy êm - phần lớn thời gian là vậy. Cũng có khi hai chỗ được đặt khác nhau là có chủ đích, vì chúng phục vụ hai việc khác nhau - như thế là đúng chứ không phải sai. Và nó cũng không tìm ra được những bản sao ghi cùng ngưỡng ấy bằng một cách viết khác. Cái duy nhất con số đếm ấy cho bạn biết là: có ngần ấy chỗ đáng mở ra xem chúng có đang dựa vào cùng một quyết định hay không - và bây giờ thì bạn biết chúng nằm đâu, còn trước đó thì không.

Thảo, sau khi bọn mình tìm ra bảy chỗ, ngồi im một lúc rồi hỏi mình một câu mà mình chưa trả lời được:

Thảo Vậy còn những định nghĩa không có con số nào thì sao hả anh?

https://caltalys.dev/email-tai-khoan-sap-bi-khoa

Caltalys · 30/09/2026 · Phân tích nghiệp vụ · Định nghĩa dữ liệu · Quản lý thay đổi