Trả lời nhanh: EAS Build dựng bản cài trên máy chủ của Expo, tính tiền theo lượt build. Máy tự dựng thì trả cố định theo tháng, build bao nhiêu lượt cũng vậy. Điểm hòa vốn thực tế rơi vào khoảng vài chục lượt build mỗi tháng: dưới mức đó dịch vụ rẻ hơn và đỡ phải trông máy, trên mức đó tự dựng rẻ hơn rõ rệt. Nhưng chi phí không phải yếu tố duy nhất: thời gian xếp hàng chờ tới lượt mới là thứ khiến nhiều đội chuyển sang máy riêng.
Câu hỏi này xuất hiện đúng lúc dự án bắt đầu chạy đều: đội build vài lượt mỗi ngày, hóa đơn dịch vụ tăng dần, và ai đó đặt vấn đề tự dựng máy. Bài này đưa ra cách tính để bạn quyết bằng con số của chính mình chứ không theo cảm tính.
Đếm đúng số lượt build
Phần lớn người ước lượng thấp hơn thực tế vài lần, vì họ chỉ nhớ những lần build phát hành mà quên các lượt build trong quá trình làm việc.
Danh sách đầy đủ những thứ sinh ra một lượt build:
- Mỗi lần đẩy code lên nhánh chính, nếu hệ thống tự động dựng bản thử.
- Mỗi lần đội kiểm thử yêu cầu bản mới để xác nhận một sửa lỗi.
- Mỗi lần thêm hoặc đổi thư viện gốc, vì bản thử nghiệm sẵn có không còn dùng được.
- Mỗi lần phát hành, tính cả bản iOS và bản Android là hai lượt.
- Các lượt build hỏng phải chạy lại, thường chiếm mười tới hai mươi phần trăm.
Cách chắc nhất là mở bảng lịch sử build của tháng vừa rồi và đếm. Con số đó nhân với đơn giá mỗi lượt là chi phí thật của bạn, không phải con số bạn nhớ.
So với chi phí tự dựng
Bên tự dựng gồm hai phần, và chỉ một phần là máy Linux:
Nhánh Android chạy trên một VPS Linux thông thường. Cấu hình 4 vCPU và 8GB đủ cho dự án vừa, cách dựng nằm ở bài máy build Android. Đây là phần rẻ và dễ.
Nhánh iOS bắt buộc phải có máy Mac, không có đường vòng hợp lệ, chi tiết ở bài build iOS có cần Mac. Đây là phần tốn vốn ban đầu và cũng là lý do nhiều đội chỉ tự dựng nửa Android.
Nên tính cả công vận hành: cập nhật chuỗi công cụ, dọn ổ đĩa, xử lý khi build hỏng vì môi trường. Với người đã quen quản trị máy chủ thì đây là vài giờ mỗi tháng, với đội thuần lập trình ứng dụng thì nên cộng thêm cho thật.
Chi phí ẩn: thời gian chờ
Đây là phần bảng giá không nói. Dịch vụ dùng chung có hàng đợi, và vào giờ cao điểm bạn xếp hàng. Chờ mười lăm phút trước khi build bắt đầu là chuyện thường gặp ở gói thấp.
Quy đổi cho dễ hình dung: đội bốn người, mỗi ngày ba lượt build, mỗi lượt chờ thêm mười phút, là ba mươi phút mỗi ngày trôi qua trong lúc chờ. Một tháng khoảng mười giờ. So con số đó với giá thuê một máy chủ Linux thì kết luận thường rất rõ.
Máy riêng không có hàng đợi của người lạ, nhưng có hàng đợi của chính đội bạn nếu nhiều người cùng build. Cách xử lý là chạy nhiều tiến trình song song trên một máy đủ mạnh, hoặc thêm máy thứ hai khi thật cần. Với dự án mobile, ổ đĩa thường là chỗ nghẽn trước cả CPU, lý do nằm ở bài về ổ đĩa khi build app.
Khi nào dịch vụ vẫn đáng dùng
Đừng tự dựng chỉ vì nghe có vẻ rẻ hơn. Bốn tình huống mà dịch vụ vẫn hợp lý:
- Dự án mới, chưa rõ có đi tiếp không. Trả theo lượt là cách rẻ nhất để thử.
- Đội không có ai thạo quản trị máy chủ. Thời gian học và trông máy có giá của nó.
- Build thưa thớt, ví dụ mỗi tháng vài lượt cho một ứng dụng đã ổn định.
- Chưa muốn bỏ vốn mua máy Mac, mà nhánh iOS lại là phần chính.
Điểm cuối đáng nhấn: nhiều đội tự dựng nhánh Android và vẫn dùng dịch vụ cho nhánh iOS. Cách này cắt được phần lớn số lượt build tính tiền mà không phải bỏ vốn mua máy Mac.
Mô hình kết hợp cho đội nhỏ
Cấu hình mà nhiều đội Việt Nam dừng lại sau khi thử qua các phương án:
- Một VPS Linux dựng nhánh Android cho mọi lượt build hằng ngày, và chạy luôn backend của ứng dụng.
- Dịch vụ theo lượt giữ lại cho nhánh iOS và cho những lúc máy riêng bận hoặc đang bảo trì.
- Máy Mac bổ sung sau, khi số lượt build iOS đủ lớn để hoàn vốn.
Cách này giữ chi phí thấp ở giai đoạn đầu, không khóa bạn vào hướng nào, và quan trọng nhất là bạn luôn có đường thứ hai khi một bên gặp sự cố. Toàn bộ cấu hình build ở cả hai nơi đều mô tả bằng file trong repo, nên chuyển qua lại không phải làm lại từ đầu.
Đếm đúng số lượt dựng trước khi tính tiền
# Dem so lan dung that trong mot thang, dung uoc theo cam giac# Xem lich su trong bang dieu khien dich vu, hoac dem trong lich su kho ma nguon git log --since="1 month ago" --oneline | wc -l # so lan day ma# So lan dung thuong bang hoac hon con so nay # Ghi lai trong mot thang:# so lan dung ban Android# so lan dung ban iOS# thoi gian trung binh moi lan # Roi moi tinh: so lan x don gia, so voi chi phi tu dung| Số lượt dựng mỗi tháng | Phương án thường rẻ hơn |
|---|---|
| Dưới 20 | Dịch vụ có sẵn |
| 20 tới 60 | Tự dựng bản Android, dùng dịch vụ cho bản iOS |
| Trên 60 | Tự dựng cả hai, gồm cả máy Mac riêng |
Thời gian xếp hàng không nằm trên hóa đơn
Khoản này không nằm trên hóa đơn nhưng thường lớn nhất. Dịch vụ dùng chung có lúc phải xếp hàng chờ máy, nhất là vào giờ cao điểm quốc tế. Chờ thêm mười phút mỗi lần dựng, nhân với số lượt, là con số đáng kể.
- Ghi lại thời gian từ lúc bấm dựng tới lúc có bản, không chỉ thời gian máy chạy.
- Máy tự dựng không phải xếp hàng, đây là lợi thế rõ nhất bên cạnh chi phí.
- Nhưng máy tự dựng phải bảo trì: cập nhật công cụ, dọn bộ nhớ đệm, xử lý khi hỏng. Tính khoảng vài giờ mỗi tháng.
Dựng bản Android trên máy chủ của chính bạn
- Bản Android dựng trên máy chủ Linux của bạn: chi phí phẳng, không xếp hàng, và dựng được cả bản thử lẫn bản phát hành.
- Bản iOS dùng dịch vụ cho tới khi số lượt đủ lớn để mua máy Mac.
- Bản thử cho người kiểm thử dựng ở máy của bạn, chỉ dùng dịch vụ cho bản nộp cửa hàng.
Cấu hình máy dựng và cách tự động hóa nằm ở bài về dựng ứng dụng Android trên máy chủ.
Câu hỏi thường gặp
Điểm hòa vốn giữa hai hướng là bao nhiêu?
Tính bằng số lượt build mỗi tháng nhân đơn giá, so với giá thuê máy cộng công vận hành. Với đội build hằng ngày thì tự dựng gần như luôn rẻ hơn, còn dưới khoảng mười lượt mỗi tháng thì dịch vụ tiện và rẻ hơn.
Tự dựng máy build có khó không?
Nhánh Android không khó, chủ yếu là cài JDK, bộ công cụ dòng lệnh và nhớ chấp nhận giấy phép SDK. Nhánh iOS mới là phần vướng vì bắt buộc phải có phần cứng của Apple.
Máy build tự dựng cấu hình bao nhiêu?
Bắt đầu từ 4 vCPU và 8GB RAM cho dự án vừa, ổ từ 60GB. Nếu nhiều người build song song thì lên 8 vCPU và 16GB. Ổ NVMe rút ngắn thời gian rõ vì quá trình build đọc ghi rất nhiều file nhỏ.
Chuyển từ dịch vụ sang máy riêng có mất công không?
Ít, vì cấu hình build vốn nằm trong repo dưới dạng file. Phần mất công là dựng máy lần đầu và cắm vào hệ thống tự động hóa. Sau đó thì hai đường chạy song song được, không phải chọn một.
