我国最大的IT项目管理门户网站,国内IT项目管理培训与咨询服务提供商

当前位置:首页 > DevOps > 正文

奔驰在打造未来汽车时的DevOps实践

2018-11-13 来源:高效开发运维 付辉 点击:
 
  SivaMandadi是来自奔驰北美研发中心的用户交互部门的一名DevOps工程师,他在一次分享中介绍了奔驰通过DevOps落地,加速打造未来汽车的实践。本文根据视频资料整理而来,原视频地址:
https://www.youtube.com/watch?v=zw0QsPgD5Ug
  背景介绍
  奔驰对于未来汽车的定义涵盖了很多方面,包括车载音乐、导航、自动驾驶等等,涉及到的实现技术也是多方面的,如机器学习、物联网等前沿技术。这些技术表现在实际应用上,便有了一种“未来感”。举个例子,未来汽车可以根据天气情况,切换车内的主题,比如颜色、音乐等,让车主时刻都保持舒适的状态;或者,如果车主开车回家,在离家还有半小时车程的时候,可以通过车给家里的厨房电器发消息,开始准备煮一顿可口的饭菜。
  最开始,整个用户交互部门(视频主讲人所在部门)大约有300名工程师,他们来自不同国家,分布在美国、德国和印度等不同地域;团队每天大约会执行60次构建任务;每周有超过1000个、约1TB数据量的自研件产生;平均CI构建时长为6小时。
  面临的挑战
  随着业务的发展,团队面临着巨大的挑战,主要是在工件的存储与共享、依赖管理、编排、持续构建和仓库不同等方面:
  自研件存储:每周会产生超过1000个自研件,需要耗费近ITB存储空间,随着时间推移现有的存储资源很快就出现枯竭。
  自研件共享:团队成员分布在世界各地,上传和下载的速度成为瓶颈,开发与QA人员通常会抱怨下载速度太慢。比如印度和德国的开发者需要上传,美国这边的QA需要下载进行测试就会遇到这种情况。
  依赖管理:庞大研发团队的依赖管理也是一个非常头疼的问题,某些功能依赖的软件包在不同的模块中存在着不同的版本,而维护复杂的依赖关系是非常有挑战的一件事情。团队主要使用Java和C++开发,并且使用了maven、conan作为依赖管理工具。
  持续集成:持续集成对于这样一个大团队是必须的,每一次的提交都必须通过持续集成(CI)确保提交不会带来任何问题。团队使用了Jenkins和Bamboo做一些持续集成相关的事情,值得一提的是使用了DockerContainer作为JenkinsAgent,通过配置文件根据负载动态创建BuildAgent。然而,由于Docker镜像非常大,而且处于不同的地域,导致整个过程也效率较低。
  在遇到上述挑战的同时,在CI构建阶段,下载依赖的时候达到5-6个小时,这也是难以接受的,并且由于Artifact非常大,也会使得整个系统运行缓慢。一种解决方案就是使用NAS存储。但是依然存在一些新的挑战:
价格昂贵。
  NAS存储虽然能在一定程度上解决问题,但是相关的设备和维护费用非常昂贵。
构建次数的限制:由于构建的自研件增长非常快,然而存储空间是相对有限的,所以,实际情况下需要限制10次构建。
  共享:共享的问题依然难以解决,尤其是跨地域的共享。
  解决方案
  在对挑战进行分析之后,认为有如下两种可选的解决方案。一种是增加存储,另外一种方式是采用Nexus,但需要高可用架构和RESTAPI的支持。
 
  这两种选择无疑都需要一个强大的DevOps工具。对于跨国研发团队来说,高可用是非常重要的特性,多语言的仓库也是必须的,增加存储显然难以解决根本问题。Nexus有多语言支持,但是在高可用和RESTAPI方面都需要额外的维护。在调研了众多相关产品之后,奔驰的研发团队认为JFrogArtifactory是非常不错的选择。
  JFrogArtifactory提供了非常丰富的功能,比如统一的仓库、一致的UI、企业级高可用支持、基于YAML的预定义配置、丰富的RESTAPI支持以及良好的客户支持等等。Artifactory对开源工具均可以无缝对接,尤其是Jenkins,因此用户原有的习惯几乎不需要改变,使用之后,整个DevOps环境有了很显著的变化。
  除此之外,Artifactory还有诸多非常强大的特性,如DevOps全生命周期元数据记录、AQL(ArtifactoryQueryLanguage)查询语言、跨语言的服务正向和反向依赖解析、结合Xray的漏洞扫描及影响力分析等等。
  奔驰通过Artifactory实现了统一的依赖管理和集中式的软件包仓库,结合其强大的正反向依赖解析,轻松解决了依赖关系不清晰的问题。Artifactory的异地同步复制解决了软件包上传和下载的性能瓶颈问题,由于具有缓存机制,使得虽然每天的构建频率增长十倍,但是构建时间却大幅下降。在自研件存储方面,通过Artifactory的存储优化节省了大量存储空间,且通过自动清理机制,减少了很多管理成本,也降低了人为操作的风险。
  全球分布的研发中心和人员的角色变更,使得权限的管控变得异常复杂,由于Artifactory集中管理了所有语言的二进制包,奔驰在使用Artifactroy后轻松地实现了对各地研发人员的细粒度权限管控,在团队内共享也可以很方面地控制相关权限,确保始终满足最小权限模型的要求。
  从数据我们可以看出,每日构建的次数增长了10倍,每周产生的工件也增长了10倍,但是存储只增加了2倍,存储优化十分显著。最明显的效果是CI构建的时间减少了3600%,这是非常惊人的。当然,这些都是直观的效果,还有一些是潜在的收益,比如新人熟悉整个项目的时间更短了、开发的周期更短、权限控制更加准确,相应地安全性也大幅提升。
  总结
  奔驰所面临的挑战在很多企业中都存在,尤其是大型的跨国开发团队。企业级的高可用,多语言的集中式仓库,跨地域的复制分发以及强大的依赖管理功能都是必须要满足的需求,JFrogArtifactory在奔驰的实践中提供了切实可行的解决方案,实现了DevOps的平稳落地,具有借鉴意义。
  作者介绍
  付辉,JFrog资深工程师,专注软件系统架构及企业IT转型,曾在HPE担任云计算技术顾问、容器架构师、DevOps架构师等,曾服务客户中石油及中石化、摩托罗拉、阿尔卡特-朗讯、华为等等。擅长容器及容器编排技术,熟悉混合云架构、微服务架构、持续集成及交付、DevOps等。长期参与开源社区开发及翻译工作。
(本文于2017-12-29首次发布)
 
分享到:

免责声明:
  1、IT项目管理界发布的所有资讯与文章是出于为业界传递更多信息之目的,并不意味着赞同其观点或证实其描述。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请浏览者仅作参考,并请自行核实相关内容。
  2、本站部分内容转载于其他网站和媒体,版权归原作者或原发布媒体所有。如文章涉及版权等问题,请联系本站,我们将在两个工作日内进行删除或修改处理。敬请谅解!

延伸阅读:

Copyright ©2017-2019 IT项目管理界 版权所有 京ICP备17062359号-4 如转载本站文章,请注明原作者和原发布媒体

本着互联网分享精神,本站部分内容转载于其他网站和媒体,如稿件涉及版权等问题,请联系本站进行删除或修改处理

客服电话:010-89506650 89504891 非工作时间可联系:18701278071(微信) QQ在线:511524637

新闻与原创文章投稿:tougao#cpmta.com 客服邮箱:info#cpmta.com(请将#换成@)

IT项目管理界——我国最大的IT项目管理门户网站,隶属卓橡公司

IT项目管理界官方微信

IT项目管理界官方微信

PMO大会官方微信

PMO大会官方微信