作者简介:董必胜(叔大),阿里巴巴配置管理专家,负责集团、蚂蚁的移动端构建,负责研发协同平台RDC无线。

背景:在移动物联网大潮中iOS构建的重要性日益突出,如何能提供稳定的iOS构建服务?中大型的企业如何搭建、管理这种非标准的iOS构建集群?如何能做到集群搭建的成本最优?本文以alibaba集团的场景和大家分享iOS构建集群搭建的方案选型。

我们都知道iOS的构建需要在macOS Sierra的系统上构建。针对我们构建集群的搭建有几种思路:

  • 直接采购mac mini、mac pro用于构建;
  • 在linux虚机里安装macOS Sierra(应用层);
  • 在PC、linux等裸机上安装macOS Sierra(系统层)。

一、 系统层虚拟化方案

在裸机上直接安装macOS Sierra。

这种机器在业界有个说法叫黑苹果,最著名的黑苹果论坛:https://www.tonymacx86.com/ 。详细装机文档:https://www.tonymacx86.com/threads/unibeast-install-macos-sierra-on-any-supported-intel-based-pc.200564/。
从文档可以看出:

装机过程比较复杂;
常见做法是在PC上直接装,PC机运维成本比较高; 无法做到自动化。

使用vmware的虚拟化工具 vmwareEXSi,测试验证结果:

1)最新版本6.5.0版本在mac pro安装失败,achi无法识别;
2)6.0.0patch2版本在mac pro安装成功一次,但安装后,访问虚拟机管理页面有错误。测试重启服务器,虚拟机自动重新开机不生效。部分帖子反馈,磁盘读取部分虚拟化有问题,读写效率低,目前未验证;
3)在惠普微服务器gen8上安装6.0.0版本,虽然6.0.0标记仅支持macOS10.10,但可以升级到macOS10.12.4;
4)烧制6.5.0EXSi后安装后,即使返回安装6.0.0patch2,EXSi安装后,能正常读取ip,但网络访问有问题,并且无法进入exsi系统的命令行模式;
5)借用Lenovo T4500,因网卡不识别,无法安装EXSi,可见EXSi兼容范围有限。

二、应用层的虚拟化方案

Windows + vmare + macOS Sierra,这种方案的装机文档网上比较多,不过也存在上述问题:

  1. 装机过程比较复杂
  2. 常见做法是在PC上直接装,PC机运维成本比较高
  3. 无法做到自动化

linux+ VirtualBox + macOS Sierra,这种方案存在一个问题,virtualBox只能支持 i386和AMD64的架构。

另外上述方案最大的优点在成本低。但是还有两个通用致命的问题:

1. 法务问题: https://store.apple.com/Catalog/US/Images/MacOSX.htm

根据MacOSX的使用协议, MacOSX 只能用在Apple-labeled computer,所以在部分企业基本不能使用非mac的机器用来做iOS构建

2. Permitted License Uses and Restrictions. A. This License allows you to install and use one copy of the Apple Software on a single Apple-labeled computer at a time. This License does not allow the Apple Software to exist on more than one computer at a time,and you may not make the Apple Software available over a network where it could be used by multiple computers at the same time. You may make one copy of the Apple Software (excluding the Boot ROM code) in machine-readable form for backup purposes only; provided that the backup copy must include all copyright or other proprietary notices contained on the original.

2. app上传问题:

从黑苹果用户了解到,在黑苹果机器上构建的app无法通过app store审核。也就是说你即使打出app也没发走官方渠道,只用用于framework构建或者一些越狱渠道。

三、直接用mac mini、mac pro搭建mac集群

这种方式装机的问题不存在,但是也存在一些问题

  1. 成本相比较下偏高,这个问题是相对的mac mini也才几k
  2. 运维也是非标的,运维标准化包括:
  • IDC的标准化,像BAT这种会自己搭建了符合IDC规范的机房

  • 装机的标准化,已有的OS升级安装等都可以实现命令行自动化
  • 监控的标准化:mac机器已经接入到服务端监控平台

说了这么多,总结下:

  • mac mini、mac pro的运维标准化已经在路上了
  • 黑苹果的包有法务、app store上传的问题,这条路在部分大企业是走不通的

扫码免费体验研发协同RDC

点此立即预约

阿里配管专家解读:如何最优成本搭建非标准的iOS构建集群相关推荐

  1. 阿里云 ECS 构建集群

    阿里云:轻量应用服务器 ==>直达链接 云效流水线 Flow 支持将阿里云 ECS 添加为私有构建集群.你可以按照以下方式,将你的阿里云 ECS 加入构建集群,从而让流水线任务使用其进行构建. ...

  2. 优酷蓝鲸近千节点的Redis集群运维经验总结

    http://www.infoq.com/cn/news/2016/08/youku-Redis-nosql Redis是时下比较流行的Nosql技术.在优酷我们使用Redis Cluster构建了一 ...

  3. 阿里云产品专家解读链路追踪(Tracing Analysis)

    摘要: 概要 阿里云上最近推出了一款新产品 链路追踪 ,专注于帮助开发者快速分析和诊断分布式应用架构下的性能瓶颈,提高微服务时代下的开发诊断效率. 分布式应用环境下的链路追踪,并不是一个新话题.在早些 ...

  4. 阿里云产品专家解读链路追踪(Tracing Analysis)和应用性能监控(APM)的联系和区别

    阿里云上最近推出了一款新产品链路追踪 ,专注于帮助开发者快速分析和诊断分布式应用架构下的性能瓶颈,提高微服务时代下的开发诊断效率,并省去用户搭建各类链路监控应用(Jaeger, Zipkin等)和相关 ...

  5. 阿里高级微服务架构师亲手教你搭建一套可自动化构建的微服务框架

    这套微服务框架能干啥? 这套系统搭建完之后,那可就厉害了: 微服务架构 你的整个应用程序将会被拆分成一个个功能独立的子系统,独立运行,系统与系统之间通过RPC接口通信.这样这些系统之间的耦合度大大降低 ...

  6. 在阿里云上部署生产级别Kubernetes集群

    阿里云是国内非常受欢迎的基础云平台,随着Kubernetes的普及,越来越多的企业开始筹划在阿里云上部署自己的Kubernetes集群. 本文将结合实战中总结的经验,分析和归纳一套在阿里云上部署生产级 ...

  7. 阿里云Redis集群版简要介绍

    阿里云云数据库Redis集群版火热抢购,详情参见>> 产品简介 云数据库 Redis 提供集群版实例,轻松突破 Redis 自身单线程瓶颈,可极大满足对于 Redis 大容量或高性能的业务 ...

  8. 还在为多集群管理烦恼吗?RedHat 和蚂蚁、阿里云给开源社区带来了OCM

    简介: 为了让开发者.用户在多集群和混合环境下也能像在单个 Kubernetes 集群平台上一样,使用自己熟悉的开源项目和产品轻松开发功能,RedHat 和蚂蚁.阿里云共同发起并开源了 OCM(Ope ...

  9. 如何在阿里云上构建一个合适的Kubernetes集群

    摘要: 声明 本文主要介绍如何在阿里云上构建一个K8S集群的实践,只是作为参考,大家可以根据实际情况做出调整. 集群规划 在实际案例中发现,有不少同学使用了很多的小规格的ECS来构建K8S集群,这样其 ...

最新文章

  1. 专访高磊:安卓APK安全加固的引领者
  2. spring中的ReflectionUtil
  3. Spring Cloud【Finchley】-12使用Hystrix Dashboard实现Hystrix数据的可视化监控
  4. KPCR:CPU控制区(Processor Control Region)
  5. CSMAR database query sample
  6. SAP BTP 上使用 Mobile Back-End Tools(MBT)进行全栈开发的方法概述
  7. mPaaS-RPC 拦截器各种场景下的使用指南
  8. 什么是Docker?看这一篇文章就够了
  9. 物联网通信协议——比较-MQTT、 DDS、 AMQP、XMPP、 JMS、 REST、 CoAP
  10. 日常提高PHP运行效率的习惯
  11. CSS3的线性渐变(linear-gradient)
  12. day17【前台】支付案例
  13. 暖心社区(2018-07-17)
  14. 学习数据库系统概论这一篇就够了
  15. Smarty中文手册
  16. Gradle下载及安装,配置IDEA
  17. java去除水印,Java 删除/复制Word文档水印
  18. 毕业论文:基于响应式页面的新闻资讯类门户网站的设计与实现
  19. 喵哈哈村的魔法考试 Round #6 (Div.3) 题解
  20. 2022hgame-week1 wp

热门文章

  1. 用border-width,border-color画三角形
  2. 用户自定义的Javascript函数名字与内置函数或宿主函数名字相同时产生的问题。...
  3. 实例说明扩展JQuery方式
  4. ASCII码对照表(不可见字符)
  5. Windows核心编程 第四章 进程(上)
  6. 【数字信号处理】傅里叶变换性质 ( 傅里叶变换频移性质示例 | PCM 音频信号处理 | 使用 matlab 进行频移操作 )
  7. 【错误记录】Flutter 组件报错 ( No Directionality widget found. | RichText widgets require a Directionality )
  8. 【Flutter】Animation 动画 ( Flutter 动画的核心类 | Animation | CurvedAnimation | AnimationController | Tween )
  9. 【Android 应用开发】Android UI 设计之 TextView EditText 组件属性方法最详细解析
  10. 进程 互斥锁、队列与管道、生产者消费者模型