一支自己重度使用雲端 Mac 的工程團隊

ArmMini 由 iOS 開發者和 SRE 組成。我們並不是先有計畫才去找用戶——2021 年那 4 台上架的 Mac mini,最初只是拿來讓自己的 App 跑 CI。這一頁講清我們是誰、為什麼堅持獨享實體機、機器實際怎麼運作。

TEAM

先是用戶,後是營運者

團隊目前有 7 個人:3 位 iOS 開發者、2 位 SRE、2 位技術支援,分散在 UTC+8 與 UTC-8 兩個時區。每個人的 App 或 CI 流程都跑在自家節點上,機器一出問題,我們通常比用戶更早收到警示——因為自己的建置早就先亮紅燈了。

這決定了我們做事的優先順序:先確保機器穩定、憑證交付夠快、出問題能自行重開機,其他的之後再談。網站上寫的每一項排查步驟、每一個延遲數字,都是我們自己連上這些機器實測出來的,不是照抄文件。

我們刻意維持小規模。7 個人管理一百多台機器,靠的不是加班,而是把帶外電源控制、自動化巡檢、自助重灌這些事一次做到位。工單首次回覆能壓在兩小時以內,是因為 80% 的問題用戶在控制台裡就能自己解決,剩下的才需要人工介入。

如果你也是每天跟 Xcode、runner、模擬器打交道的人,我們應該很聊得來。有具體問題,直接看排查手冊,或直接找我們聊聊

armmini-ops — ssh
$ system_profiler SPHardwareDataType | grep Chip
      Chip: Apple M4 Pro
$ uptime
 14:32  up 217 days, load averages: 3.42 2.98 2.71
$ ops team --list
  ios-dev x3   sre x2   support x2
  coverage: UTC+8 / UTC-8
  eating our own dogfood since 2021
  all nodes healthy
上面這台不間斷上線 217 天的機器,是我們自己的 CI 主力機。所有節點全年 365 天運作,沒有所謂的定期停機——這不是口號,而是我們自己的流程也停不起。
WHY PHYSICAL

為什麼堅持獨享實體機,而不是虛擬機

做共享虛擬化,一台主機切成八份,毛利好看得多。我們沒走這條路,原因有三個,每一個都沒有妥協的空間。

macOS 軟體授權

macOS 的授權條款要求系統運作在 Apple 品牌硬體上。一人一台真正的 Mac mini,是最乾淨、最經得起檢視的合規做法;各種共享切分方案在授權層面始終存在灰色地帶,我們不想讓用戶的發布流程建立在灰色地帶之上。

效能一致性

CI 最怕的不是慢,是抖動。實體節點沒有鄰居搶 CPU、搶磁碟 IO,同一專案連續完整編譯,時間波動通常在 3% 以內(我們自己專案的實測數據)。建置時間可預測,排隊策略和逾時閾值才能訂得準。

GPU 與 Neural Engine 完整直通

虛擬化層目前仍無法完整支援 Metal 與 Neural Engine:MLX 推論、模擬器 GPU 繪圖、Final Cut 硬體編碼,在虛擬機裡要麼跑不動,要麼效能打對折。實體機中間什麼都不隔,晶片有什麼功能你就能直接用。

說句實話:如果你一年只需要一次一小時的建置,獨享實體機對你並不划算。什麼時候該租、什麼時候不該租,我們在怎麼選那頁用數據攤開講了。
DATACENTER

機房與硬體:機器實際怎麼放、怎麼供電

三個實體節點,機櫃是我們自己設計上架方案、自己動手裝的。以下是每個節點的實際狀況。

東京節點

JP
機房層級Tier III+
出口頻寬20 Gbps
在架檔位Basic — Max 全檔
定位主力節點·規模最大

2021 年起家的機房,東亞用戶的預設選擇。四個檔位全部常態開放租用,我們自己的 CI 也全部跑在這裡。

首爾節點

KR
機房層級Tier III
出口頻寬10 Gbps
在架檔位Basic / Standard
定位東北亞低延遲補充

2024 年上線,服務東北亞區域的遠端開發需求。首爾節點提供 Basic 與 Standard 檔位;Pro/Max 請選擇東京或矽谷節點。

矽谷節點

US-W
機房層級Tier III+
出口頻寬40 Gbps
在架檔位Basic — Max 全檔
定位北美出口·大頻寬

2023 年上線,適合北美團隊的 CI runner,以及需要大出口頻寬的場景,例如大型檔案上傳 TestFlight。

三個所有節點通用的硬體決定

客製化上架托盤

Mac mini 原本並不是設計給機櫃用的,我們客製了 CNC 鋁合金托盤:1U 並排 4 台,前置理線,單台抽出更換不會動到鄰位。聽起來是小事,但它決定了換一台故障機要花 5 分鐘還是 50 分鐘。

雙路供電

五個機房都是雙路市電 + UPS + 柴油發電機,機櫃內接雙 PDU 分屬兩路。任一路斷電,機器都能無感持續運作。近 12 個月沒有一次因供電導致的當機紀錄。

帶外電源控制

每台機器都接上智慧型 PDU 獨立通道。系統徹底當機時,不需要等人走進機房——你在控制台按下「強制重開機」,PDU 層級斷電再上電,平均 40 秒完成,凌晨三點也一樣。

PRINCIPLES

維運原則:寫下來,就要做到

機器是獨享的,信任不能只靠一句口號。這四條是我們內部 runbook 的第一頁,也貼在這裡接受監督。

不窺探用戶資料

交付當下就會提示你更換所有憑證;機器內不預裝任何監控 agent、不留維運帳號。我們的健康監控只看網路層與電源層指標——機器有沒有通電、網路通不通,機器裡跑什麼,我們不知道,也不想知道。

最小權限存取

日常維運僅止於帶外層(電源、網路、硬體)。需要進入你的系統協助排查問題時,必須有你在工單裡的明確授權,由值班工程師一人操作,操作紀錄附在工單裡。沒有授權,任何人都不會碰用戶的機器。

事故公開檢討

影響用戶的事故,72 小時內公布檢討報告:根因、影響範圍、時間線、改善項目,一項不漏。撰寫報告的人就是當時處理事故的工程師,不經行銷話術包裝。我們自己也是用戶,知道敷衍的檢討報告讀起來是什麼感覺。

退役磁碟物理銷毀

機器下架或用戶註銷後 7 日內完成全盤清除並提供紀錄;SSD 退役時先進行全盤加密清除,再物理銷毀,銷毀證明存檔。你的程式碼簽章憑證與私有倉庫憑證,不會以任何形式流出機房。

NUMBERS

數字看板

空口無憑,提供可核對的數字。統計口徑寫在下方,歡迎在工單裡質詢任何一項。

128
目前上線實體節點(三地合計)
99.97%
近 12 個月實際上線率
8 分鐘
訂單平均交付時間
38 分鐘
工單平均首次回覆(SLA 承諾 2 小時內)

口徑:2026-07 滾動 12個月;上線率以分鐘為單位取樣、按單台機器計算;交付時間為訂單從付款成功到憑證郵件送達;首次回覆為工單建立到首次人工回覆。

TIMELINE

從 4 台自用機到三地節點

沒有募資故事,只有一條把機器越管越多的路。

  1. 2021-03

    4 台 Mac mini 上架東京

    用來給自己的兩個 App 跑 CI。第一版上架托盤是 3D 列印的,現在還留著一個當紀念。

  2. 2021-11

    第一批外部用戶

    朋友的團隊租走一半機器跑 GitHub Actions runner,三個月零投訴。我們意識到這可以是一門生意,決定認真投入。

  3. 2022-06

    東京擴充到 24 台,控制台上線

    自助下單、自動交付憑證、一鍵重開機與重灌全部打通,交付從人工半天縮短到 10 分鐘以內。

  4. 2023-04

    矽谷節點上線

    首批 32 台,面向北美團隊的 CI 需求。同期把 CNC 鋁合金托盤訂為三地統一標準。

  5. 2024-02

    首爾節點上線,全線帶外改造

    東北亞低延遲覆蓋補齊;所有機器接上智慧型 PDU 獨立通道,「強制重開機」從工單請求變成用戶自助操作。

  6. 2026-07

    全面換裝 M4 / M4 Pro

    四個檔位統一到 M4 世代,上線機器規模超過 120 台。舊機型逐批退役,磁碟依銷毀流程處理。

JOIN US

加入我們,或者直接聊聊

團隊目前在招人,節奏是遠端、非同步、少開會、寫清楚再動手。

SRE(遠端)

HIRING

維護三地實體節點的自動化巡檢、帶外控制與交付流程。你需要對 macOS 和網路都不陌生,能獨立處理凌晨的警示並寫出讓人看得懂的檢討報告。

應徵方式:郵件 support@armmini.com,標題註明「應徵 SRE」。比起履歷,我們更想讀你處理過最棘手的一次事故。

技術支援工程師(UTC-8 時段)

HIRING

處理工單裡的連線、建置與網路問題,並把重複出現的問題整理回排查手冊。你最好自己發過 App、設定過 self-hosted runner,能用指令列說話。

應徵方式:郵件 support@armmini.com,標題註明「應徵 技術支援」,附一段你寫過的排查紀錄。

售前咨詢、大量採購或其他任何事務,入口都在找誰聊這一頁:郵件與控制台工單兩種管道,各自的適用情境與回應時限都寫得很清楚。

了解完我們,不如直接開一台試試

按天起租,付款後 10 分鐘內交付憑證,7 天內按未使用天數退款。你承擔的風險,最多就是一天的租金。