How we deliver mobile app updates faster
Bài tóm tắt Mercari 2025 3. Quy mô lớn Độ khó: Dễ
Mercari · 2025 · 3. Quy mô lớn · Độ khó: Dễ — bài gốc
Một bài trong series Global App (ngoài sheet). Repo mobile: Mercari 2025.
Bối cảnh
- App Global trên iOS và Android nằm chung monorepo với app Nhật. Mục tiêu: thay đổi tới người dùng nhanh (thí nghiệm ngắn, sửa nhanh) mà bản phát hành vẫn ổn định; review của Apple/Google là phần không kiểm soát được.
Thay đổi chính
- Trunk-based + feature flag cho mọi thay đổi: merge dần vào master, tính năng ẩn sau flag riêng; xong thì developer và QA thử, rồi bật dần qua flag. Vì master luôn ổn định nên cắt bản lúc nào cũng được.
- Release train hằng tuần: cắt nhánh
releasetự động mỗi thứ Ba (cùng lịch cho iOS và Android, chạy độc lập). Build bằng fastlane trên GitHub Actions; "release judgement" chủ yếu là E2E tự động, ít ca tay.- iOS: nộp Apple review song song với release judgement để tiết kiệm thời gian. Android: chờ judgement qua rồi mới nộp vì Google review nhanh.
- Qua cả hai thì phased release. Tính năng xong thứ Hai có thể tới người dùng từ thứ Năm; trung bình quy trình phát hành dưới 2 ngày, 3–7 ngày làm việc từ lúc code tới production (theo bài, app thường là 1–2 tuần).
- Sau phát hành: Firebase báo mỗi crash mới vào Slack, velocity alert gọi on-call khi crash dồn dập; CS và review trên store là kênh phản hồi.
- Hotfix: dừng phased release đang chạy; nhánh hotfix cắt từ nhánh release cuối, thay đổi từ nhánh release tự backmerge vào master; Android nay rollback được bản đã phát hành, iOS thì không.
- Kế hoạch: thử Xcode Cloud làm đường dự phòng cho pipeline; thêm đo hiệu năng (thời gian khởi động, cuộn theo màn hình) vào pipeline để bắt hồi quy.
Vì sao
- Client mobile không revert được như server; cách lùi chính là tắt flag, còn binary thì chỉ còn hotfix (và rollback trên Android).
Bài học cho SWE
- Tách "deploy binary" khỏi "bật tính năng" là điều kiện để phát hành theo lịch cố định mà không chờ tính năng.
- Chạy song song các bước chờ bên ngoài (review của store) với kiểm chứng nội bộ.
Liên quan
- Deploy và release an toàn · Kiến trúc frontend
- Cùng series: Mercari 2025 · Mercari 2025
- Remote config làm cơ chế rollback của client: Tinder 2019
#mobile release#weekly release train#trunk-based development#feature flag#release branch#fastlane#GitHub Actions#App Store review#phased release#Firebase velocity alert#hotfix#Android rollback
Được nhắc tới trong
Chủ đề (2)
Công ty (1)
Bài tóm tắt (2)