VPS

Build app iOS và Android trên server: vì sao ổ đĩa quyết định tốc độ

Phân tích vì sao quá trình đóng gói ứng dụng di động đọc ghi ổ đĩa rất nặng, cách bố trí máy build và những giới hạn cần biết với iOS.

Thanh Nguyễn Cập nhật Đăng 7 phút đọc 1 khối lệnh

Build app iOS và Android trên server: vì sao ổ đĩa quyết định tốc độ
Mục lục bài viết
  1. Chuyện gì xảy ra khi bấm build
  2. Vì sao bộ nhớ đệm quan trọng nhưng chưa đủ
  3. Bố trí máy build hợp lý
  4. Vài cách rút ngắn thời gian
  5. Ràng buộc pháp lý cần biết trước khi tính hạ tầng
  6. Cấu hình máy đóng gói theo nền tảng
  7. Ba cách rút ngắn thời gian, hiệu quả rõ nhất
  8. Đo xem đang nghẽn ở đâu
  9. Câu hỏi thường gặp
  10. Bài viết liên quan

Trả lời nhanh: Đóng gói ứng dụng di động là công việc đọc ghi cực nặng: tải phụ thuộc, giải nén thư viện, biên dịch từng phần rồi ghi ra hàng chục nghìn file trung gian, cuối cùng nén lại thành gói cài đặt. Phần lớn thao tác là file nhỏ nằm rải rác, đúng kiểu mà ổ NVMe vượt trội. Lưu ý quan trọng: build cho iOS bắt buộc chạy trên máy macOS theo điều khoản của Apple, còn build Android chạy tốt trên máy chủ Linux thông thường.

Đội làm ứng dụng di động thường than thời gian build. Nhìn vào thì thấy CPU không cạn, RAM còn dư, nhưng máy vẫn ì. Thủ phạm hay bị bỏ qua nằm ở ổ đĩa.

Chuyện gì xảy ra khi bấm build

  1. Tải và giải nén phụ thuộc, có thể hàng trăm gói.
  2. Biên dịch mã nguồn thành mã trung gian, sinh ra rất nhiều file nhỏ.
  3. Xử lý tài nguyên: ảnh, biểu tượng, file giao diện, chuỗi ngôn ngữ.
  4. Ghép và tối ưu, loại bỏ mã không dùng.
  5. Nén và ký thành gói cài đặt cuối cùng.

Bước một, hai và ba đều là đọc ghi số lượng lớn file nhỏ. Đây chính là chỗ ổ NVMe cho khác biệt rõ, còn chỉ số MB/s trên tờ quảng cáo gần như không liên quan.

Vì sao bộ nhớ đệm quan trọng nhưng chưa đủ

Công cụ build hiện đại đều có bộ nhớ đệm: lần sau chỉ dựng lại phần thay đổi. Nghe thì bộ nhớ đệm giải quyết mọi thứ, nhưng bản thân nó là một kho file khổng lồ trên ổ đĩa. Đọc kiểm tra xem cái gì đã đổi cũng là đọc ổ.

Kết quả là ổ chậm thì ngay cả build tăng dần cũng chậm, dù về lý thuyết chỉ phải làm một phần nhỏ công việc.

Bố trí máy build hợp lý

  • Android: chạy tốt trên máy chủ Linux. Ưu tiên ổ NVMe, xung nhịp cao, RAM từ 8GB trở lên cho dự án vừa.
  • iOS: theo điều khoản của Apple, việc biên dịch phải thực hiện trên phần cứng Apple. Không thể build iOS trên máy chủ Linux thông thường, cần dịch vụ máy macOS chuyên dụng.
  • Phần chung: máy chủ Linux vẫn rất hữu ích cho phần backend, API, kho lưu trữ mã nguồn, hệ thống tự động hoá và nơi chứa bản build để tải về.

Nói rõ điểm này để tránh mua nhầm: nếu ai đó chào bạn build iOS trên máy chủ Linux giá rẻ, hãy hỏi kỹ cách họ làm.

Vài cách rút ngắn thời gian

  1. Giữ bộ nhớ đệm phụ thuộc giữa các lần build thay vì tải lại từ đầu.
  2. Chia dự án thành nhiều mô đun để chỉ dựng lại phần thay đổi.
  3. Tách máy build khỏi máy chạy thật.
  4. Đặt thư mục làm việc trên ổ nhanh nhất, đừng để trên ổ lưu trữ chậm.
  5. Dọn file trung gian định kỳ, kho bộ nhớ đệm phình to cũng làm chậm chính nó.

Ràng buộc pháp lý cần biết trước khi tính hạ tầng

  • Đóng gói cho iOS bắt buộc chạy trên máy tính của Apple. Đây là điều khoản cấp phép hệ điều hành, không phải giới hạn kỹ thuật. Cài hệ điều hành đó lên máy chủ thường là vi phạm điều khoản, nên đừng xây quy trình công ty dựa trên cách đó.
  • Ba đường hợp lệ: mua máy Mac mini đặt tại văn phòng làm máy đóng gói, thuê máy Mac theo giờ từ dịch vụ đám mây chuyên dụng, hoặc dùng dịch vụ tích hợp liên tục có sẵn máy Mac.
  • Đóng gói cho Android chạy tốt trên máy chủ Linux thông thường, không có ràng buộc nào tương tự. Đây là phần nên tự dựng để tiết kiệm.

Cấu hình máy đóng gói theo nền tảng

Nền tảngRAMỔ đĩaGhi chú
Android, dự án vừa8 GBNVMe 100 GBBộ công cụ và bộ nhớ đệm chiếm khoảng 30 tới 50 GB
Android, dự án lớn hoặc nhiều nhánh song song16 GBNVMe 200 GBMỗi nhánh giữ bộ nhớ đệm riêng
Ứng dụng đa nền tảng, phần Android16 GBNVMe 200 GBThư viện phụ thuộc nhiều hơn hẳn dự án thuần
Máy Mac cho iOS16 GBSSD 256 GB trở lênMỗi phiên bản bộ công cụ phát triển chiếm khoảng 15 GB

Bộ nhớ là thứ hết trước: quá trình đóng gói Android chạy trên nền máy ảo Java và mặc định xin khá nhiều bộ nhớ. Máy 4 GB thường bị dừng giữa chừng với thông báo hết bộ nhớ.

Ba cách rút ngắn thời gian, hiệu quả rõ nhất

  • Giữ bộ nhớ đệm giữa các lần chạy. Với hệ thống tự động, khai rõ thư mục đệm của công cụ đóng gói và của trình quản lý thư viện để lưu và khôi phục. Đây là thay đổi cho kết quả rõ nhất, thường cắt được nửa thời gian.
  • Bật đóng gói tăng dần và chạy song song trong tệp cấu hình dự án. Máy nhiều nhân mà chạy tuần tự là lãng phí.
  • Tách bước kiểm thử ra khỏi bước đóng gói. Chạy kiểm thử song song với đóng gói trên hai máy, thay vì nối tiếp nhau.

Đo xem đang nghẽn ở đâu

TerminalĐo xem đang nghẽn ở đâubash
# Chay song song voi lenh dong goiiostat -x 2      # %util gan 100 la o diahtop             # xem tung nhan, va cot MEMfree -h          # co dung vung nho tam khong # Do rieng tung buoc, vi du voi du an Android./gradlew assembleRelease --profile# Bao cao HTML sinh ra trong build/reports/profile, chi ro tung tac vu ton bao lau

Báo cáo đó là thứ nên đọc trước khi nâng cấp máy: nó chỉ đích danh tác vụ nào tốn thời gian, và nhiều khi thủ phạm là một bước xử lý ảnh hoặc một thư viện sinh mã, sửa được bằng cấu hình chứ không cần đổi phần cứng.

Câu hỏi thường gặp

Build Android trên VPS được không?

Được. Chỉ cần máy chủ Linux có Java và bộ công cụ Android, ưu tiên ổ NVMe và đủ RAM. Đây là cách phổ biến để chạy build tự động.

Build iOS trên VPS Linux được không?

Không. Theo điều khoản của Apple, việc biên dịch phải chạy trên phần cứng Apple, nên cần dịch vụ máy macOS chuyên dụng.

Máy build cần bao nhiêu RAM?

Dự án vừa nên có ít nhất 8GB. Thiếu RAM sẽ khiến quá trình build bị dừng giữa chừng, và lỗi kiểu này thường khó hiểu vì thông báo không nói rõ nguyên nhân.

Vì sao build lần đầu lâu hơn nhiều?

Vì phải tải toàn bộ phụ thuộc và dựng lại tất cả. Các lần sau tận dụng bộ nhớ đệm nên nhanh hơn, nhưng vẫn phụ thuộc tốc độ ổ đĩa khi đọc kho bộ nhớ đệm.

Chia sẻ:Facebook

Thanh Nguyễn

TND

Tư vấn bản quyền, VPS và máy chủ kèm hóa đơn VAT, hợp đồng đầy đủ cho doanh nghiệp.