CICD - OCG's Challenging Products (P7)

CICD - OCG's Challenging Products (P7)
CICD | Image Source

Fully automated CICD

Khi nói đến "Fully Automated CI/CD" (Continuous Integration/Continuous Deployment hoàn toàn tự động), chúng ta đang nhìn vào một quy trình tự động hóa đầy đủ từ khâu tích hợp mã nguồn (CI) đến khâu triển khai (CD), mà không cần sự can thiệp của con người.

Quá trình đó bao gồm:

  • Continuous Integration (CI)
    • Tích Hợp Mã Nguồn Tự Động: Mỗi khi có sự thay đổi trong mã nguồn (commits), hệ thống CI tự động tích hợp mã nguồn từ các nhánh khác nhau. Điều này giúp đảm bảo rằng mã mới không xung đột với mã hiện có.
    • Kiểm Thử Tự Động: Sau khi tích hợp mã, hệ thống thực hiện các bài kiểm thử tự động để đảm bảo rằng mã mới không làm hỏng chức năng hiện tại. Các bài kiểm thử này có thể bao gồm kiểm tra đơn vị, kiểm tra tích hợp và kiểm tra hệ thống.
    • Báo Cáo Tự Động: Kết quả kiểm thử và trạng thái tích hợp được báo cáo tự động, cung cấp thông tin chi tiết về tình trạng của mã nguồn. Điều này giúp các nhà phát triển dễ dàng xác định các vấn đề và khắc phục chúng.
  • Continuous Deployment (CD)
    • Triển Khai Tự Động: Nếu quá trình tích hợp thành công, hệ thống CD tự động triển khai mã nguồn lên môi trường thử nghiệm hoặc sản xuất mà không cần sự can thiệp của người quản trị. Điều này giúp giảm thiểu thời gian cần thiết để đưa các tính năng mới ra thị trường.
    • Quản Lý Phiên Bản: Hệ thống theo dõi và quản lý các phiên bản, giúp dễ dàng quay lại phiên bản trước đó nếu có vấn đề phát sinh. Điều này giúp đảm bảo tính ổn định của hệ thống.
    • Rollback Tự Động: Trong trường hợp xấu nhất, nếu có sự cố, quá trình triển khai tự động có thể được đảo ngược để quay về phiên bản trước đó. Điều này giúp giảm thiểu thời gian ngừng hoạt động của hệ thống.

OCG đang release sản phẩm của mình theo các chu kỳ khoảng 2 - 4 tuần/lần. Mỗi quá trình này đòi hỏi rất nhiều công từ việc build, deploy các services, test features…

OCG đang hướng tới việc xây dựng hệ thống CICD tự động hóa nhằm giảm thiểu tối đa công sức của product team và time-to-market của các features. Điều này sẽ giúp OCG:

  • Tăng tốc độ phát triển sản phẩm
  • Giảm thiểu lỗi
  • Tăng tính ổn định của hệ thống
  • Tiết kiệm chi phí

Hệ thống này đòi hỏi Devops team phải làm việc rất sâu sát với product team, trong đó có QE (Quality Engineer) team để quản lý được kết quả chạy test (kiểm thử) feature và toàn bộ sản phẩm, quản lý các phiên bản và có đầy đủ công cụ monitor hệ thống, performance, log, alert…

Để xây dựng thành công hệ thống CICD tự động hóa, OCG cần:

  • Chuẩn hóa quy trình phát triển sản phẩm
  • Xây dựng các công cụ và quy trình tự động hóa
  • Tập huấn cho các kỹ sư

OCG tin rằng việc xây dựng hệ thống CICD tự động hóa sẽ giúp OCG nâng cao năng lực cạnh tranh và mang lại trải nghiệm tốt hơn cho người dùng.