Menu
ESC

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

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

Đang tải...

Bài 41 — Scrum and DevOps

Advanced Scrum Master PSM II Bài 41/60

Mở đầu — vì sao bài này quan trọng

Có một hiểu lầm rất phổ biến mà mình gặp đi gặp lại ở các Scrum Master Việt Nam: họ nghĩ rằng Scrum là chuyện của "process và con người", còn DevOps là chuyện của "kỹ thuật và hạ tầng", hai thứ này thuộc về hai thế giới khác nhau. Vì nghĩ vậy, nhiều Scrum Master né tránh DevOps, coi đó là "việc của dev và ops, không phải việc của mình".

Đây là một sai lầm lớn ở cấp độ PSM II.

Sự thật là Scrum và DevOps không phải hai thứ song song, mà là hai mặt của cùng một tư duy: cả hai đều dựa trên empiricism (thực nghiệm), cả hai đều theo đuổi vòng phản hồi nhanh (fast feedback), cả hai đều làm việc với batch nhỏ và đều xây chất lượng vào sản phẩm ngay từ đầu thay vì kiểm tra ở cuối. Một team Scrum không có năng lực DevOps thường vẫn nói "Done" trong Sprint Review nhưng phải đợi hai tuần mới release được — nghĩa là cái "Done" đó là giả. Ngược lại, một tổ chức đầu tư DevOps mạnh nhưng vẫn lập kế hoạch theo kiểu thác nước thì chỉ là "giao hàng rác nhanh hơn".

Ở vai trò Scrum Master nâng cao, bạn cần hiểu DevOps đủ sâu để nhận ra: phần lớn những impediment làm chậm team — không thể release thường xuyên, sợ deploy, môi trường test không ổn định, Definition of Done bị "rút ruột" — đều có gốc rễ kỹ thuật mà DevOps giải quyết. Bài này giúp bạn nối hai thế giới đó lại, để bạn coach team đạt được mục tiêu thật sự của Scrum: tạo ra một Increment có thể release được (releasable) ở cuối mỗi Sprint.

Khái niệm cốt lõi

DevOps thực ra là gì

DevOps không phải là một công cụ, cũng không phải là một chức danh "DevOps Engineer". Về bản chất, DevOps là một văn hóa và tập hợp thực hành nhằm rút ngắn vòng đời từ lúc một ý tưởng được viết thành code cho đến lúc nó chạy trên production và tạo giá trị cho người dùng, đồng thời giữ hệ thống ổn định. Nó phá vỡ bức tường ngăn cách giữa Development (xây dựng) và Operations (vận hành).

Các trụ cột thực hành thường gặp:

  • CI (Continuous Integration) — tích hợp code liên tục, mỗi lần commit là tự động build và chạy test, phát hiện lỗi sớm.
  • CD (Continuous Delivery/Deployment) — đưa code đã qua kiểm thử lên các môi trường một cách tự động, sẵn sàng release bất cứ lúc nào.
  • Infrastructure as Code (IaC) — hạ tầng được mô tả bằng code, tái tạo môi trường giống hệt nhau, hết cảnh "máy tôi chạy được mà".
  • Automated Testing — kiểm thử tự động ở nhiều tầng (unit, integration, end-to-end) làm lưới an toàn cho thay đổi.
  • Monitoring & Observability — quan sát hệ thống trên production, biết ngay khi có gì hỏng.

Bốn điểm DevOps và Scrum gặp nhau

Một, cả hai đều empirical. Scrum dựa trên ba trụ cột transparency, inspection, adaptation. DevOps cũng vậy: monitoring và logging chính là "inspection" ở tầng vận hành, còn việc tự động rollback hay hotfix nhanh chính là "adaptation". Một team không có observability thì Scrum Master không bao giờ có dữ liệu thật để minh bạch hóa trong Sprint Review — họ chỉ đoán.

Hai, cả hai đều ưu tiên batch nhỏ. Scrum chia công việc thành các Product Backlog Item nhỏ, giao trong một Sprint ngắn. DevOps đẩy nguyên tắc này xuống tầng release: thay vì gom hàng trăm thay đổi vào một bản release khổng lồ mỗi quý (rủi ro cao, khó tìm lỗi), ta release thường xuyên với batch nhỏ. Batch nhỏ = rủi ro nhỏ = phản hồi nhanh hơn. Đây chính là Lean thinking áp dụng vào dòng chảy giá trị.

Ba, cả hai đều build-in quality. Trong Scrum, chất lượng nằm trong Definition of Done. DevOps biến DoD đó thành hiện thực có thể kiểm chứng được: nếu DoD nói "đã test, đã tích hợp, có thể release", thì CI/CD pipeline là cơ chế tự động ép buộc điều đó xảy ra mỗi lần, không phụ thuộc vào việc ai đó nhớ hay không.

Bốn, DevOps tooling cho phép Scrum thật sự hoạt động. Đây là điểm mấu chốt mà mình muốn bạn khắc cốt ghi tâm. Scrum yêu cầu một "Done Increment" mỗi Sprint — một sản phẩm có thể release được. Nếu không có CI/CD, "có thể release được" chỉ là lời nói. DevOps là thứ biến lý thuyết Scrum thành thực tế vận hành được.

Vai trò của Scrum Master ở giao điểm này

Bạn không cần trở thành kỹ sư DevOps. Nhưng bạn cần:

  • Coach team đưa các năng lực kỹ thuật (test tự động, pipeline) vào Definition of Done.
  • Nhìn ra các impediment mang tính kỹ thuật/tổ chức cản trở việc release thường xuyên, và đưa chúng lên đúng người để gỡ.
  • Giúp Product Owner và stakeholder hiểu vì sao đầu tư vào DevOps không phải "chi phí kỹ thuật" mà là đầu tư vào khả năng giao giá trị.

Tình huống thực tế

Ví dụ 1 — Fintech ở TP.HCM: "Done" giả và bức tường release

Một công ty fintech khoảng 120 người ở Quận 1, sản phẩm là ví điện tử. Team Scrum của họ chạy Sprint hai tuần khá kỷ luật, demo đều, velocity ổn định khoảng 40 điểm/Sprint. Nhưng có một nghịch lý: mọi PBI trong Sprint Review đều được tuyên bố "Done", thế nhưng người dùng phải đợi trung bình 6 tuần mới thấy tính năng mới xuất hiện trên app.

Khi mình ngồi với team, nguyên nhân lộ ra: "Done" của họ chỉ có nghĩa "code xong, dev tự test trên máy". Sau đó code phải đi qua một quy trình release thủ công — QA test tay 3 ngày, một bạn senior deploy bằng tay vào cuối tuần (vì sợ giờ hành chính), và mọi thứ gom vào một bản release lớn mỗi 6 tuần. Mỗi lần release là một đêm thức trắng, tỷ lệ rollback khoảng 1/3.

Scrum Master nhận ra đây không phải vấn đề "team lười" mà là một impediment hệ thống: thiếu CI/CD. Cô làm ba việc. Thứ nhất, đưa con số lên bàn Sprint Review — minh bạch hóa khoảng cách 6 tuần giữa "Done" và "released" trước mặt stakeholder, dùng chính dữ liệu đó để xin nguồn lực. Thứ hai, làm việc với PO để đưa "tự động deploy lên môi trường staging" và "có integration test chạy trong pipeline" vào Definition of Done mới. Thứ ba, dành 20% capacity mỗi Sprint trong 4 Sprint để team dựng pipeline CI/CD cơ bản.

Sau 3 tháng, thời gian từ "Done" đến production giảm từ 6 tuần xuống 3 ngày, tỷ lệ rollback giảm còn dưới 5%.

Bài học: Một "Done" mà không release được là "Done" giả. Scrum Master ở cấp PSM II phải nhìn ra rằng cái impediment lớn nhất nhiều khi nằm ở năng lực kỹ thuật DevOps, không phải ở quy trình họp hành.

Ví dụ 2 — Công ty thương mại điện tử ở Singapore: batch lớn giết tốc độ

Một công ty e-commerce khu vực Đông Nam Á, trụ sở Singapore, có 5 team Scrum. Họ deploy lên production đúng một lần mỗi tháng, vào "release weekend". Mỗi release gom thay đổi của cả 5 team — hàng trăm commit. Kết quả quen thuộc: mỗi release là một sự kiện căng thẳng, khi có lỗi thì không ai biết lỗi đến từ thay đổi nào trong hàng trăm thay đổi, debug mất nhiều ngày.

Khi đo lại theo bộ chỉ số DORA (Deployment Frequency, Lead Time, Change Failure Rate, Mean Time to Restore), họ thuộc nhóm "low performer": deploy hàng tháng, lead time hàng tuần, tỷ lệ thất bại khi đổi gần 40%.

Scrum Master cùng nhóm kỹ thuật chuyển hướng theo nguyên lý batch nhỏ của DevOps: tách pipeline cho từng team, áp dụng feature flag để code có thể lên production mà tính năng vẫn ẩn cho đến khi sẵn sàng bật, và chuyển từ "release weekend hàng tháng" sang deploy nhiều lần mỗi tuần. Quan trọng là họ không "làm một phát lớn" — chính họ áp dụng tư duy batch nhỏ vào cả quá trình chuyển đổi.

Sau hai quý, deployment frequency tăng từ mỗi tháng lên trung bình 8 lần/tuần, change failure rate giảm xuống dưới 15%. Vì mỗi lần deploy chỉ chứa một ít thay đổi, khi có sự cố thì khoanh vùng và sửa cực nhanh.

Bài học: Batch lớn không làm bạn an toàn hơn, nó làm bạn rủi ro hơn. Đây là điểm trực giác hay đánh lừa stakeholder ("release ít lần cho chắc"). Scrum Master cần dùng dữ liệu để chứng minh điều ngược lại.

Ví dụ 3 — Startup SaaS ở Hà Nội: DevOps mạnh nhưng Scrum yếu

Để cân bằng, mình kể một ví dụ ngược. Một startup SaaS khoảng 25 người ở Hà Nội có văn hóa kỹ thuật rất tốt: CI/CD xịn, deploy mỗi ngày nhiều lần, monitoring đầy đủ. Nghe có vẻ lý tưởng. Nhưng họ vẫn "giao rác nhanh hơn": dev nhận task rời rạc từ founder qua chat, không có Sprint Goal, không có refinement, không ai hỏi "thứ này có đáng làm không". Họ ship rất nhanh những thứ không ai cần.

Scrum Master mới vào đã không động vào pipeline (vốn đã tốt) mà tập trung vào phần Scrum đang thiếu: thiết lập Sprint Goal rõ ràng, đưa Product Owner vào để ưu tiên backlog theo giá trị, và dùng chính năng lực deploy nhanh sẵn có để rút ngắn vòng phản hồi với người dùng thật — đẩy thử nghiệm nhỏ ra production rồi đo bằng metric.

Bài học: DevOps là điều kiện cần nhưng chưa đủ. Tốc độ giao hàng cao mà không có định hướng giá trị thì chỉ là lãng phí với tốc độ cao. Scrum (định hướng giá trị, empirical) và DevOps (năng lực giao hàng) phải đi cùng nhau.

Hướng dẫn từng bước

Đây là cách mình khuyên một Scrum Master tiếp cận để nối Scrum với DevOps trong team của mình.

Bước 1 — Đo độ thật của chữ "Done". Hỏi một câu đơn giản: từ lúc một item được tuyên bố Done đến lúc nó chạy trên production cho người dùng thật, mất bao lâu? Nếu con số đó là vài tuần, bạn vừa tìm ra impediment lớn nhất. Minh bạch hóa nó.

Bước 2 — Tăng cường Definition of Done bằng năng lực DevOps. Cùng team rà lại DoD. Một DoD "trưởng thành" thường gồm: code đã qua automated test, đã tích hợp vào nhánh chính qua CI, đã tự động deploy lên môi trường giống production, và về nguyên tắc có thể release. Đừng áp đặt — hãy để team tự cam kết và nâng dần.

Bước 3 — Đưa công việc kỹ thuật vào Product Backlog một cách minh bạch. Việc dựng pipeline, viết test tự động, làm IaC là công việc thật, cần được nhìn thấy. Coach Product Owner hiểu rằng đây là đầu tư vào khả năng giao giá trị bền vững, không phải "chi phí ẩn".

Bước 4 — Chọn vài chỉ số dòng chảy để soi sức khỏe. Bốn chỉ số DORA là điểm khởi đầu tốt: Deployment Frequency, Lead Time for Changes, Change Failure Rate, Mean Time to Restore. Dùng chúng làm tấm gương cho team trong Retrospective, không phải làm cây gậy để đánh giá cá nhân.

Bước 5 — Cải tiến từng bước qua Retrospective. Mỗi Sprint chọn một nút thắt trong dòng chảy để cải thiện: hôm nay là test tự động cho một module, Sprint sau là tự động hóa một bước deploy thủ công. Áp dụng đúng tư duy batch nhỏ vào chính hành trình DevOps.

Bước 6 — Kết nối với cấp tổ chức khi cần. Nhiều impediment DevOps vượt khỏi một team (quyền truy cập môi trường, chính sách bảo mật, ngân sách hạ tầng). Đây là lúc Scrum Master làm việc với managers và lãnh đạo để gỡ ở cấp hệ thống.

Lỗi thường gặp & mẹo

Lỗi 1 — Coi DevOps là việc của một phòng ban riêng. Khi tổ chức lập một "team DevOps" tách biệt rồi quăng việc qua lại, bạn chỉ vừa dựng lại đúng cái bức tường mà DevOps sinh ra để phá. Mẹo: hướng tới năng lực DevOps nằm trong chính team Scrum, hoặc một team nền tảng (platform team) phục vụ chứ không gác cổng.

Lỗi 2 — Để "Done" và "Released" là hai thế giới. Đây là cái bẫy kinh điển. Mẹo: luôn dùng câu hỏi "nếu Product Owner muốn release ngay bây giờ, có làm được không?" làm thước đo độ thật của Increment.

Lỗi 3 — Scrum Master né tránh chủ đề kỹ thuật. Bạn không cần code, nhưng nếu không hiểu nổi tại sao team không release được thì bạn không thể coach gỡ impediment. Mẹo: học đủ để hỏi câu hỏi đúng và nhận diện nút thắt — đó là kỹ năng coaching, không phải kỹ năng lập trình.

Lỗi 4 — Đẩy DevOps theo kiểu big-bang. Mỉa mai là nhiều tổ chức "chuyển đổi DevOps" bằng một dự án khổng lồ kéo dài cả năm — vi phạm chính nguyên lý batch nhỏ. Mẹo: cải thiện một bước trong pipeline mỗi Sprint, đo, học, lặp lại.

Lỗi 5 — Đo metric DevOps để so sánh và phạt người. Khi DORA biến thành KPI cá nhân, người ta sẽ "chơi" con số. Mẹo: dùng metric như tín hiệu cho team tự cải tiến, đặt trong bối cảnh, không bao giờ tách rời để xếp hạng.

Bài tập thực hành

  • Đo "Done-to-Production". Trong team hiện tại của bạn, đo thời gian trung bình từ lúc một PBI được tuyên bố Done đến khi nó chạy trên production. Viết con số ra giấy. Nếu lớn hơn vài ngày, liệt kê 3 nguyên nhân chính.
  • Soi Definition of Done. Lấy DoD hiện tại của team và đánh dấu: tiêu chí nào đã được tự động kiểm chứng bằng pipeline, tiêu chí nào còn phụ thuộc thao tác/ý chí thủ công của con người. Đề xuất một tiêu chí kỹ thuật để thêm vào trong Sprint tới.
  • Bản đồ value stream rút gọn. Vẽ các bước từ "commit code" đến "chạy trên production". Đánh dấu bước nào tự động, bước nào thủ công, bước nào hay phải chờ. Khoanh tròn nút thắt lớn nhất và mang vào Retrospective gần nhất như một mục cải tiến.
  • Tự đánh giá DORA. Ước lượng 4 chỉ số DORA cho team bạn (deploy bao lâu một lần, lead time, tỷ lệ thất bại, thời gian khôi phục). Bạn đang ở nhóm low, medium hay high performer? Chọn một chỉ số để cải thiện trong quý này.
  • Tình huống coaching. Product Owner nói: "Chúng ta không có thời gian cho việc tự động hóa test, phải giao tính năng cho khách." Hãy viết ra 3 câu hỏi mạnh (powerful questions) mà bạn sẽ dùng để giúp PO tự nhận ra cái giá của việc bỏ qua chất lượng kỹ thuật, thay vì tranh cãi với họ.

Tóm tắt

Scrum và DevOps không phải hai thế giới tách rời mà là hai mặt của cùng một triết lý: thực nghiệm, phản hồi nhanh, batch nhỏ, và chất lượng được xây vào từ đầu. Scrum đặt ra yêu cầu — một Increment có thể release được mỗi Sprint; DevOps cung cấp năng lực kỹ thuật để biến yêu cầu đó thành hiện thực thay vì khẩu hiệu.

Ở vai trò Scrum Master cấp PSM II, bạn không cần là kỹ sư DevOps, nhưng bạn phải hiểu đủ sâu để nhận ra rằng khoảng cách giữa "Done" và "Released" thường là impediment lớn nhất của team, rằng batch lớn làm tăng rủi ro chứ không giảm, và rằng đầu tư vào CI/CD, test tự động, observability là đầu tư vào khả năng giao giá trị. Đồng thời, đừng quên bài học từ startup Hà Nội: DevOps mạnh mà thiếu định hướng giá trị thì chỉ là lãng phí nhanh hơn.

Hãy bắt đầu nhỏ: đo độ thật của chữ "Done", nâng dần Definition of Done bằng năng lực kỹ thuật, và cải tiến một nút thắt mỗi Sprint. Đó chính là cách một servant leader giúp team mình không chỉ "làm Scrum" mà thực sự giao được giá trị ra thế giới.