Changing microsoft's build: Revolution or evolution

Changing microsoft's build: Revolution or evolution
复制标题

改变微软的构建:革命还是进化

DOI:
10.1145/2970276.2985779
复制
发表时间:
2016
期刊:
2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE)
影响因子:
--
通讯作者:
Wolfram Schulte
Wolfram Schulte
中科院分区:
--
文献类型:
--
作者:
Wolfram Schulte

文献摘要

被引文献

相似文献

每天几次生产和测试数百种软件产品。这种连续的整合量表必须确保短暂的反馈周期以及人力干预可靠地可靠地发挥作用。在过去的三年中,TSE的宪章是缩短了这个周期时间。我们以两种方式追求了这个目标:通过Cloudbuild和Concord革命进化。 CloudBuild是一种构建服务基础架构,现在由Microsoft的所有主要产品组都使用,例如Azure,Bing,Office,SQL,SQL除Windows外。 CloudBuild解决了连续集成工作流的各个方面,例如构建,测试和代码分析,但也删除,包装和符号创建和存储。只要CloudBuild履行基于IO的粗粒子合同,它们就会支持多种构建语言。 CloudBuild仅在需要时才使用基于内容的缓存来运行与构建相关的任务。最后,它并行建立在许多机器上。构建和测试的速度从1.2倍到10倍不等。 CloudBuild的目标是迅速加入板载团队,因此必须支持不确定性的构建工具和规范语言,而这些语言不足。 CloudBuild在不可靠的组件存在下是可靠的构建服务,目前可实现的服务可用性高于99%。窗户走了一条不同的路。他们过去的制造排气非常庞大,以至于在云中构建窗户并将构建结果带回了Corp.-Net上的测试。被认为是不可行的。因此,他们决定转到一种新的构建语言Codename Concord。通过施工,Concord可以保证可靠的构建,没有过度构建,并允许有效分配。采用康科德(Concord)导致了巨大的性能提高,我们看到Windows构建最多100倍加速。但是,这条路径已经漫长而艰难,因为它不仅需要重大重写现有的构建逻辑,而且所有相关的开发人员和构建实验室过程都必须改变。无论进化还是革命是正确的道路 - 判决仍在解决。
Tens of thousands of Microsoft engineers build and test hundreds of software products several times a day. It is essential that this continuous integration scales, guarantees short feedback cycles, and functions reliably with minimal human intervention. During the past three years TSE's charter has been to shorten this cycle time. We went after this goal in two ways: Evolution via CloudBuild and Revolution via Concord. CloudBuild is a build service infrastructure, now being used by all major product groups in Microsoft, like Azure, Bing, Office, SQL except for Windows. CloudBuild addresses all aspects of a continuous integration workflow, like builds, test and code analysis, but also drops, package and symbol creation and storage. CloudBuild supports multiple build languages as long as they fulfill a coarse grained IO based contract. CloudBuild uses content based caching to run build-related tasks only when needed. Lastly, it builds on many machines in parallel. The speed ups of build and testing range from 1.2x to 10x. CloudBuild aims to rapidly onboard teams and hence has to support non-deterministic build tools and specification languages that under-declare dependencies. CloudBuild, being a reliable build service in the presence of unreliable components, currently achieves service availability better than 99%. Windows went a different path. Their past build exhaust was so massive that building Windows in the cloud and bringing the build results back for testing on corp.-net. was considered infeasible. So they decided to move to a new build language, codename Concord. By construction, Concord guarantees reliable builds, no over-build, and allows for efficient distribution. Adopting Concord has led to immense performance improvements, we have seen up to 100X speedup for Windows builds. But the path has been long and rocky, since it not only requires a substantial rewrite of existing build logic, but also all related developer and build lab processes have to change. Whether evolution or revolution is the right path forward - the verdict is still out.