Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Deploy, release, launch — ba việc khác nhau, và ai chịu trách nhiệm việc nào

Đã đọc 0/7 mục · còn khoảng 5 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Vì sao "ra mắt" hay hỏng ở chỗ không ai ngờ

Hỏi một đội phần mềm "khi nào ra mắt?", bạn sẽ nhận ba câu trả lời khác nhau từ ba người. Kỹ sư nghĩ đến lúc code lên production. Tech lead nghĩ đến lúc tính năng được bật cho người dùng. Marketing nghĩ đến lúc thông báo được gửi đi. Cả ba đều dùng chữ "ra mắt", và cả ba đều đúng theo cách của mình — đó chính là vấn đề.

Phần lớn sự cố của một lần ra mắt không nằm ở code. Chúng nằm ở khe hở giữa ba việc này: code đã lên nhưng support chưa biết, tính năng đã bật nhưng không ai đo, thông báo đã gửi nhưng tính năng mới chỉ bật cho 5% người dùng. Khoá học này bắt đầu bằng việc tách ba việc đó ra, vì không tách được thì không giao trách nhiệm được.

Ba việc, ba câu hỏi

ViệcĐịnh nghĩaCâu hỏi nó trả lờiAi sở hữu thường gặp
DeployĐưa code lên môi trường productionCode có chạy ổn trên hạ tầng thật không?Tech lead, DevOps
ReleaseBật tính năng cho một nhóm người dùngNgười dùng thật có dùng được và hệ thống có chịu được không?PM cùng tech lead
LaunchLàm cho thị trường biết và có lý do để dùngKhách hàng có biết, có hiểu, có thử không?PM, cùng marketing, sales, support
Điểm quan trọng: ba việc này nên xảy ra vào ba thời điểm khác nhau. Deploy có thể diễn ra hàng ngày, sau một feature flag đang tắt. Release diễn ra theo nấc: nhân viên nội bộ, 5% người dùng, 25%, rồi tất cả. Launch là một quyết định kinh doanh, có thể đến vài tuần sau khi release xong.

Khi ba việc dính vào nhau thành "đêm ra mắt", bạn đặt cược mọi thứ vào một thời điểm: nếu có lỗi, lỗi đó đến với toàn bộ khách hàng, đúng lúc họ vừa đọc thông báo và đang tò mò nhất.

Ví dụ xuyên suốt khoá học: Sạp Số (giả định)

Để các bài sau cụ thể, ta theo một công ty giả định từ đầu đến cuối.

Sạp Số là ứng dụng cho chủ tiệm tạp hoá đặt hàng từ nhà phân phối. Khoảng 28.000 tiệm đang dùng mỗi tháng, chủ yếu ở TP.HCM, Bình Dương và Cần Thơ. Doanh thu đến từ phí trên mỗi đơn mà nhà phân phối trả.

Tính năng sắp ra mắt: "Nhập hàng nhanh". Ứng dụng nhìn lịch sử đơn của tiệm, gợi ý danh sách hàng sắp hết, và cho chủ tiệm đặt cả giỏ bằng một lần bấm. Giả thuyết: tiệm đặt đều đặn hơn, giá trị mỗi đơn tăng, và ít bỏ giữa chừng.

Những người bạn sẽ gặp lại trong các bài sau:

  • Linh — PM, sở hữu "Nhập hàng nhanh"
  • Quân — tech lead
  • Hà — QA lead
  • Thảo — trưởng nhóm chăm sóc khách hàng
  • Tuấn — phụ trách quan hệ nhà phân phối
  • Phong — data analyst
  • anh Sơn — CEO, người ra quyết định go/no-go cho lần ra mắt hạng 1

Ba việc này áp vào Sạp Số thế nào

ViệcỞ Sạp SốThời điểm
DeployCode gợi ý và nút "đặt cả giỏ" lên production, sau flag quick_reorder đang tắtLiên tục trong 6 tuần phát triển
ReleaseBật flag cho 40 tiệm thân quen, rồi 5%, 25%, 100% tiệm ở TP.HCM, rồi các tỉnhTuần 7 đến tuần 10
LaunchThông báo trong app, tin nhắn Zalo OA, nhân viên thị trường giới thiệu tận tiệmTuần 11, khi số liệu rollout đã ổn
Lưu ý thứ tự: Linh không gửi thông báo trước khi tính năng bật cho 100%. Gửi trước nghĩa là 95% người đọc thông báo mở app ra và không thấy gì — họ gọi tổng đài, và Thảo nhận 400 cuộc gọi trong buổi sáng.

Ai chịu trách nhiệm việc nào — và vì sao PM phải giữ phần giữa

Một lỗi phổ biến là coi release là việc kỹ thuật thuần tuý. Thực ra release là chỗ hai thế giới gặp nhau: quyết định "bật cho bao nhiêu người, khi nào dừng" cần cả hiểu biết hệ thống (Quân) và hiểu biết người dùng và kinh doanh (Linh). Nếu để tech lead quyết một mình, tiêu chí dừng sẽ chỉ là lỗi kỹ thuật; nếu để PM quyết một mình, tiêu chí dừng sẽ bỏ qua tải hệ thống.

Một cách chia rõ ràng dùng mô hình RACI đơn giản:

Quyết địnhChịu trách nhiệm (làm)Quyết định cuốiĐược hỏi ý kiếnĐược báo
Deploy khi nàoKỹ sưTech leadQAPM
Bật nấc rollout tiếp theoTech leadPMData, supportLãnh đạo
RollbackNgười trựcTech lead hoặc PM (ai thấy tín hiệu trước)—Mọi người
Ngày launch, thông điệpMarketingPMSales, supportToàn công ty
Go/no-go cho hạng 1PM chuẩn bịLãnh đạo có tênCác trưởng nhómToàn công ty
Chú ý dòng rollback: ai thấy tín hiệu trước thì được quyền tắt. Lý do là tắt một feature flag rẻ và đảo ngược được, còn chờ họp để tắt thì đắt. Bài 6 sẽ đi sâu vào tiêu chí rollback bằng số.

Những gì một lần ra mắt cần ngoài code

Các đội kỹ thuật giỏi thường chuẩn bị rất kỹ phần code và quên năm mảng còn lại:

  • Support — kịch bản trả lời, cách nhận diện lỗi, đường báo lên kỹ thuật
  • Sales hoặc đội thị trường — câu giới thiệu một câu, câu trả lời cho ba phản đối thường gặp
  • Tài liệu — hướng dẫn trong app, trang câu hỏi thường gặp
  • Pháp lý và đối tác — điều khoản, thông báo cho đối tác bị ảnh hưởng (ở Sạp Số là nhà phân phối)
  • Analytics — sự kiện đã được đo chưa, dashboard đã có chưa, mục tiêu đã chốt chưa
Mỗi mảng này sẽ có một bài riêng. Điều cần nhớ lúc này: một lần ra mắt là việc của cả công ty, và PM là người giữ bức tranh tổng.

Làm ngay

Chọn một tính năng bạn sắp ra mắt (hoặc vừa ra mắt). Viết ra ba dòng:

  • Deploy: code lên production khi nào, sau flag nào, ai quyết?
  • Release: bật cho ai trước, theo những nấc nào, ai quyết bật nấc tiếp?
  • Launch: thông báo qua kênh nào, vào ngày nào, sau điều kiện gì?
Nếu ba dòng đó có cùng một ngày, hãy viết thêm dòng thứ tư: điều gì xảy ra nếu có lỗi nghiêm trọng vào đúng ngày đó, với toàn bộ khách hàng đang nhìn. Mang bốn dòng này đến buổi họp kế tiếp với tech lead và hỏi: chúng ta có tách được ba ngày này ra không?

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi