DevOps không phải là cầu nối giữa Dev và Ops? DevOps là người buộc hai bên chịu trách nhiệm chung

Không biết bài này có nhận gạch đá không nhưng thực lòng rất muốn mọi người thực sự hiểu để giúp hệ thống có người chịu trách nhiệm đúng hơn.

Ngay từ lúc tìm hiểu DevOps anh em mình (đương nhiên có tôi) đã rất dễ gặp câu DevOps là cầu nối giữa Dev và Ops. Mới đầu nghe thực sự rất thuận tại vậy câu này đến từ đâu? Từ định nghĩa tiếng Việt dễ thấy. Nhưng càng làm lâu, va vấp production nhiều, tôi thấy câu này… sai bản chất.

ad672e5b-4122-4766-8ac4-fece7e40bd5e

DevOps không phải người đứng giữa để chuyển lời. DevOps là người buộc Dev và Ops cùng chịu trách nhiệm cho cùng một hệ thống.

Tôi không chắc ở nước ngoài hầu hết có vậy không, nhưng định nghĩa theo wiki nguyên văn là “DevOps is a set of practices that combines software development (Dev) and IT operations (Ops). It aims to shorten the systems development life cycle and provide continuous delivery with high software quality.”

Đây chính xác là điều được nhắc tới về việc DevOps là một mô hình vận hành buộc hai bên cùng chịu trách nhiệm chung. Còn theo nhiều tài liệu Việt Nam dễ hiểu lầm thành cầu nối theo nghĩa trung gian, DevOps = bridge giữa Dev và Ops là chưa đủ và dễ gây sai lệch.

Và rõ ràng như vậy thì DevOps sớm muộn cũng biến thành người gánh hết.

Cầu nối là vai trò rất dễ chết

Khi DevOps bị xem là cầu nối, câu chuyện quen thuộc sẽ là:

  • Dev bảo: Code em chạy local ok
  • Ops bảo: Server bên anh ổn
  • DevOps đứng giữa, debug, fix, deploy, rollback, on-call

Cuối cùng khi production sập:

  • Dev nói chắc do hạ tầng
  • Ops nói chắc do code
  • DevOps thành người chịu trách nhiệm… vì đứng giữa

Đó không phải DevOps. Đó là buffer cho sự thiếu ownership của cả hai bên.

DevOps đúng nghĩa là người xóa ranh giới trách nhiệm

Tôi nghĩ rằng DevOps “xịn” không hỏi:

  • Lỗi này của Dev hay của Ops?

Mà hỏi:

  • Hệ thống này ai chịu trách nhiệm end-to-end?

Khi Dev push code:

  • Dev phải hiểu code đó chạy trong môi trường nào
  • Dev phải đọc được metric cơ bản của service mình
  • Dev phải biết rollback logic nghiệp vụ nếu cần

Khi Ops vận hành:

  • Ops phải hiểu behavior của app
  • Ops không được coi app là black box
  • Ops phải biết đọc log, trace, và dependency của service

DevOps không nối hai bên lại. DevOps đập bỏ bức tường ngăn giữa hai bên.

Viết mấy câu từ này thấy thật điên khi dễ làm m.n hiểu lầm. Nhưng theo tôi bản chất đúng là vậy.

DevOps không giúp Dev deploy mà DevOps giúp Dev hiểu trách nhiệm deploy

Một dấu hiệu rất rõ của DevOps “chưa xịn” là:

  • Dev viết code
  • DevOps deploy
  • Dev ngủ
  • DevOps on-call

DevOps “xịn” theo tôi sẽ làm ngược lại:

  • Dev tự deploy
  • Dev tự theo dõi service của mình
  • Dev tham gia on-call rotation
  • Dev viết runbook cho service họ tạo ra

DevOps chỉ xây nền tảng, guardrail, pipeline, policy. Ownership vẫn phải nằm ở Dev.

Nếu Dev không chịu trách nhiệm trực tiếp khi production gặp vấn đề, hệ thống sẽ khổ mãi. Giống hệt bản chất trong cuộc sống “cái gì của mình thì mình mới xót“.

Không có DevOps culture nếu không có quyền từ chối

DevOps không có quyền từ chối deploy = DevOps không có quyền enforce trách nhiệm.

Ví dụ rất thực:

  • Code chưa có metric
  • Không có alert
  • Không có rollback plan
  • Không có runbook
  • Không test staging đủ điều kiện

Nếu DevOps vẫn deploy cho kịp deadline thì:

  • Dev học được rằng cứ push đi sẽ có người lo
  • Ops học được rằng đằng nào DevOps cũng xử lý
  • DevOps học được rằng… mình là người gánh

3 năm liền từng trải qua thật sự buốt óc (chắc do tôi kém – rất kém).

DevOps thực sự phải dám nói: Code này chưa đủ điều kiện để vào production.

Không phải để làm khó, mà để buộc trách nhiệm quay về đúng chỗ.

DevOps không phải role đó là cách tổ chức trách nhiệm

Một tổ chức có DevOps culture thật sẽ có những dấu hiệu rất rõ:

  • Incident là của team, không phải của cá nhân
  • Postmortem không tìm người chịu tội, mà tìm lỗ hổng trách nhiệm
  • Dev hiểu hệ thống vận hành, không chỉ code
  • Ops hiểu ứng dụng, không chỉ server
  • DevOps không phải hotline 24/7 cho mọi vấn đề

Ngược lại, nơi nào:

  • DevOps bị gọi cho mọi thứ
  • Dev không đọc metric
  • Ops không hiểu app
  • Mọi việc đều “nhờ DevOps xem hộ”

=> nơi đó chưa từng có DevOps, chỉ có Ops đội thêm trách nhiệm.

Kết

Gọi DevOps là “cầu nối” nghe rất dễ chịu, nhưng nó làm lệch bản chất vấn đề với wiki Việt Nam thật sự với tôi khiến rất nhiều người hiểu lầm về cụm từ này.

DevOps không tồn tại để kết nối hai bên. DevOps tồn tại để buộc cả hai bên cùng chịu trách nhiệm cho cùng một hệ thống.

Khi trách nhiệm rõ:

  • Sự cố giảm
  • Chất lượng tăng
  • Dev trưởng thành
  • Ops bớt bị động
  • DevOps thoát khỏi vai trò người gánh hộ

Và đó mới là lúc DevOps thật sự phát huy giá trị.

Thông tin nổi bật

Sự kiện phát trực tiếp​

Event Thumbnail

Báo cáo quan trọng

Article Thumbnail
Article Thumbnail
Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận

Tiêu điểm chuyên gia