一支自己重度使用云端 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 天内按未用天数退款。你承担的风险,最多是一天的租金。