0

Blacksmith | Tăng tốc độ và tiết kiệm chi phí hơn so với runner của GitHub Action

Mở đầu

Nếu bạn từng làm việc với GitHub Actions, hẳn đã quen với sự tiện lợi của việc chỉ cần vài dòng YAML là có thể test, build, thậm chí cho đến deploy dự án một cách tự động và dễ dàng. Tuy nhiên, có một vấn đề mà nhiều nhóm phát triển (trong đó có cả team mình) đều gặp phải đó là thời gian chạy workflow ngày càng dài thì chi phí ngày càng tốn kém. Gần đây, mình thấy có nhiều thông tin, các bài blog mới nói về Blacksmith - một dịch vụ cung cấp runner được quảng cáo là nhanh hơn, rẻ hơn và dễ tích hợp. Sau một vài thử nghiệm thực tế mình khá bất ngờ với kết quả nên quyết định viết bài blog này để chia sẻ lại với các bạn - những ai đang quan tâm đến việc tối ưu CI/CD pipeline.

Runner trong GitHub Actions là gì?

Trong GitHub Actions, runner là nơi thực thi các tác vụ (job) trong workflow của bạn. GitHub cung cấp sẵn các máy ảo gọi là GitHub-hosted runner để chạy workflow. Mỗi máy ảo này được GitHub lưu trữ, quản lý, đồng thời cài sẵn một môi trường làm việc hoàn chỉnh bao gồm các package, thiết lập phổ biến mà bạn có thể sử dụng ngay trong workflow ví dụ như Git, Node.js, Python, Docker, vv ... Nói đơn giản, mỗi khi workflow của bạn chạy thì GitHub sẽ khởi tạo một máy ảo mới, thực thi các bước mà bạn định nghĩa trong file YAML rồi tự động dọn dẹp mọi thứ sau khi hoàn tất. Tham khảo tài liệu: https://docs.github.com/en/actions/concepts/runners

Blacksmith là gì?

Blacksmith là dịch vụ cung cấp runner thay thế cho runner của GitHub. Bạn chỉ cần trỏ workflow sang runner của họ để tận hưởng hiệu năng cao hơn với chi phí thấp hơn. Tất cả những gì bạn phải làm chỉ là sửa lại dòng runs-on trong file YAM bằng một runner có cấu hình tương đương của Blacksmith. Ví dụ:

- runs-on: ubuntu-latest
+ runs-on: blacksmith-4vcpu-ubuntu-2404

Theo tài liệu mà Blacksmith cung cấp thì:

  • Chi phí chỉ bằng một nửa so với runner tương đương của GitHub.
  • Hiệu năng phần cứng mạnh gấp đôi.
  • Cache tốc độ cao, nhanh hơn tới 4 lần.
  • Build Docker nhanh hơn từ 2x đến 40x. 🫣 Cái này nghe whoa thật đó!

image.png

Tuy nhiên tại thời điểm hiện tại thì Blacksmith chỉ đang hỗ trợ các runner trên Ubuntu 22.04 và Ubuntu 24.04. Nếu bạn cần runner cho macOS hoặc Windows thì tạm thời vẫn phải chờ thêm. https://docs.blacksmith.sh/blacksmith-runners/overview#runner-tags

Trải nghiệm thực tế

Với những gì được quảng cáo ấn tượng như vậy thì mình đã áp dụng thử. Trước đây, toàn bộ workflow của dự án chạy trên runner mặc định ubuntu-24.04 của GitHub. Pipeline bao gồm các bước quen thuộc: cài đặt dependency, build, chạy unit test và deploy. Thời gian trung bình cho mỗi lần chạy khoảng 10 phút và có thể nói là khiến team phải chờ khá lâu khi cần kiểm tra nhanh một thay đổi nhỏ.

Trong lần chỉnh sửa này mọi thứ được giữ nguyên 100%, không thay đổi code, không chỉnh lại cache, không thêm bước tối ưu nào. Mình chỉ thay đúng một dòng cấu hình duy nhất trong workflow: image.png

Kết quả thật sự khiến mình bất ngờ thời gian chạy giảm xuống còn hơn 3 phút, tức nhanh hơn khoảng 3 lần.

Trước khi thay đổi

image.png

Sau khi thay đổi

image.png

Đây là một ví dụ rất thực tế cho thấy cách một cải tiến nhỏ trong CI/CD có thể tiết kiệm hàng chục phút mỗi ngày cho cả nhóm dev.

Kết luận

Sau khi thử nghiệm, có thể nói Blacksmith mang lại hiệu quả rõ rệt về mặt tốc độ. Việc chỉ cần thay đổi một dòng cấu hình mà workflow có thể chạy nhanh hơn ba lần là điều thật sự ấn tượng. Đối với những nhóm phát triển có tần suất build/test cao, mức tiết kiệm thời gian này hoàn toàn có thể chuyển hóa thành năng suất thực tế ít chờ đợi hơn, phản hồi nhanh hơn và chu kỳ release ngắn hơn. Tuy nhiên, Blacksmith vẫn là một dịch vụ còn khá mới trong hệ sinh thái CI/CD. Sẽ cần thêm thời gian để cộng đồng kiểm chứng về độ ổn định, độ tin cậy dài hạn cũng như trải nghiệm khi mở rộng ở quy mô lớn. Ngoài ra, việc hiện tại chưa hỗ trợ runner cho macOS và Windows cũng là một giới hạn cần lưu ý nếu bạn đang cần môi trường build đa nền tảng. Dù vậy với lợi thế mạnh về tốc độ và chi phí, Blacksmith là một lựa chọn thay thế đáng để thử cho những doanh nghiệp hoặc nhóm kỹ thuật đang tìm cách tối ưu hiệu năng và giảm chi phí vận hành CI/CD mà không phải thay đổi quy trình hiện có. Cá nhân mình cho rằng Blacksmith sẽ là một làn gió mới đầy tiềm năng trong mảng runner service và có thể sẽ là một công cụ đáng giá để cân nhắc trong mọi pipeline CI/CD hiện đại nếu họ tiếp tục mở rộng nền tảng cũng như chứng minh được độ ổn định với cộng đồng.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí