请选择 进入手机版 | 继续访问电脑版

IT运维管理,ITIL,ITSS,ITSM,ISO20000-ITIL先锋论坛

 找回密码
 微信、QQ、手机号一键注册

扫描二维码登录本站

QQ登录

只需一步,快速开始

艾拓先锋
搜索
查看: 302|回复: 0

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

[复制链接]
来自- 巴西

参加活动:0

组织活动:0

发表于 2018-10-9 10:38:26 | 显示全部楼层 |阅读模式 来自- 巴西
本帖最后由 adminlily 于 2018-10-9 10:40 编辑
- b# C* g: m  v" K7 L6 o
9 ]8 r3 I+ F/ n! h1 D
1.png

1 U$ G* m% ?- n& [/ {4 B( @! c& y

Siva Mandadi 是来自奔驰北美研发中心的用户交互部门的一名 DevOps 工程师,他在一次分享中介绍了奔驰通过 DevOps 落地,加速打造未来汽车的实践。本文根据视频资料整理而来,原视频地址:


/ k1 l/ E+ `& y' ?# J) E* H" {& E


" Z9 E8 i2 A5 m+ o+ g0 Z. W% O

https://www.youtube.com


' _' \9 `! j; Q& \- z
- m$ Q0 j% R9 k; w" q) V8 z
背景介绍
, s. p4 P* y) D$ c; f" _8 Q8 z; q
: E9 |7 V3 ^" }0 T4 O

奔驰对于未来汽车的定义涵盖了很多方面,包括车载音乐、导航、自动驾驶等等,涉及到的实现技术也是多方面的,如机器学习、物联网等前沿技术。这些技术表现在实际应用上,便有了一种“未来感”。举个例子,未来汽车可以根据天气情况,切换车内的主题,比如颜色、音乐等,让车主时刻都保持舒适的状态;或者,如果车主开车回家,在离家还有半小时车程的时候,可以通过车给家里的厨房电器发消息,开始准备煮一顿可口的饭菜。


  Q+ ]+ z6 X, O& `* a# k) _& O


0 m% e2 ^3 w0 k4 Y

最开始,整个用户交互部门(视频主讲人所在部门)大约有 300 名工程师,他们来自不同国家,分布在美国、德国和印度等不同地域;团队每天大约会执行 60 次构建任务;每周有超过 1000 个、约 1TB 数据量的自研件产生;平均 CI 构建时长为 6 小时。

1.png

$ P" H9 c0 O9 Z. I/ p0 U4 X, B

* Q4 ?9 W" [# X. V0 I' M
+ X% u! E$ N/ P+ [6 [: F. G, F
( n# [9 ]. s, d) z8 D; z

2 z, Q/ v9 n4 r/ {3 W* C& T% p7 n面临的挑战

* Y2 w; a. w5 S* }

2 `% K" e) q6 S& X8 D6 e

随着业务的发展,团队面临着巨大的挑战,主要是在工件的存储与共享、依赖管理、编排、持续构建和仓库不同等方面:


5 i! k, T) N4 d" q; O


7 |& `$ d) C4 E1 r+ ]# n

  • 自研件存储:每周会产生超过 1000 个自研件,需要耗费近 ITB 存储空间,随着时间推移现有的存储资源很快就出现枯竭。


    4 Q* y% U6 a) z% a! G; d) O

% z7 x7 K7 n8 v  e" V+ d
1 X" @" U) V! W; ~2 u( P
  • 自研件共享:团队成员分布在世界各地,上传和下载的速度成为瓶颈,开发与 QA 人员通常会抱怨下载速度太慢。比如印度和德国的开发者需要上传,美国这边的 QA 需要下载进行测试就会遇到这种情况。

    - s4 f# _& Q$ c
( I( a9 X: m, ~  V

2 W2 Y0 X9 j/ Q& V' K: z
  • 依赖管理:庞大研发团队的依赖管理也是一个非常头疼的问题,某些功能依赖的软件包在不同的模块中存在着不同的版本,而维护复杂的依赖关系是非常有挑战的一件事情。团队主要使用 Java 和 C++ 开发,并且使用了 maven、conan 作为依赖管理工具。


    ; A5 ?3 R8 N8 K% d6 o0 f: C
6 p  P* ?% ]* `
/ i- b7 E* T: }! r4 q
  • 持续集成:持续集成对于这样一个大团队是必须的,每一次的提交都必须通过持续集成(CI)确保提交不会带来任何问题。团队使用了 Jenkins 和 Bamboo 做一些持续集成相关的事情,值得一提的是使用了 Docker Container 作为 Jenkins Agent,通过配置文件根据负载动态创建 Build Agent。然而,由于 Docker 镜像非常大,而且处于不同的地域,导致整个过程也效率较低。

    8 H! Y; \- g* {' U+ U$ h) R, e

1.png

7 |) N: [1 e9 N% f# b# L1 W


" z# h- T; w0 F1 Q  c1 d

在遇到上述挑战的同时,在 CI 构建阶段,下载依赖的时候达到 5-6 个小时,这也是难以接受的,并且由于 Artifact 非常大,也会使得整个系统运行缓慢。一种解决方案就是使用 NAS 存储。但是依然存在一些新的挑战:


+ `8 P, A6 i8 G$ x+ d) U

% F* I* `" Y; E2 [. E+ ]

  • 价格昂贵。

    5 I$ t- [% F1 e. \6 o" I0 N6 M

* l9 N- q; p2 L1 E/ g9 m3 o7 Y4 e2 ^6 m  |

, s% Z* v% D( p, d/ O9 C* R4 T
  • NAS 存储虽然能在一定程度上解决问题,但是相关的设备和维护费用非常昂贵。


    0 {2 n/ E& T0 O! p' O% z# V# C9 m3 f/ P

# k; e7 s4 b" f' e! v' a" @) f
: L$ \- n* g* s# p( m& O9 D4 f. f
  • 构建次数的限制:由于构建的自研件增长非常快,然而存储空间是相对有限的,所以,实际情况下需要限制 10 次构建。

    + m# B/ d6 f/ v8 R% K  m% |

" P9 E5 u1 g) n9 b+ r2 Z: p+ j

9 ^) W( H$ v0 B7 |
  • 共享:共享的问题依然难以解决,尤其是跨地域的共享。


    , |; G" @8 L4 {3 u

1.png


, J7 U8 \5 x1 t/ |/ [. Q  \/ w4 _

& @! C: F! s( m! s4 Q5 G

/ C- F5 b3 N4 ^. B9 \. n: o' t% u8 ^; ?' s
* s- z1 l/ v! [) K8 R! a
解决方案
8 I) T* V  w& j1 b

5 Y* R: |+ b6 A6 {% g9 O# D" {) `

在对挑战进行分析之后,认为有如下两种可选的解决方案。一种是增加存储,另外一种方式是采用 Nexus,但需要高可用架构和 REST API 的支持。

1.png


; v# D1 P9 J5 R6 L+ F


" L$ Y3 w7 Z0 J9 F8 B4 [" n

这两种选择无疑都需要一个强大的 DevOps 工具。对于跨国研发团队来说,高可用是非常重要的特性,多语言的仓库也是必须的,增加存储显然难以解决根本问题。Nexus 有多语言支持,但是在高可用和 REST API 方面都需要额外的维护。在调研了众多相关产品之后,奔驰的研发团队认为 JFrog Artifactory 是非常不错的选择。

1.png

! v5 @' S4 j) J0 K& H6 W' ?7 d

3 h9 e- S% [6 o4 a1 Z; L% R

JFrog Artifactory 提供了非常丰富的功能,比如统一的仓库、一致的 UI、企业级高可用支持、基于 YAML 的预定义配置、丰富的 REST API 支持以及良好的客户支持等等。Artifactory 对开源工具均可以无缝对接,尤其是 Jenkins,因此用户原有的习惯几乎不需要改变,使用之后,整个 DevOps 环境有了很显著的变化。


. U4 _* w$ L- P* @9 b$ W


" t2 ~. F  U; O' H4 V: r  d0 R

除此之外,Artifactory 还有诸多非常强大的特性,如 DevOps 全生命周期元数据记录、AQL(Artifactory Query Language) 查询语言、跨语言的服务正向和反向依赖解析、结合 Xray 的漏洞扫描及影响力分析等等。


0 z3 Z/ T/ s* h2 W


$ N5 J% M7 b0 u: V

1.png

奔驰通过 Artifactory 实现了统一的依赖管理和集中式的软件包仓库,结合其强大的正反向依赖解析,轻松解决了依赖关系不清晰的问题。Artifactory 的异地同步复制解决了软件包上传和下载的性能瓶颈问题,由于具有缓存机制,使得虽然每天的构建频率增长十倍,但是构建时间却大幅下降。在自研件存储方面,通过 Artifactory 的存储优化节省了大量存储空间,且通过自动清理机制,减少了很多管理成本,也降低了人为操作的风险。

$ J9 u: c% \9 b


, Q& d& J5 v+ B& d/ H

全球分布的研发中心和人员的角色变更,使得权限的管控变得异常复杂,由于 Artifactory 集中管理了所有语言的二进制包,奔驰在使用 Artifactroy 后轻松地实现了对各地研发人员的细粒度权限管控,在团队内共享也可以很方面地控制相关权限,确保始终满足最小权限模型的要求。

1.png

# b, m* H1 ?4 z* ?% t


+ t2 I. B7 a) @

从数据我们可以看出,每日构建的次数增长了 10 倍,每周产生的工件也增长了 10 倍,但是存储只增加了 2 倍,存储优化十分显著。最明显的效果是 CI 构建的时间减少了 3600%,这是非常惊人的。当然,这些都是直观的效果,还有一些是潜在的收益,比如新人熟悉整个项目的时间更短了、开发的周期更短、权限控制更加准确,相应地安全性也大幅提升。

1.png


8 \6 \1 V% Y  ~# G2 ]. y* d; O4 k7 i
总结
7 @7 _* a, [5 [3 @/ @% n! O

- S" U  p: I5 Y" o6 u

奔驰所面临的挑战在很多企业中都存在,尤其是大型的跨国开发团队。企业级的高可用,多语言的集中式仓库,跨地域的复制分发以及强大的依赖管理功能都是必须要满足的需求,JFrog Artifactory 在奔驰的实践中提供了切实可行的解决方案,实现了 DevOps 的平稳落地,具有借鉴意义。

$ s: z4 U2 K  e& D" B! Q2 S
( K: d7 j' O5 ?* g
原创:付辉,JFrog 资深工程师,专注软件系统架构及企业 IT 转型,曾在 HPE 担任云计算技术顾问、容器架构师、DevOps 架构师等,曾服务客户中石油及中石化、摩托罗拉、阿尔卡特 - 朗讯、华为等等。擅长容器及容器编排技术,熟悉混合云架构、微服务架构、持续集成及交付、DevOps 等。长期参与开源社区开发及翻译工作。0 r) I- c; V4 I( P' x( }: o* c0 ~  E

本版积分规则

选择云运维时代的王牌讲师-长河老师,助你轻松入门ITIL Foundation培训课程

QQ|小黑屋|手机版|Archiver|艾拓先锋网 ( 粤ICP备11099876号-1|网站地图

Baidu

GMT+8, 2019-2-24 05:51 , Processed in 0.214196 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表