25 thg 6, 2025·8 phút đọc

SLOs cho công cụ nội bộ: mục tiêu độ tin cậy đơn giản và hiệu quả

SLO cho công cụ nội bộ đơn giản: đặt mục tiêu uptime và latency có thể đo được, rồi ánh xạ chúng thành cảnh báo mà đội nhỏ có thể duy trì mà không kiệt sức.

SLOs cho công cụ nội bộ: mục tiêu độ tin cậy đơn giản và hiệu quả

Tại sao công cụ nội bộ cần SLOs (dù chỉ 20 người dùng)\n\nCông cụ nội bộ có vẻ nhỏ vì lượng người dùng ít. Nhưng tác động thường không nhỏ: nếu dashboard vận hành sập, đơn hàng dừng; nếu console hỗ trợ chậm, khách hàng phải chờ; nếu bảng admin hỏng, công việc sửa chữa dồn ứ.\n\nKhông có mục tiêu độ tin cậy rõ ràng, mỗi sự cố lại trở thành một cuộc tranh luận. Người này cho rằng một trục trặc 10 phút là chuyện nhỏ, người kia coi đó là khủng hoảng. Bạn mất thời gian vào các cuộc chat ồn ào, ưu tiên không rõ ràng, và công việc bất ngờ xảy ra vào lúc tệ nhất.\n\nSLOs khắc phục điều đó bằng cách đặt kỳ vọng đơn giản mà bạn có thể đo. Chúng trả lời hai câu hỏi thực tế: cái gì phải hoạt động, và mức độ hoạt động cần như thế nào để người ta làm được việc.\n\nChi phí ẩn của “chúng ta sẽ giữ cho nó khá ổn định” hiện ra rất nhanh. Công việc dừng lại trong khi đội chờ công cụ hồi phục. Các tin nhắn ping hỗ trợ nhân lên vì không ai biết chuẩn là gì. Kỹ sư bị kéo vào sửa gấp thay vì cải tiến có kế hoạch. Product owner mất niềm tin và bắt đầu yêu cầu sao lưu thủ công. Các vấn đề nhỏ kéo dài vì chúng không bao giờ vượt qua ranh giới rõ ràng.\n\nBạn không cần một chương trình độ tin cậy đầy đủ. Một đội nhỏ có thể bắt đầu với vài mục tiêu tập trung vào người dùng như “đăng nhập hoạt động” hoặc “kết quả tìm kiếm tải nhanh”, kèm theo một vài cảnh báo gắn với hành động thực.\n\nĐiều này áp dụng bất kể công cụ được xây thế nào. Nếu bạn dùng AppMaster (appmaster.io) để tạo app nội bộ, hãy chọn những hành động người dùng phụ thuộc, đo uptime và thời gian phản hồi, và chỉ cảnh báo khi nó ảnh hưởng đến công việc.\n\n## SLOs, SLIs và SLAs bằng ngôn ngữ dễ hiểu\n\nBa thuật ngữ này nghe giống nhau, nhưng là các loại ngôn ngữ độ tin cậy khác nhau. Nhầm lẫn giữa chúng là nguồn gây rối phổ biến.\n\nMột SLI (Service Level Indicator) là một phép đo. Là thứ bạn có thể đếm, như “tỷ lệ phần trăm yêu cầu thành công” hoặc “mất bao lâu để trang tải”. Nếu bạn không thể đo nó đáng tin cậy, thì nó không phải SLI tốt.\n\nMột SLO (Service Level Objective) là mục tiêu cho phép đo đó. Nó trả lời: mức nào thì đủ tốt cho người dùng trong phần lớn thời gian? SLO giúp bạn quyết định sửa gì trước và để gì chờ.\n\nMột SLA (Service Level Agreement) là một cam kết, thường viết ra, thường có hậu quả. Nhiều công cụ nội bộ không cần SLA. Họ cần mục tiêu rõ ràng, chứ không phải cam kết theo kiểu pháp lý.\n\nVí dụ nhanh:\n\n- SLI (uptime): Tỷ lệ phần trăm số phút công cụ có thể truy cập.\n- SLO (mục tiêu uptime): 99.9% uptime theo tháng.\n- SLI (độ trễ): p95 thời gian tải trang cho dashboard.\n- SLO (mục tiêu độ trễ): p95 dưới 2 giây trong giờ làm việc.\n\nChú ý điều thiếu: “không bao giờ sập” hay “luôn luôn nhanh”. SLO không phải về sự hoàn hảo. Chúng làm cho các đánh đổi hiển hiện để một đội nhỏ có thể lựa chọn giữa phát triển tính năng, công việc độ tin cậy và tránh lao động không cần thiết.\n\nMột quy tắc thực tế: nếu đạt mục tiêu đòi hỏi phải làm phép anh hùng, thì đó không phải SLO, đó là ảo tưởng. Bắt đầu với thứ đội bạn có thể duy trì bình tĩnh, rồi thắt chặt sau nếu người dùng vẫn thấy đau.\n\n## Chọn vài hành động người dùng thực sự quan trọng\n\nCông cụ nội bộ hỏng theo những cách cụ thể: bảng admin mở được nhưng lưu bản ghi thì bị treo mãi; dashboard ops mở nhưng biểu đồ không làm mới; cổng nhân viên hoạt động nhưng đăng nhập hỏng sau bản cập nhật. Bạn thu được giá trị nhất khi tập trung vào các hành động mà người dùng dựa vào mỗi ngày, không phải mọi trang và nút.\n\nBắt đầu bằng cách nêu loại công cụ, vì điều đó gợi ý đường chính quan trọng. Bảng admin là về “thay đổi một cách an toàn”. Dashboard ops là về “xem điều gì đang diễn ra ngay bây giờ”. Cổng nhân viên là về “vào, tìm thông tin và gửi yêu cầu”.\n\nSau đó viết ra các hành trình người dùng hàng đầu bằng ngôn ngữ đơn giản. Một bộ khởi đầu tốt:\n\n- Đăng nhập và tới màn hình chính\n- Tìm hoặc lọc và nhận kết quả\n- Gửi form (tạo/cập nhật) và thấy thông báo thành công\n- Tải view dashboard chính với dữ liệu mới\n- Xuất hoặc tải báo cáo mà mọi người dùng cho công việc hàng ngày\n\nVới mỗi hành trình, định nghĩa thế nào là thất bại. Hãy nghiêm khắc và có thể đo: lỗi 500 là thất bại, nhưng timeout, trang không bao giờ tải xong, hoặc form trả về thành công nhưng dữ liệu bị thiếu cũng là thất bại.\n\nGiữ phạm vi nhỏ lúc đầu. Chọn 1 đến 3 hành trình khớp với nỗi đau thực và rủi ro thực. Nếu trang on-call thường là “không ai đăng nhập được” và “nút lưu treo”, hãy bắt đầu với Đăng nhập và Gửi form. Thêm Tìm kiếm sau khi bạn tin tưởng vào phép đo và cảnh báo.\n\n## Chọn SLI bạn thực sự có thể đo được\n\nSLI tốt thì nhàm chán. Chúng đến từ dữ liệu bạn đã có, và khớp với cảm nhận của người dùng khi công cụ hoạt động hoặc hỏng. Nếu bạn cần cả hệ thống giám sát mới chỉ để đo chúng, hãy chọn SLI đơn giản hơn.\n\nBắt đầu với tính khả dụng theo cách người dùng hiểu: tôi có mở được công cụ không và tôi có hoàn thành được nhiệm vụ không? Với nhiều công cụ nội bộ, hai SLI phủ được phần lớn nỗi đau:\n\n- Uptime cho công cụ (có thể truy cập và phản hồi)\n- Tỷ lệ thành công cho 1 đến 3 hành động chính (đăng nhập, tìm kiếm, lưu, phê duyệt)\n\nRồi thêm độ trễ, nhưng giữ hẹp. Chọn một hoặc hai màn hình hoặc endpoint đại diện cho thời chờ mà người dùng phàn nàn, như tải dashboard hoặc gửi form. Đo mọi thứ thường tạo ra tiếng ồn và tranh luận.\n\nQuyết định cửa sổ đo trước: rolling 30 ngày là phổ biến cho công cụ ổn định; hàng tuần có thể phù hợp khi bạn phát hành thường và muốn phản hồi nhanh. Dù chọn gì, hãy giữ cố định để xu hướng có ý nghĩa.\n\nCuối cùng, chọn một nguồn chân lý cho mỗi SLI và ghi ra:\n\n- Kiểm tra tổng hợp (bot hit một health check hoặc chạy một luồng đơn giản)\n- Số liệu server (số lượng request, lỗi, latency từ backend)\n- Logs (đếm event “success” vs “failed” cho hành động cụ thể)\n\nVí dụ: nếu app nội bộ của bạn xây trên AppMaster, bạn có thể đo uptime bằng ping tổng hợp tới backend, tỷ lệ thành công từ phản hồi API, và độ trễ từ thời gian xử lý request backend. Chìa khóa là nhất quán, không hoàn hảo.\n\n## Đặt SLO uptime và latency thực tế\n\nBắt đầu bằng cách chọn một con số uptime mà bạn có thể biện hộ trong tuần xấu. Với nhiều công cụ nội bộ, 99.5% là SLO khởi điểm tốt. Nghe có vẻ cao, nhưng cho phép khoảng trống cho công việc thay đổi bình thường. Nhảy thẳng lên 99.9% thường đòi hỏi page ngoài giờ và phát hành chậm hơn.\n\nĐể uptime trở nên cụ thể, dịch nó sang thời gian. Tháng 30 ngày có khoảng 43.200 phút:\n\n- 99.5% uptime cho phép khoảng 216 phút downtime mỗi tháng\n- 99.9% uptime cho phép khoảng 43 phút downtime mỗi tháng\n\nThời gian downtime cho phép đó là ngân sách lỗi của bạn. Nếu bạn dùng hết sớm, bạn dừng các thay đổi rủi ro và tập trung vào độ tin cậy cho đến khi quay lại quỹ đạo.\n\nVề độ trễ, tránh dùng trung bình. Trung bình che đi những khoảnh khắc chậm mà người dùng nhớ. Dùng phân vị (thường p95) và đặt ngưỡng rõ ràng gắn với hành động thực. Ví dụ: “p95 tải dashboard dưới 2 giây” hoặc “p95 Lưu hoàn tất dưới 800 ms.”\n\nMột cách đơn giản để đặt số đầu tiên là quan sát một tuần lưu lượng thực, rồi chọn mục tiêu hơi tốt hơn hiện tại nhưng không viển vông. Nếu p95 đã là 1.9 giây, SLO 2.0 giây là an toàn và hữu ích. SLO 500 ms sẽ chỉ sinh tiếng ồn.\n\nKhớp SLO với khả năng hỗ trợ. Đội nhỏ nên ưu tiên vài mục tiêu đạt được hơn nhiều mục tiêu khắt khe. Nếu không ai có thể phản hồi trong vòng một giờ, đừng đặt mục tiêu giả định họ có thể.\n\n## Làm cho các đánh đổi hiển nhiên: chi phí, rủi ro và ngân sách lỗi\n\nSLO chặt hơn nghe an tâm, nhưng có giá. Nếu bạn nâng từ 99.5% lên 99.9%, bạn cũng đang nói “chúng ta chấp nhận ít phút xấu hơn nhiều”, điều này thường nghĩa là nhiều page hơn và nhiều thời gian dành cho độ tin cậy thay vì tính năng mới.\n\nCách đơn giản nhất để cụ thể hóa là nói bằng ngân sách lỗi. Với mục tiêu 99.5% hàng tháng, bạn “tiêu” được khoảng 3.6 giờ downtime trong tháng 30 ngày. Với 99.9%, bạn chỉ có khoảng 43 phút. Sự khác biệt đó thay đổi tần suất bạn sẽ dừng công việc tính năng để sửa độ tin cậy.\n\nCũng hữu ích khi khớp kỳ vọng vào thời điểm người ta thực sự dùng công cụ. Mục tiêu 24/7 đắt nếu công cụ chỉ quan trọng 9h–18h. Bạn có thể đặt một SLO cho giờ làm (khắt khe hơn) và một SLO lỏng hơn ngoài giờ (ít page hơn) để đội được ngủ yên.\n\nBảo trì có kế hoạch không nên tính là thất bại miễn là nó được thông báo và giới hạn. Xử lý nó như ngoại lệ rõ ràng (cửa sổ bảo trì) thay vì bỏ qua cảnh báo sau sự kiện.\n\nGhi ra những điều cơ bản để mọi người thấy đánh đổi:\n\n- Con số SLO và người dùng mất gì khi không đạt\n- Ngân sách lỗi hàng tháng (tính bằng phút hoặc giờ)\n- Quy tắc paging (ai, khi nào, và vì điều gì)\n- Kỳ vọng giờ làm vs 24/7, nếu khác nhau\n- Cái gì được tính là bảo trì có kế hoạch\n\nSau 4–6 tuần dữ liệu thực, xem lại mục tiêu. Nếu bạn chưa bao giờ tiêu ngân sách lỗi, SLO có thể quá lỏng. Nếu bạn tiêu nhanh và tính năng bị trì hoãn, có lẽ nó quá chặt.\n\n## Ánh xạ SLO tới cảnh báo mà đội có thể duy trì\n\nCảnh báo không phải là SLO. Cảnh báo là tín hiệu “hiện có chuyện đang sai” bảo vệ SLO. Một quy tắc đơn giản: cho mỗi SLO, tạo một cảnh báo quan trọng, và kháng cự việc thêm nữa trừ khi bạn có bằng chứng chúng giảm downtime.\n\nCách tiếp cận thực tế là cảnh báo khi ngân sách lỗi bị tiêu nhanh (tốc độ tiêu) hoặc trên một ngưỡng rõ ràng khớp với nỗi đau người dùng. Nếu SLO độ trễ của bạn là “p95 dưới 800 ms”, đừng page vì mọi nhịp chậm. Chỉ page khi nó kéo dài.\n\nMột phân chia đơn giản giúp giảm tiếng ồn:\n\n- Page khẩn cấp: công cụ về cơ bản hỏng, ai đó phải hành động ngay.\n- Ticket không khẩn: có sự suy giảm, nhưng có thể chờ giờ làm để xử lý.\n\nNgưỡng cụ thể (điều chỉnh theo lưu lượng): nếu SLO uptime là 99.5% hàng tháng, page khi availability giảm dưới 99% trong 10 phút (sự cố rõ ràng). Tạo ticket khi nó giảm dưới 99.4% trong 6 giờ (tiêu dần). Với latency, page khi p95 trên 1.5 s trong 15 phút; ticket khi p95 trên 1.0 s trong 2 giờ.\n\nLàm rõ quyền sở hữu. Quyết định ai on-call (dù chỉ là “một người tuần này”), xác nhận nghĩa là gì (ví dụ trong 10 phút), và hành động đầu tiên là gì. Với đội nhỏ chạy app nội bộ trên AppMaster, hành động đầu tiên có thể là: kiểm tra deploy gần nhất, xem lỗi API, rồi rollback hoặc redeploy nếu cần.\n\nSau mỗi cảnh báo thực, làm một việc nhỏ theo sau: sửa nguyên nhân hoặc tinh chỉnh cảnh báo để nó ít page hơn nhưng vẫn bắt được tác động người dùng thật.\n\n## Sai lầm phổ biến gây mệt mỏi vì cảnh báo\n\nMệt mỏi vì cảnh báo thường bắt nguồn từ ý định tốt. Một đội nhỏ thêm “một vài” cảnh báo, rồi mỗi tuần thêm một cái nữa. Chẳng mấy chốc, người ta ngừng tin thông báo, và sự cố thật bị bỏ lỡ.\n\nMột cái bẫy lớn là cảnh báo trên mọi nhảy số. Công cụ nội bộ thường có lưu lượng dồn cục (chạy bảng lương, báo cáo cuối tháng). Nếu cảnh báo bật trên nhấp nháy 2 phút, đội học cách phớt lờ. Gắn cảnh báo với tín hiệu tác động người dùng, không phải nhiễu metric thô.\n\nCái bẫy khác là nghĩ “nhiều metric = an toàn hơn.” Thường nó có nghĩa nhiều page hơn. Giữ tập tín hiệu nhỏ mà người dùng cảm nhận: đăng nhập lỗi, trang tải quá chậm, job quan trọng không hoàn thành.\n\nNhững sai lầm hay tạo tiếng ồn nhất:\n\n- Page theo triệu chứng (CPU, memory) thay vì tác động người dùng (lỗi, latency)\n- Không có chủ sở hữu cho cảnh báo, nên nó không bao giờ được tinh chỉnh hoặc gỡ bỏ\n- Không có runbook, nên mỗi cảnh báo thành trò đoán mò\n- Dùng dashboard thay cho cảnh báo (dashboard để nhìn, cảnh báo để hành động)\n- Tạo ngưỡng vì hệ thống thiếu instrumentation\n\nDashboard vẫn quan trọng, nhưng giúp bạn chẩn đoán sau khi cảnh báo bật, không thay thế cảnh báo.\n\nNếu bạn chưa có phép đo sạch, đừng giả vờ có. Thêm instrumentation cơ bản trước (tỷ lệ thành công, p95 latency, và kiểm tra “người dùng có hoàn thành tác vụ” ), rồi đặt ngưỡng dựa trên một đến hai tuần dữ liệu thực.\n\n## Kiểm tra nhanh trước khi bật cảnh báo\n\nTrước khi bật cảnh báo, làm một tiền kiểm ngắn. Hầu hết mệt mỏi vì cảnh báo đến từ việc bỏ qua một trong những điều cơ bản này, rồi cố sửa sau khi áp lực.\n\nChecklist thực tế cho đội nhỏ:\n\n- Xác nhận 1–3 hành động người dùng chính (ví dụ: mở dashboard, lưu cập nhật ticket, xuất báo cáo).\n- Giữ 2–4 SLI bạn có thể đo hôm nay (availability/tỷ lệ thành công, p95 latency, tỷ lệ lỗi cho endpoint quan trọng).\n- Giới hạn 2–4 cảnh báo tổng cho công cụ.\n- Đồng ý cửa sổ đo, bao gồm định nghĩa “xấu” (5 phút gần nhất để phát hiện nhanh, hoặc 30–60 phút để giảm nhiễu).\n- Chỉ định một chủ sở hữu (một người, không phải “đội”).\n\nTiếp theo, đảm bảo cảnh báo có thể hành động được. Một cảnh báo bật khi không ai có thể làm gì sẽ huấn luyện mọi người phớt lờ nó.\n\nQuyết định các chi tiết vận hành này trước page đầu tiên:\n\n- Giờ paging: chỉ giờ làm hay thật sự 24/7\n- Đường leo thang: ai tiếp theo nếu người đầu không trả lời\n- Làm gì trước: một hai bước để xác nhận tác động và rollback hoặc giảm thiểu\n- Thói quen rà soát hàng tháng đơn giản: 15 phút để nhìn các cảnh báo đã bật, các sự cố bị bỏ sót, và xem SLO còn phù hợp hay không\n\nNếu bạn xây hoặc thay đổi công cụ (kể cả trong AppMaster), chạy lại checklist. Mã tái sinh và luồng mới có thể thay đổi latency và mẫu lỗi, và cảnh báo nên theo kịp.\n\n## Ví dụ: một dashboard ops nhỏ với hai SLO và ba cảnh báo\n\nMột đội ops 18 người dùng một dashboard nội bộ cả ngày để kiểm tra trạng thái đơn hàng, gửi lại thông báo thất bại, và phê duyệt hoàn tiền. Nếu nó sập hoặc chậm, công việc dừng ngay.\n\nHọ chọn hai SLO:\n\n- SLO Uptime: 99.9% tải trang thành công trong 30 ngày (khoảng 43 phút “thời gian xấu” mỗi tháng)\n- SLO Latency: p95 thời gian tải trang dưới 1.5 giây trong giờ làm việc\n\nRồi họ thêm ba cảnh báo mà đội nhỏ có thể xử lý:\n\n- Hard down alert (tải trang thất bại): kích hoạt nếu tỷ lệ thành công giảm xuống dưới 98% trong 5 phút. Hành động đầu: kiểm tra deploy gần nhất, khởi động lại web app, xác nhận sức khỏe database.\n- Slow dashboard alert: kích hoạt nếu p95 latency trên 2.5 giây trong 10 phút. Hành động đầu: tìm truy vấn chậm hoặc job nền kẹt, rồi tạm dừng báo cáo nặng.\n- Error budget burn alert: kích hoạt nếu họ có xu hướng dùng 50% ngân sách lỗi hàng tháng trong 7 ngày tới. Hành động đầu: dừng các thay đổi không thiết yếu cho tới khi ổn định.\n\nĐiều quan trọng là việc diễn ra vào tuần sau. Nếu cảnh báo ngân sách lỗi bật hai lần, đội đưa ra quyết định rõ ràng: hoãn một tính năng mới và dành hai ngày sửa nguyên nhân độ trễ lớn (ví dụ, một table quét không có index). Nếu họ xây công cụ bằng AppMaster, họ có thể điều chỉnh mô hình dữ liệu, tái sinh và redeploy mã sạch thay vì chồng các sửa tạm.\n\n## Giữ SLO sống mà không biến nó thành một dự án\n\nSLO chỉ giúp khi chúng được nối với công việc thực tế. Bí quyết là coi chúng như một thói quen nhỏ, không phải chương trình mới.\n\nDùng chu kỳ phù hợp với đội nhỏ và gắn vào cuộc họp hiện có. Liếc qua hàng tuần giúp phát hiện trôi dần, và điều chỉnh hàng tháng là đủ khi bạn có dữ liệu thực.\n\nMột quy trình nhẹ nhưng bền:\n\n- Hàng tuần (10 phút): kiểm tra biểu đồ SLO và vài cảnh báo gần nhất, xác nhận không có điều gì lặng lẽ tệ hơn.\n- Sau bất kỳ sự cố nào (15 phút): gắn tag nguyên nhân và ghi hành động người dùng bị ảnh hưởng (đăng nhập, tìm kiếm, lưu, xuất).\n- Hàng tháng (30 phút): xem mẫu sự cố lặp lại hàng đầu và chọn một sửa cho tháng tới.\n- Hàng tháng (10 phút): gỡ hoặc tinh chỉnh một cảnh báo ồn.\n\nGiữ cải tiến nhỏ và dễ thấy. Nếu “trang chậm mỗi sáng thứ Hai” xuất hiện ba lần, làm một thay đổi cụ thể (cache một báo cáo, thêm index, lên lịch job nặng vào giờ khác), rồi quan sát SLI tuần sau.\n\nDùng SLO để nói không, một cách lịch sự và rõ ràng. Khi có yêu cầu tính năng ít giá trị, trỏ tới ngân sách lỗi hiện tại và hỏi: “Thay đổi này có làm rủi ro luồng lưu hoặc phê duyệt không?” Nếu bạn đã dùng ngân sách, độ tin cậy thắng. Đó không phải chặn, đó là ưu tiên.\n\nGiữ tài liệu tối giản: một trang cho mỗi công cụ. Bao gồm các hành động người dùng chính, con số SLO, vài cảnh báo gắn với chúng, và chủ sở hữu. Nếu công cụ xây trên AppMaster, thêm nơi xem logs/metrics và ai có thể deploy thay đổi, rồi dừng lại.\n\n## Bước tiếp theo: bắt đầu nhỏ, rồi cải thiện từng công cụ\n\nCách dễ nhất để làm độ tin cậy trở nên thực tế là giữ cài đặt đầu tiên thật nhỏ. Chọn một công cụ nội bộ gây đau thực khi hỏng (bàn giao on-call, phê duyệt đơn hàng, hoàn tiền, sửa tồn kho), và đặt mục tiêu quanh vài hành động người ta làm mỗi ngày.\n\nMột cấu hình nhỏ nhất khả dụng mà hầu hết đội có thể sao chép:\n\n- Chọn 1 công cụ và 2 hành động người dùng chính (ví dụ: Mở dashboard và Gửi phê duyệt).\n- Định nghĩa 2 SLI bạn có thể đo ngay: uptime cho endpoint/page, và p95 latency cho hành động.\n- Đặt 2 SLO đơn giản (ví dụ: 99.5% uptime hàng tháng, p95 dưới 800 ms trong giờ làm).\n- Tạo 2–3 cảnh báo tổng: một cho hard down, một cho latency kéo dài, và một cho tiêu nhanh ngân sách lỗi.\n- Rà soát hàng tuần 10 phút: cảnh báo hữu ích hay chỉ gây nhiễu?\n\nKhi đó ổn định, mở rộng chậm: thêm một hành động nữa, hoặc một công cụ mỗi tháng. Nếu bạn không thể nói ai sẽ chịu trách nhiệm một cảnh báo, đừng tạo nó.\n\nNếu bạn đang xây hoặc tái xây công cụ nội bộ, AppMaster có thể làm cho phần duy trì dễ trụ hơn. Bạn có thể cập nhật mô hình dữ liệu và business logic trực quan rồi tái sinh mã sạch khi nhu cầu đổi, giúp SLO luôn khớp với chức năng thực tế của công cụ ngày nay.\n\nThử xây một công cụ nội bộ và thêm SLO cơ bản từ ngày đầu. Bạn sẽ có kỳ vọng rõ ràng hơn, ít bất ngờ hơn, và cảnh báo mà đội nhỏ của bạn có thể bám theo.

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

Công cụ nội bộ có thật sự cần SLO nếu chỉ một nhóm nhỏ dùng?

SLO kết thúc các tranh luận về độ tin cậy bằng cách biến “tỉ lệ ổn định” thành mục tiêu rõ ràng có thể đo lường. Ngay cả với 20 người dùng, một sự cố vẫn có thể làm tạm dừng đơn hàng, làm chậm hỗ trợ hoặc chặn phê duyệt, nên công cụ nhỏ vẫn có thể gây ảnh hưởng lớn.

Chúng ta nên đo cái gì trước cho một admin panel hoặc dashboard vận hành?

Chọn vài hành động người dùng mà mọi người làm hằng ngày và sẽ chặn công việc khi lỗi. Những điểm khởi đầu phổ biến: đăng nhập, tải dashboard chính với dữ liệu mới, tìm/lọc và gửi form tạo/cập nhật thành công.

Sự khác nhau giữa SLI, SLO và SLA là gì?

SLI là chỉ số bạn đo (như tỷ lệ thành công hoặc p95 latency). SLO là mục tiêu cho chỉ số đó (ví dụ: 99.5% thành công trong 30 ngày). SLA là cam kết chính thức có hậu quả, và hầu hết công cụ nội bộ không cần SLA.

Một SLO uptime thực tế cho nhóm nhỏ là bao nhiêu?

Một SLO uptime khởi điểm hợp lý cho nhiều công cụ nội bộ là 99.5% theo tháng, vì nó khả thi mà không cần làm phép anh hùng liên tục. Nếu công cụ thật sự quan trọng trong giờ làm việc, bạn có thể thắt chặt sau khi có dữ liệu thực tế.

Làm sao chuyển đổi phần trăm uptime thành thời gian downtime mà mọi người dễ hiểu?

Dịch tỉ lệ uptime thành phút để mọi người hiểu được đánh đổi. Trong tháng 30 ngày, 99.5% cho phép khoảng 216 phút downtime, còn 99.9% cho phép khoảng 43 phút, điều này thường nghĩa là nhiều cảnh báo và nhiều công việc độ tin cậy hơn.

Chúng ta nên đặt SLO latency thế nào mà không sinh ra tiếng ồn?

Dùng một phân vị như p95, không dùng trung bình, vì trung bình che đi những lần chậm mà người dùng nhớ. Đặt mục tiêu trên một hành động thực tế (ví dụ: “p95 tải dashboard dưới 2s trong giờ làm việc”) và chọn ngưỡng bạn có thể duy trì bình tĩnh.

Những SLI nào dễ đo nhất mà không cần hệ thống giám sát lớn?

Bắt đầu với các số liệu server và logs bạn đã có: khả dụng (có truy cập và phản hồi), tỷ lệ thành công cho hành động chính, và p95 latency cho một hai endpoint hoặc màn hình quan trọng. Thêm kiểm tra tổng hợp chỉ cho các luồng quan trọng nhất để đo lường nhất quán và đơn giản.

Chúng ta nên thiết lập bao nhiêu cảnh báo cho một công cụ nội bộ?

Mặc định chỉ vài cảnh báo liên quan đến tác động người dùng, và chỉ gọi trực tiếp (page) khi vấn đề kéo dài. Một chia tách hữu ích là: một page khẩn cấp cho “công cụ về cơ bản hỏng” và một ticket không khẩn cho “suy giảm chậm” xử lý trong giờ làm.

Nguyên nhân gây cảnh báo mệt mỏi với công cụ nội bộ là gì, và làm sao tránh?

Phần lớn cảnh báo gây mệt mỏi đến từ việc page trên mọi đột biến hoặc trên các triệu chứng như CPU thay vì tác động người dùng như lỗi và latency. Giữ cảnh báo ít, mỗi cảnh báo có chủ sở hữu, và sau mỗi cảnh báo thực tế, hoặc sửa nguyên nhân hoặc điều chỉnh cảnh báo để nó bớt báo sai nhưng vẫn bắt được vấn đề thật.

Làm thế nào áp dụng SLO nếu chúng tôi xây công cụ nội bộ bằng AppMaster?

Chọn các hành động chính trong app, rồi đo uptime, tỷ lệ thành công và p95 latency cho các hành động đó dùng một nguồn chân lý nhất quán. Nếu bạn xây trong AppMaster, tập trung mục tiêu vào những gì người dùng thực sự làm (đăng nhập, lưu, tìm kiếm), và điều chỉnh đo lường cùng cảnh báo sau các thay đổi lớn hoặc khi tái sinh mã để đảm bảo chúng phản ánh hành vi hiện tại.

Dễ dàng bắt đầu
Tạo thứ gì đó tuyệt vời

Thử nghiệm với AppMaster với gói miễn phí.
Khi bạn sẵn sàng, bạn có thể chọn đăng ký phù hợp.

Bắt đầu