DevOps trong một cái nhìn tổng quan – Thực chất DevOps là gì?
Thuật ngữ “DevOps” được Patrick Debois đưa ra vào năm 2007, dùng để chỉ việc kết hợp Phát triển (Development) và Vận hành (Operations), mở rộng triết lý Agile nhằm nâng cao toàn bộ quy trình phân phối phần mềm.
Dù đã hơn một thập kỷ trôi qua, nhưng đến nay các tổ chức vẫn có những quan điểm khác nhau về DevOps. Vì thế, chúng tôi đã hỏi ý kiến một số chuyên gia DevOps để lắng nghe chia sẻ của họ. Hy vọng sau bài viết này, chúng ta có thể làm rõ khái niệm này.
DevOps là gì?
“Kể từ khi DevOps trở thành một từ khóa thịnh hành, đã có rất nhiều sự mơ hồ xung quanh nó. Bất kể các hiểu lầm, DevOps là bất kỳ tập hợp các thực hành, công cụ, quy trình và con người liên quan đến chúng nhằm cải thiện khả năng của doanh nghiệp trong việc phản ứng với môi trường luôn thay đổi. Đó có thể là văn hóa tổ chức, sử dụng công cụ cụ thể, hay thậm chí những kỹ sư DevOps thường bị tranh cãi – miễn là đảm bảo khả năng đó. Nếu một tổ chức có thể triển khai thường xuyên, cung cấp tính năng mới nhanh chóng và khôi phục nhanh khi gặp sự cố, tức là họ đang làm DevOps đúng cách.”
— Krzysztof Szabelski, Head of Technology tại startnearshoring.com
DevOps là sự pha trộn giữa văn hóa, phát triển, vận hành và công cụ, nhằm nâng cao năng lực của tổ chức trong việc tạo ra ứng dụng/dịch vụ với tốc độ cao: phát triển và cải tiến sản phẩm nhanh hơn nhiều so với quy trình phát triển phần mềm và quản lý hạ tầng truyền thống. Nhờ tốc độ này, doanh nghiệp có thể phục vụ khách hàng tốt hơn và cạnh tranh hiệu quả hơn.
Trong mô hình DevOps, các đội Phát triển và Vận hành không còn “đóng silo” riêng rẽ. Thay vào đó, họ hợp thành một nhóm chung, nơi kỹ sư tham gia vào toàn bộ vòng đời ứng dụng – từ phát triển, kiểm thử, triển khai đến vận hành – đồng thời phát triển bộ kỹ năng đa dạng, không giới hạn trong một vai trò.
Trong một số mô hình, QA và Security cũng được gắn kết chặt chẽ hơn với Dev và Ops, tham gia xuyên suốt vòng đời ứng dụng. Khi cả nhóm cùng tập trung vào bảo mật, khái niệm này được gọi là DevSecOps.
“Những nhóm này áp dụng best practice để tự động hóa các quy trình vốn trước đây thủ công và chậm chạp. Họ dùng bộ công cụ và công nghệ cho phép phát triển, vận hành ứng dụng nhanh và hiệu quả. Các công cụ đó còn giúp kỹ sư tự chủ trong việc triển khai code hoặc cung cấp hạ tầng – những việc trước đây cần đến sự hỗ trợ từ đội khác – nhờ đó tăng tốc độ toàn nhóm.”
— Timothy Robinson, CEO tại InVPN
Tại sao DevOps quan trọng?
Dev cần có những công cụ cho phép Ops tắt/bật hoặc giảm tính năng khi lưu lượng tăng đột biến hoặc xảy ra sự cố. Ngoài ra, việc bật chế độ chỉ-đọc (read-only) cho một phần lớn ứng dụng cũng giúp đảm bảo tính sẵn sàng khi gặp tình huống khẩn cấp.
Để hỗ trợ triển khai linh hoạt và liên tục, kỹ sư Ops cần phối hợp chặt chẽ với Dev. Hai bên phải xây dựng niềm tin và quy trình hiệu quả, có thể lặp lại, để duy trì tốc độ và độ ổn định.
“Mọi lập trình viên đều nên có quyền truy cập vào hệ thống metrics và monitoring, để họ hiểu rõ code của mình ảnh hưởng thế nào đến thời gian phản hồi và việc sử dụng tài nguyên máy chủ. Việc cho phép dùng tài khoản không đặc quyền (non-root) cả trên server production giúp họ có thể ‘ngó’ vào khi cần thiết, từ đó tăng tính sở hữu và trách nhiệm chung.”
— Jason Mitchell, CTO tại Smart Billions
DevOps không phải là gì?
Cũng như nhiều phương pháp phát triển phần mềm khác, DevOps cũng có những ngộ nhận thường gặp:
-
DevOps chỉ là văn hóa: Thực tế, DevOps gồm nguyên tắc, thực hành, phương pháp và công cụ giúp tổ chức:
- vận hành với tốc độ cao,
- tăng tần suất phát hành,
- đảm bảo chất lượng cập nhật,
- quản lý hạ tầng ở quy mô lớn,
- xây dựng đội ngũ hiệu quả hơn,
- vừa nhanh chóng vừa duy trì kiểm soát và tuân thủ.
-
DevOps chỉ là công cụ: Công cụ quan trọng, nhưng không phải tất cả. Tự động hóa mà không có tầm nhìn đúng có thể gây hại, trong khi áp dụng theo nguyên tắc đúng sẽ mang lại lợi ích lớn.
-
DevOps chỉ là Dev và Ops: Dù tên gọi chỉ ra hai nhóm này, nhưng thực tế DevOps liên quan đến tất cả: bảo mật, quản trị mạng, QA, kinh doanh…
-
DevOps sẽ thay thế công việc của Ops: Ngược lại, DevOps yêu cầu Ops và Dev đều học thêm kỹ năng mới. Đây là sự cộng tác, không phải “một nhóm nuốt chửng nhóm khác.”
Khi nào DevOps trở thành “xu hướng”?
Trước đây, quản lý phát hành (release management) thường là công việc bị bỏ quên, “ai xui thì phải làm.” Code lỗi thường xuyên xuất hiện, QA mất cả ngày vì build không chạy.
Ngày nay, những công ty như Netflix có thể triển khai hàng trăm lần mỗi ngày.
“Một số nhóm biết cách tổ chức release tốt hơn nhóm khác, nhưng vẫn rất nhiều công sức. DevOps ra đời để cải thiện tất cả những điều đó.”
— David Moise, Chủ tịch Decide Consulting
Nhờ Patrick Debois, John Allspaw và Paul Hammond – những người nhấn mạnh tầm quan trọng của truyền thông và hợp tác giữa Dev và Ops – chúng ta mới có DevOps như hiện nay.
DevOps hoạt động thế nào?
DevOps tập trung vào Continuous Integration (CI) – tích hợp liên tục. Code được lưu trữ trong một kho trung tâm, và Dev liên tục merge công việc vào đó. Mỗi thay đổi đều được build và kiểm thử tự động, giúp phát hiện lỗi sớm, tránh đưa bug vào môi trường thật.
Điều này đảm bảo luôn có một phiên bản code sẵn sàng để triển khai, giúp fix bug hoặc cập nhật tính năng nhanh chóng, không gián đoạn dịch vụ.
Dev còn có thể điều khiển hạ tầng ngay từ trong code: như quản lý cấu hình mạng, firewall, backup… Những hành động này được tự động hóa, giúp Dev có thêm quyền kiểm soát hạ tầng.
“DevOps tập trung nhiều vào sự hợp tác, nên các phòng ban trong tổ chức thường chia sẻ workflow và nhiệm vụ, từ đó đảm bảo hợp tác nhanh chóng và triển khai liên tục. DevOps cũng tập trung nhiều vào giám sát hiệu năng ứng dụng, nên logging và chẩn đoán trực tiếp là yếu tố then chốt.” — Graeme Messina, IT Professional tại Infosec
DevOps, DevSecOps, Agile, SRE & các khái niệm liên quan
- DevOps vs Automation: DevOps là sự giao thoa giữa Dev và Ops. Nhiều hoạt động trong đó có thể được tự động hóa. Automation là khái niệm rộng hơn, áp dụng ở nhiều cấp độ, không chỉ trong DevOps.
- DevOps vs Agile: Agile tập trung vào phương pháp phát triển; DevOps tập trung vào công cụ & quy trình triển khai nhanh. Chúng bổ trợ cho nhau.
- DevOps vs SRE (Site Reliability Engineering): SRE có thể coi là cách triển khai DevOps, nhấn mạnh trách nhiệm vận hành sản phẩm và giám sát.
- DevOps vs SysOps: SysOps tập trung vào việc quản lý hệ thống trơn tru, DevOps tập trung vào tốc độ và tự động hóa.
- DevOps vs DevSecOps: DevSecOps là DevOps + Security. Không thay thế mà bổ sung.
Lợi ích của DevOps
Tổ chức triển khai DevOps đúng cách có thể nhận được:
- Tỷ lệ thất bại thấp hơn khi phát hành,
- Thời gian khôi phục nhanh hơn khi có sự cố,
- Chu kỳ fix bug ngắn hơn,
- Tần suất triển khai cao hơn,
- Rút ngắn time-to-market,
- Khách hàng hài lòng hơn,
- Chất lượng sản phẩm tốt hơn,
- Năng suất và hiệu quả tăng,
- Khả năng thử nghiệm nhanh để xây dựng đúng sản phẩm.
“Là một công ty phần mềm đáng tin cậy, chúng tôi áp dụng DevOps theo 4 bước: Plan – Develop – Deliver – Operate. Plan: xác định tính năng, theo dõi bug, backlog, Scrum, dashboard. Develop: code, test, review, tích hợp. Deliver: triển khai theo quy trình release với bước duyệt thủ công. Operate: sau triển khai, tập trung giám sát, bảo trì, xử lý sự cố để đảm bảo ổn định.” — Kapil Panchal, iFour Technolab
DevOps ngày nay
Nghiên cứu cho thấy 74% công ty đã áp dụng DevOps ở một mức nào đó. Không chỉ các “ông lớn” như Netflix, Facebook, Amazon, mà cả công ty vừa và nhỏ cũng hưởng lợi từ DevOps. Tốc độ, độ ổn định và tính sẵn sàng của phần mềm trực tiếp ảnh hưởng đến hiệu quả tổ chức (lợi nhuận, năng suất, sự hài lòng khách hàng).
Nguồn
Bài viết gốc: DevOps in a Nutshell – What Is DevOps, Really? – Bunnyshell.
All rights reserved