大家好,热烈欢迎来到JFrog swampp 2021。我叫Alexander Denk,是BMW的DevOps工程师,负责我们的项目Codecraft。我是我们JFrog产品的服务所有者,以及GitHub上的副服务。hth华体会最新官方网站我的第一次编码经历始于2002年,当时我开始用Visual Basic进行覆盖。从那以后,我获得了计算机科学硕士学位,然后加入了一家研究公司和一家食品初创公司,2018年晚些时候,我最终在宝马公司担任现在的职位。
正如你在上面的图片中看到的,这不是偶然的。这是近30年前的我,坐在我的第一辆宝马汽车里,这始于我对汽车的热爱。今天,我想谈谈我们的项目Codecraft,它是数字核心软件开发的驱动力,将创新提升到一个新的水平。在我们过去,当你考虑建筑成本时,主要是关于弯曲钢材,但今天我们几乎所有东西都是数字化的。
如果你仔细看这幅图,你会发现,我们有机器人,我们有监控和记录,我们有一个完全数字化的供应链。但这不是我今天的重点,因为今天我想谈谈汽车本身。对于我们研发部门来说,这主要是关于硬件和软件的,我们关注的是数字汽车。
今天,这两种物质在我们的车上都有很多。例如,我们有BMW操作系统8,它支持远程软件更新,与庞大的后端连接,并提供了许多驾驶辅助功能,我们今天已经走向高度自动化驾驶。我们有一个数字钥匙,我们有一个支持自然语言处理的个人助理,还有一个支持手势控制的人机界面。
除此之外,我们还有很多应用程序。在这个例子中,你可以看到宝马的头部单元,这是一个在每个领域都有巨大增长的例子。当我们在90年代初开始我们的第一个导航和娱乐方案时,我们的主机有16mb的RAM。今天,它几乎是当时的1000倍。我们在每个领域都看到了增长。
我们在硬件和软件上都看到了这一点,我们现在有了服务和后端,这在15年前是不存在的,所有的服务都在向各个方向扩展。如果你看到这张幻灯片,这是我从宝马集团的投资者报告中选来的,在2021年5月初,我们宣布了2025年的新克劳斯,这是对我们过去毫不妥协的电动化、数字化和循环化的参考。数字化对我们来说是公司的目标之一,不仅是我们部门的目标,也是整个公司的目标之一。为客户推动创新是我们使命的重要组成部分。然而,开发者呢?首先,我们需要解决一些问题。
为什么汽车行业与其他科技公司不同?其实很简单。正如你在这里看到的,很久以前,我们有一段历史。对于大多数白手起家的科技公司来说,情况并非如此。但对我们来说,我们已经背负了很多过去,我们还有一个主要的表达方式,没有实验。所以这也是有充分理由的,因为安全是至关重要的一部分。建设事业主要是关于与供应商合作的整合。
我们有很长的开发电路,远离CI和CD需求。基本上,我们过去开发一辆车需要3到7年的时间,而且严格的规定也使我们能够拥有高质量的功能。因此,基本上可以说SVN已经足够好了。然而,正如我们在之前的幻灯片中看到的,我们有一个数字优先的方法,要实现这个方法,成为一流的是一个艰难的要求。最重要的是,我们有新的科技竞争对手,比如特斯拉(Tesla)或Neo。我们什么都有。
正如我们之前看到的,我们在后台有很多微服务。我们在车里有很多容易使用的东西来处理不同的东西,最重要的是,我们在车里和车后面有很多软件。我们希望避免负面新闻,因为软件故障导致一辆车无法进入现场。老实说,不能发生在我们身上,也不应该发生在我们身上。这也与安全有关,因为安全是防止人们被杀的一部分,但另一方面,安全也变得越来越重要,例如,数字钥匙可能不会被用来偷你的车。那么,以SVN为例,它真的足够好吗?
答案很明显。不,它不是。所以,有了所有这些方式,让我们来到未来,这是为我们Codecraft。Codecraft是我们的HI软件生产工厂。它基本上是几个商业和开源服务的集合和集成。它容纳了多个ECU项目,这些是当前一代的ECU,目前正在推向市场,也将容纳下一代,如你之前所看到的Neue Klasse,它将于2025年及以后发布。
我们尽量给项目留下选择的权力,然而,我们希望提供统一的体验,统一的过程。这在细节上意味着什么?因此,我们提供了一个高质量的工具链,我们提供了最佳实践,我们希望为项目提供尽可能多的指导。但尽管如此,我们不希望它们需要跳出自然生态系统。例如,一个Android开发人员可能习惯于使用Carrot或Workitem,这对我们来说很好,因为如果你被迫使用GitHub,它不会像预期的那样工作。
然而,我们不希望每个项目都有一个完全脱离野外的工具链。所以这对我们保持所有东西的直线和对齐是非常重要的。这句话的原话是什么?我们正在使用10,000个cpu来并行运行数千个GFCI drop,这导致每天数以万计的OCI行程。所有这些都使我们能够处理各个方向上不断增长的数字中日益增长的复杂性。那么是什么让Codecraft与众不同呢?
嗯,我们努力成为班里最好的。因此,我们需要一个现代化、快速、安全、有保障的发展环境。它必须对开发人员具有吸引力,并且必须支持良好的协作。因此,我们过去开发软件的方式对今天的我们来说是没有选择的。正如你在上面的图片中看到的,它可以被比作植物。我们在植物中有并行,我们有协作,我们有乐趣。
关于Codecraft的架构,我想先简要介绍一下我们的技术堆栈和核心投资组合。所以没有什么大的惊喜,我们在多个Kubernetes集群上运行Codecraft,我们利用虚拟机和所有在私有云上和私有云外运行的东西。我们通常使用的是最先进的开源软件。
例如,用于监控和记录的ELK,我们还有Prometheus和Grafana。对于监控,我们有很多交叉服务,例如,覆盖SSL质量,状态和支持主题。当然,我们有用于二进制管理的JFrog产品,还有GitHubhth华体会最新官方网站作为整个平台的主要驱动力。而且,不太常见的是,我们有一个唯一的CI和CD系统,以及我们自己的CI库。此外,我们还使用了相当标准的Git工作流。
正如你所看到的,它只是提交代码,发出一个pull请求,然后运行查看眼药水并传递结果。这是我们使用的非常正常的Git工作流,这很好,因为每个开发人员都熟悉它。过去几年我们面临的主要挑战之一是,我们在所有领域都取得了巨大的增长。例如,我们完全预计在首次使用时就会有增长,因为我们从新平台上的新项目开始,但在2020年及之后,我们也会看到CI下降的数量和用户数量的大幅增长,这主要是为了开始生产。
然而,增长并不总是最好的事情,所以我们尽量限制它,因为规模并不总是最好的选择,但规模仍然是需要的。幕后的代码编写。我们尝试着吃自己的食物,所以我们尝试着完全在平台本身开发平台,所有的东西都是用最先进的技术开发的。举个例子,我们大量使用所有东西作为代码。在左侧,您可以看到Artifactory的简单存储库定义示例。
对于正在开发更简洁代码的每个人来说,这是非常熟悉的。所以比起花哨的人工智能,我们更喜欢这个,因为它可以自动检查。这可以自动验证,可以自动部署,而且,每个开发人员都很熟悉,开发人员是我们平台上的主要客户。所以一切都以开发者为中心。
为了获得最好的体验,对我们来说,使用我们的客户正在使用的东西是非常重要的。今天,我想主要谈谈Codecraft中三个不同的或不寻常的主要构建模块,这可能是你意想不到的。首先,我们有了OpenStack环境。我猜,这不是你们期望我谈论的内容,因为今天,我更想谈论AWS、Azure、阿里巴巴或任何其他公共云。然而,出于各种各样的良好原因,我们仍然在使用外部私有云。
例如,我们有固定的成本,我们有固定的资源,我们能够针对用例进行优化,这将导致更低的成本和更低的资2022世界杯阿根廷预选赛赛程源,这将是公共云环境的一个安静的环境。如果你去到大的规模,我们肯定是在大的规模,这不是那么容易,例如,在公共云中产生1000个虚拟机,并保证在一定的时间框架内响应。还有一个主要问题就是最好的朋友。所以这是一个非常大的优势,走到你的邻居的桌子上,然后告诉他,好吧,我们需要这个,或者我们那里有一个问题,你会得到直接的帮助。在公共云环境中并非总是如此。
然而,你必须有一个很大的学习曲线,我们有这个,这个也可以在我链接到这里的源代码中查找。您永远不应该忘记,始终使用最适合您的用例的东西。例如,我们也使用AWS。所以OpenStack不是我们唯一的解决方案,但对于我们大部分的基本负载来说,它是最好的解决方案。接下来我要讲的是罗勒。这是一个p链接系统,这可能也是没有预料到的,因为开发主要使用例如Yocto或Oss来制作文件。
尽管如此,我们还是想介绍罗勒,因为我们对它有非常奇妙的体验。对于我们来说,basil允许更快的增量构建链,这主要是因为它允许分布式缓存,并且只重建真正需要重建的部分。我们已经在basil中集成了依赖关系管理,并且工具和依赖关系直接冻结在存储库中,这允许我们有可复制的构建,这对于开发安全关键软件非常重要。我们得到了Ripple项目的支持,这对我们来说非常重要,因为我们有很多供应商在开发相同或类似的组件,他们不允许看到彼此的代码。上路的第一辆罗勒汽车是几个月前推出的新宝马X。
如果你看不出来,这是快速正确的,选二。我想说的最后一个组件是Zuul。Zuul不应该与Netflix的Zuul混淆,后者关注的是微服务,我们的Zuul是用于CI\CD的,是由OpenStack社区提供的,旨在成为Jenkins的替代方案。它确保大多数始终是绿色的,因为它防止我们将坏代码合并到主线中。它还支持跨项目依赖关系,并为基于Ansible的剧本提供了一个简单且可重用的风格来定义比喻。在我们的例子中,我们在上面也有一个CI库,它有Ansible剧本和Ansible角色,它涵盖了你能想到的所有CI建议的一个相当大的基础集。
例如,从分布式构件设置中上传或下载构件。此外,宝马也积极参与Zuul的开发。核心开发人员之一是我们团队的成员。一如既往,在开源社区中,贡献和集成总是受欢迎的。让我们来总结一下。
正如我们在前面的幻灯片中所看到的,宝马集团投资者关系的演示文稿,Neue Klasse 2025应该是毫不妥协的电动、数字化和循环。要实现这一切,最好的就足够了。没有创新,我们就无法像10年前在汽车行业那样开发软件。所以我们需要一个现代的、快速的、安全的、对开发有吸引力的工具链,因为我们在未来需要雇佣很多新的开发人员,它必须是协作的,正如你在上面的计划中看到的那样。
非常感谢。现在有提问和回答的空间了。