9 điểm bởi whatsup 2024-08-14 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp

Thử rút ngắn thời gian deploy với Github Actions?

Đây là bài viết chia sẻ về nhiều cách đã được thử để rút ngắn thời gian deploy bằng Github Actions, cùng kinh nghiệm xử lý các vấn đề phát sinh trong quá trình đó.

  • Khi thời gian deploy ngày càng dài, điều này bắt đầu gây ảnh hưởng xấu đến tốc độ phát triển và năng suất của cả nhóm
  • Bài viết giải thích cách thực hiện nhiều cải tiến như chuyển quy trình deploy sang xử lý song song và đưa vào cơ chế kích hoạt build có chọn lọc để giải quyết vấn đề

Tình huống vấn đề

  • Thời gian deploy bằng Github Actions dần tăng lên, với thời gian deploy trung bình đạt 27 phút
  • Bắt đầu ảnh hưởng đến năng suất phát triển
  • Frontend, Intro và Backend được build và deploy tuần tự; theo thời gian, cách deploy này trở nên kém hiệu quả và làm thời gian deploy tăng lên

Các cải tiến chính

  • Áp dụng xử lý song song
    • Tách các tác vụ deploy Frontend và Backend vốn chạy tuần tự thành chạy song song, rút ngắn thời gian deploy từ 27 phút xuống 18 phút.
    • Trong quá trình này cũng tiến hành mô-đun hóa mã Github Workflow
  • Áp dụng cơ chế kích hoạt build có chọn lọc
    • Đã dùng path-filter để chỉ build phần thay đổi, nhưng phát hiện tình huống gây vấn đề khi rollback
    • Thay vì dùng cách path-filter, bài viết cung cấp các tùy chọn trong Workflow để lập trình viên có thể chọn đối tượng deploy
  • Chiến lược sử dụng Docker Image Tag
    • Tái sử dụng Docker Image để rút ngắn thời gian deploy từ 18 phút xuống 15 phút.
  • Xử lý song song ở bước Deploy
    • Tách nhỏ để có thể xử lý song song cả ở giai đoạn Deploy, giúp tiếp tục rút ngắn thời gian deploy
  • Tách riêng Intro
    • Tách việc build trang intro khỏi build dịch vụ ở frontend để tối đa hóa hiệu quả deploy.

Kết quả

  • Thời gian deploy giảm 55% (27 phút -> 12 phút)
  • Có thể rút ngắn tối đa 70% thời gian, giảm chi phí hạ tầng và cải thiện năng suất phát triển sản phẩm.
  • Lợi ích bổ sung
    • Mô-đun hóa Workflow giúp tăng khả năng tái sử dụng và dễ bảo trì hơn
    • Rút ngắn thời gian xử lý sự cố, tăng độ ổn định của hệ thống

Chưa có bình luận nào.

Chưa có bình luận nào.