Từ DevOps đến DevSecOps

0 0 0

Người đăng: Thái Thịnh

Theo Viblo Asia

Gần đây, tôi đã có cơ hội tham dự sự kiện PSU Cybersecurity and Data Privacy Days 2. Một trong những phiên trình bày gây ấn tượng mạnh với tôi là "Tăng tốc hiện đại hóa ứng dụng với nền tảng Nutanix AI" do anh Surak Thammarak từ Nutanix (Thailand) Ltd trình bày.

Trong bài nói chuyện, anh Surak đã trình chiếu một slide mô tả về "Xưởng phần mềm – DevSecOps với GitOps". Một câu hỏi lập tức xuất hiện trong đầu tôi:

Chúng ta thường nghe đến “DevOps”, nhưng “DevSecOps” là gì? Chữ “Sec” thêm vào có ý nghĩa gì?

Chính câu hỏi nhỏ đó đã đưa tôi vào một hành trình học hỏi. Tôi quyết định đào sâu vào chủ đề này và viết blog này để chia sẻ những gì tôi đã khám phá – một cách đơn giản và dễ hiểu nhất về DevSecOps.

DevOps là gì?

Trước khi nói đến DevSecOps, hãy nói nhanh về DevOps. Trong nhiều năm, đội ngũ viết mã (Developers) và đội ngũ vận hành (Operations) hoạt động riêng biệt. Điều này thường khiến quy trình phát triển trở nên chậm chạp.

DevOps ra đời để thay đổi điều đó. Đây là một văn hóa và tập hợp các thực hành giúp hai đội ngũ trên làm việc cùng nhau. Mục tiêu rất rõ ràng: rút ngắn vòng đời phát triển và phân phối phần mềm chất lượng cao nhanh hơn, ổn định hơn.

Hãy tưởng tượng bạn biến một quy trình cồng kềnh, nhiều công đoạn thành một dây chuyền tự động mượt mà.

Xây dựng nhanh hơn, tốt hơn và an toàn hơn: Hướng dẫn về DevSecOps

Giờ hãy trở lại chủ đề chính: DevSecOps lấy những ý tưởng tuyệt vời của DevOps – tốc độ và tự động hóa – và bổ sung một yếu tố quan trọng: Bảo mật (Security).

Thay vì kiểm tra bảo mật ở cuối quy trình (tốn thời gian và chi phí), DevSecOps tích hợp bảo mật vào mọi bước.

Hãy hình dung như một nhà máy thông minh và tự động sản xuất phần mềm, nơi các nhân viên bảo vệ (bảo mật) có mặt ở mọi công đoạn chứ không chỉ đứng gác ở cổng ra.

Hai nhân vật chính: Lập trình viên và Kỹ sư vận hành

Câu chuyện xoay quanh hai vai trò chính:

  • Lập trình viên (Developer): Viết mã để tạo ra các tính năng bạn sử dụng trong ứng dụng.
  • Kỹ sư vận hành (IT Operator): Đảm bảo ứng dụng chạy mượt mà cho tất cả người dùng (gọi là môi trường "production").

DevSecOps sử dụng quy trình tự động để kết nối liền mạch giữa hai công việc này.

Phần 1: Giai đoạn “Xây dựng” (Continuous Integration)

Ngay khi lập trình viên viết mã mới và lưu lại (gọi là một “commit”), một chuỗi quy trình tự động bắt đầu diễn ra phía sau hậu trường.

  • Kiểm tra mã (với SonarQube): Một công cụ như “chuyên gia kiểm duyệt” lập tức quét đoạn mã vừa commit. Nó kiểm tra lỗi, lỗ hổng bảo mật và các vấn đề về chất lượng. Đây là chốt bảo mật đầu tiên, giúp phát hiện lỗi sớm.
  • Xây dựng và đóng gói (App Build, Image Build): Mã được biên dịch và đóng gói vào một container sẵn sàng để chạy – giống như bạn chuẩn bị nguyên liệu cho một bữa ăn và bỏ vào một hộp kín có kèm hướng dẫn.
  • Lưu trữ container (với Harbor): Container được lưu vào một kho bảo mật gọi là repository. Đây là bản phần mềm chính thức sẵn sàng để triển khai.
  • Quét bảo mật lần cuối: Trước khi chuyển tiếp, container được quét bảo mật thêm lần nữa để đảm bảo không có mã độc hay lỗ hổng nào bị bỏ sót.
  • Giám sát liên tục (với Grafana): Một công cụ giám sát luôn theo dõi toàn bộ quy trình. Nếu có sự cố, nó báo ngay cho đội ngũ xử lý.

Toàn bộ quy trình này gọi là Tích hợp liên tục (CI – Continuous Integration).

Phần 2: Giai đoạn “Phát hành” (Continuous Deployment với GitOps)

Khi phần mềm đã sẵn sàng và vượt qua kiểm tra, đến lúc phân phối đến người dùng. Giai đoạn này sử dụng GitOps – nghĩa là mọi thao tác triển khai đều quản lý thông qua mã trong kho lưu trữ Git.

  • Thao tác của kỹ sư vận hành (Commit): IT Operator chỉ cần chỉnh sửa nhẹ trong file cấu hình – ví dụ cập nhật phiên bản từ 1.0 lên 1.1.
  • Công cụ giám sát thay đổi (với Flux): Một công cụ đặc biệt (Flux) luôn theo dõi file cấu hình. Ngay khi thấy thay đổi, nó sẽ tự động kích hoạt quy trình triển khai.
  • Triển khai tự động (với Kubernetes): Flux lấy gói phần mềm mới và tự động triển khai lên môi trường thực tế (production) bằng hệ thống Kubernetes.
  • Kiểm tra cuối cùng (E2E Test): Ngay cả sau khi phát hành, các bài kiểm tra tự động vẫn chạy để đảm bảo mọi thứ hoạt động đúng từ góc nhìn người dùng.

Quy trình phát hành này gọi là Triển khai liên tục (CD – Continuous Deployment).

Tại sao tất cả điều này lại quan trọng?

Cách tiếp cận DevSecOps – như trình bày trong bài nói chuyện – là một sự thay đổi lớn:

  • Tốc độ: Ý tưởng mới đến tay người dùng chỉ sau vài giờ hoặc vài ngày, không còn phải chờ vài tháng.
  • Bảo mật: Với bảo mật được tích hợp ở mọi bước (chính là phần “Sec” trong DevSecOps), ứng dụng an toàn ngay từ đầu.
  • Độ tin cậy: Tự động hóa giúp giảm sai sót do con người, từ đó ít lỗi hơn, ít downtime hơn.

Kết luận

Sự tò mò về một từ đơn giản trên slide đã dẫn tôi đến việc khám phá ra một triết lý hoàn toàn mới trong việc xây dựng phần mềm.

Nó không chỉ là “nhanh”, mà là nhanh và an toàn.

Bình luận

Bài viết tương tự

- vừa được xem lúc

The Twelve-Factor App, cẩm nang gối đầu giường trong xây dựng application (Phần 1)

Giới thiệu. Ngày nay các phần mềm được triển khai dưới dạng các dịch vụ, chúng được gọi là các web apps hay software-as-a-service (SaaS).

0 0 46

- vừa được xem lúc

8 Sai lầm phổ biến khi lập trình Android

1. Hard code.

0 0 207

- vừa được xem lúc

Popular interview question: What is the difference between Process and Thread? 10 seconds a day

Video được đăng tại channel Tips Javascript

0 0 44

- vừa được xem lúc

Thuật toán và ứng dụng - P1

Mục đích series. . Những bài toán gắn liền với thực tế. Từ đó thấy được tầm quan trọng của thuật toán trong lập trình.

0 0 47

- vừa được xem lúc

Tác dụng của Docker trong quá trình học tập

Docker bây giờ gần như là kiến thức bắt buộc đối với các anh em Dev và Devops, nhưng mà đối với sinh viên IT nói chung vẫn còn khá mơ hồ và không biết tác dụng thực tế của nó. Hôm nay mình sẽ chia sẻ

0 0 53

- vừa được xem lúc

Làm giàu trong ngành IT

Hầu như mọi người đều đi làm để kiếm tiền, ít người đi làm vì thấy cái nghề đó thú vị lắm. Bây giờ vất cho mình 100 tỷ bảo mình bỏ nghề thì mình cũng bỏ thôi.

0 0 57