MBD工具链的云部署
MBD工具链的云部署
“云技术永远不会用于汽车开发“。说到云部署在汽车行业的应用,业界曾经认为云技术并不适合用在汽车行业的产品开发。知识产权保护、数据的安全、流程不够透明、迁移成本过高、IT部门的保守等种种现实问题成为了云技术应用在汽车开发上的阻碍。然而,随着电动车巨头特斯拉等一众公司的成功,行业的发展趋势变得不言自明: 汽车行业正朝着更加注重软件驱动的方向发展,越来越多的OEM正重新定位,将重心放在软件和技术方面。驱动这样的转变的因素有很多,比如高级辅助驾驶系统 (ADAS),电动出行技术 (E-mobility) ,以及信息娱乐和舒适系统的开发等。总的来说,汽车行业已经开始采用云技术推动汽车软件的设计,汽车软件向着更先进,更智能的方向迈进。本文着重探讨云技术在汽车行业应用的优势和注意事项,以及其在汽车行业软件设计质量保证领域的实际应用。
云技术的关键要素
首先明确云技术应用的关键要素。云技术是一种按需提供计算存储网络或其他IT资源的计算模式。对于云技术而言,算力和应用程序可在任意位置的集中式服务器农场中运行,这些服务器不受空间约束,可以是OEM在本地的部署,也可以是各个地方公共云上的服务器。虚拟机 (VM) 是一种虚拟的计算环境,是云技术的关键资源。在这些服务器当中,使用虚拟机进行计算,并可以根据工作的负载动态部署或撤销。理论上,云计算的算力可以无限扩展。个人电脑的角色也十分重要,是云计算中与云计算中心计算能力进行交互的主要接口。带宽资源在云计算中同样值得提及,为了使云应用程序发挥作用,需要足够的带宽接入使设备可以实现快速的互联网连接,并需要监控实际使用的应用服务,以确保一切正常运行。这些云技术的要素帮助提高了开发工作的灵活度,并使工作更容易扩展。从企业的角度来说,云技术能够帮助企业降低成本,提高效率。
围绕云技术,关键的概念也有很多。容器 (Container) 是一种把应用程序及其依赖项到打包在一起的一种技术,使其可以方便地在云环境中部署运行及管理应用程序。容器技术常见的一种实现被称为Docker, Docker是一种开源的容器化平台,可以帮助开发者将应用程序及依赖项打包,并在支持Docker的环境中运行,使其不受环境差异的影响。对于集群技术,Kubernetes (又称k8s) 是一种容器编排系统,帮助企业管理容器化的应用程序。Automation (自动化),作为云计算的重要概念,其目的在于降本增效。对于自动化管道及构建管道,Jenkins、 Bamboo、Git等等常被提及。Jenkins是一个由Java编写的、开源的持续集成的工具,类似的还有Bamboo。Jenkins主要帮助团队进行自动化的构建、测试和发布过程,提高软件交付的效率及质量。此外,同样需要版本控制系统的支持,比如Git。可以使用Git来追踪项目的变化,协同开发。仓库 (Repository) 用于存储云技术相关的软件要素。IaaS (基础架构即服务),PaaS (平台即服务) 和SaaS (软件即服务) 是云服务的主要类型。IaaS (基础架构即服务) 提供计算存储网络资源,用户可以按照实际使用需求支付费用。PaaS (平台即服务) 提供开发,部署和运用应用程序的平台。SaaS (软件即服务) 提供已经预先构建好的软件应用程序。CaaS (内容即服务) 以提供消费者基础网络资源以及操作系统服务为中心。DbaaS (数据库即服务) 为客户提供数据库的访问,而无需部署或管理底层的基础设施。无服务器 (Serverless) 通常称为功能即服务 (FaaS),是以PaaS (平台即服务) 为基础,提供一个微型的架构,中层客户无需部署配置或者管理服务器的服务,代码运行所需要的服务器服务都由云端平台来提供。对于小型公司来说,可以运用云计算来托管其网站应用程序,无需投资建立自己的硬件软件,从而节省支出。而大型企业也可以使用云计算技术来扩展IT基础设施,以满足业务需求的多样化。
行业机遇与挑战
云技术的关键词和主要运用形式已作过介绍,下面来关注云技术的应用优势和面对的挑战。可扩展性是云计算的首要和关键优势。灵活的工具配置使云计算可以更好地适应不同的工作场景和负载。集中的管理可以实现实时的监控,使运作流程透明且可控。全局的标准化同样重要,云计算可以提供一种更为精简工作流的实现过程,同时其易维护性保障了系统的可维护性和高效利用。云计算的这些优势帮助企业达到降低成本,同时提高透明度的作用。
当然,云技术同样面临一些挑战。首先,由于云计算的应用可能需要用户更改其原本的工具使用模式,这使得用户的使用习惯面临改变,不适应的情况可能出现,用户的接受度成为一大挑战。此外,将项目完全迁移至云端也会耗费一定时间,项目的运行速度或进展可能因此延缓,企业在进行迁移前需要更好的准备工作以应对这些问题。云端工具链的不够完备,一些重要的工具可能还未实现云端化,云工具链的不完备也可能造成困扰,需要技术的持续发展来帮助工具链实现完全云端化。使用云技术还可能会导致企业对第三方服务的依赖,这其中也存在风险。
汽车行业中云部署的经典案例
在汽车行业的软件开发和测试中,云部署架构的实际应用主要有两种: “桌面云”和“过程云”。“桌面云”以用户为中心。在这种应用案例中,最终的用户,也就是PC前的工作人员,通过传统PC触发应用程序,而算力和数据存储在云端的某服务器农场中。从用户体验上来说,基本与传统PC无异。使用的软件与应用以交互的方式被使用。“过程云”则是以过程为中心,在用户端以自动化流程触发应用程序,其触发的自动化管道前文已有所介绍,主要有Jenkins、Git和Bamboo等等工具。最终的结果以报告或事件的方式自动分发。
下面来分析具体架构案例。对于软件开发来说,当开发人员和测试人员向Git仓库 (Git Repository) 提交 (Commit) 一个模型更新或测试变更时,此行为会主动触发 (Trigger) Jenkins主节点上的自动化管道,此自动化管道中包含了一系列对测试环境的描述。当测试环境描述文件发生变更时,Jenkins主节点作为数据中心枢纽被自动触发,负责控制和分发这些更改的管道设置。Jenkins主节点首先向代理节点 (Agent Nodes) 请求部署,随后,代理节点会向云端仓库 (Container Repository) 请求下载相应的容器 (Docker)。如图1所示,Docker仓库中,已部署好适应不同平台 (Windows或Linux) 的容器包。随后,适合系统要求的容器包将被请求并部署至Jenkins代理节点上。容器包(Docker)随后接收到自动化管道发出的命令,继而从Git仓库 (Git Repository) 签出 (Check Out) 相应的模型及配置文件等需要的信息。并根据具体指令进行静态分析。Jenkins主节点随后请求结果,而分析结果将会被发送回Jenkins主节点,并自动存储。最后,Jenkins主节点负责向代理节点 (Agent Nodes) 请求取消部署,关闭不再需要的容器 (Docker),并将最终报告发送给开发或测试人员。
图 1:桌面云设置
而从用户出发,用户端 (User Clients) 也可以进行扩展,通过使用终端服务器来完成开发、测试和分析全过程 (由图2所示)。用户可以是单一或多个开发或测试人员从终端服务器 (Terminalserver) 登录。服务器会针对不同的工作环境和要求匹配不同的工具链并进行设置。如果需要相应的工具许可,可以向浮动许可证服务器发送相应请求,而相应的许可也可以被托管在不同位置。为保证安全,服务器通常配置为冗余或异地冗余的模式。这种情况下,由提交 (Commit) 操作自动触发的Jenkins主节点分发相应的自动化管道 (Automation Pipeline) 到代理节点 (Agent Nodes) ,代理节点 (Agent Nodes) 则可以通过Kubernetes进行扩展,从而由静态扩展转向可扩展的代理,进而实现云环境的扩展。
图 2:可扩展的云端自动化
对于云架构的过程支持,如果需要容器中的软件工具,MES模赛思可以提供相应的容器模板辅助构建配置。
许可模式及工具链的云部署
回顾此前的关键词解释,根据云服务商交付模式的不同,云服务模型主要可以分为:
- 软件即服务 (SaaS)
- 平台或基础架构即服务 (PaaS or IaaS)
软件即服务 (SaaS) 中,用户应用是托管服务的集成部分,按使用量付费是主要的业务开展方式。平台或基础架构即服务 (PaaS or IaaS) 需要关注客户租用的算力以及操作系统的容量。平台即服务 (PaaS) 包括操作系统及数据库,而基础架构即服务 (IaaS)包括硬件和虚拟机 (VM)。使用平台或基础架构即服务 (PaaS or IaaS) 的客户拥有应用软件的所有权和许可,并可以通过定制计划来明确使用成本。而在高工作负载的情况下,额外容量变得非常重要,因此,更为灵活的动态订阅模式能够在超出常规用量的情况下提供额外的支持。
对于MBD工具链来说,行业的主流为基础架构托管。应用及工具链多保存在公司内部,这样的架构有利于对开发过程的监控和灵活调控。对于汽车厂商,基础架构即服务 (IaaS) 是主要的云技术运用方式。动态许可模式是目前行业的需求所在,也是MES模赛思所使用的许可模式。
MES模赛思的工具链目前已完全适配云许可的模式,并可以提供Windows和Linux版本。对于汽车行业来说,许可订阅是主流选择。许可模式的一种是开发者云桌面,用于交互式云环境,为桌面迁移到云设计。对于许可模式的覆盖范围,自动化全球云覆盖全球许可,做到完全自动化和高动态,并且可以在全球任何地方使用,为过程迁移到云设计。同样,目前MES模赛思支持在云端设置MBD工具链,并可为试点项目提供基于云的沙箱环境,并为Docker容器提供配置模板。MES模赛思同样支持在云端设置的自动化管道 (Automation Pipeline) 。
图 3:MES模赛思云服务
如图3所示,从技术咨询,到工具与工作流,最后到构建与迁移,MES模赛思能够为客户提供云部署的全程支持,帮助客户实现工具链的云部署。
MBD工具链的云部署的更多相关文章
- 从大厂DevOps工具链部署,看现代产品的生命周期管理
目录 1. 认识DevOps 1.1. DevOps工具链 1.2. CI 持续集成(Continuous Integration) 1.3. CD(持续交付 & 持续部署) 1.4. Agi ...
- DevOps时代,企业数字化转型需要强大的工具链
伴随时代的飞速进步,中国的人口红利带来了互联网业务的快速发展,巨大的流量也带动了技术的不断革新,研发的模式也在不断变化.传统企业纷纷效仿互联网的做法,结合DevOps进行数字化的转型. 通常提到Dev ...
- 阿里云部署自己的web服务器
阿里云部署自己的web服务器 [外链图片转存失败(img-GIKNTPPx-1564287221547)(https://upload-images.jianshu.io/upload_images/ ...
- Docker,用任何工具链和任何语言来构建任何应用
在看过Docker的两个Hello World的程序后,我们对Docker有了一个大概的感性的认识,那么Docker是到底是什么呢?Docker是一个面向开发者和系统管理员编译,装载,和运行分布式应用 ...
- GitLab + Jenkins + Harbor 工具链快速落地指南
目录 一.今天想干啥? 二.今天干点啥? 三.今天怎么干? 3.1.常规打法 3.2.不走寻常路 四.开干吧! 4.1.工具链部署 4.2.网络配置 4.3.验证工具链部署结果 4.3.1.GitLa ...
- 四种方案:将OpenStack私有云部署到Hadoop MapReduce环境中
摘要:OpenStack与Hadoop被誉为继Linux之后最有可能获得巨大成功的开源项目.这二者如何结合成为更猛的新方案?业内给出两种答案:Hadoop跑在OpenStack上或OpenStack部 ...
- Ubuntu16.04下的2009q3交叉编译工具链的搭建
环境搭建: 1.下载arm-2009q3.tar.bz2源码. 百度云链接 密码: rbui 2.将arm-2009q3.tar.bz2拷贝到/usr/local/arm(没有该目录就 ...
- 配置ESP8266 NONOS SDK时由于工具链版本差异引发的故障
前几天部署ESP8266_NONOS_SDK时遇到了一个看似奇怪的问题,描述如下: examples例程可以通过编译,但烧写到ESP8266模块后,程序无法正常运行,编译和烧写的相关配置均无误.在bo ...
- DevOps工具链
Devops工具链 DevOps实际是一种文化上的变迁,代表了开发.运维.测试等环节之间的协作,因此DevOps工具是非常多种多样的,甚至可以由多种工具组成一个完整的DevOps工具链.此类工具可以应 ...
- Hexo 博客 之 腾讯云部署过程
写在前面 Hexo 博客搭好了有差不多两周时间了,这期间走了很多弯路,跳了很多坑.一些坑自己 bing 到了答案,找到了解决方法,一些坑则是自己摸索出来的解决方法.现在准备写几篇关于搭建流程.搭建过程 ...
随机推荐
- 【JS 逆向百例】猿人学系列 web 比赛第二题:js 混淆 - 动态 cookie,详细剖析
逆向目标 猿人学 - 反混淆刷题平台 Web 第二题:js 混淆,动态 cookie 目标:提取全部 5 页发布日热度的值,计算所有值的加和 主页:https://match.yuanrenxue.c ...
- CLion搭建Qt开发环境,并解决目录重构问题(最新版)
序言 Qt版本不断更新,QtCreator也不断更新.在Qt4和Qt5时代,我一直认为开发Qt最好的IDE就是自带的QtCreator,可是时至今日,到了Qt6时代,QtCreator已经都12.0. ...
- 把Unity的日志保存到文件中
Unity的日志事件 Unity提供了两个日志回调API,这两个回调函数的参数都是一样的,通过这个API可以在真机上把Debug.Log/LogWarning/LogError 日志输出到文件中保存, ...
- 从零开始匹配vim(2)——快捷键绑定
如果说 vim有什么最吸引人,我想vim允许你自由的定义各种快捷键算是一个原因吧.你可以通过绑定各种快捷键来使经常使用的功能更加便利.通俗的讲,快捷键映射就是我按下某个键,我想让vim将它当成另一个键 ...
- 5.1 C/C++ 使用文件与指针
C/C++语言是一种通用的编程语言,具有高效.灵活和可移植等特点.C语言主要用于系统编程,如操作系统.编译器.数据库等:C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统.图形用户界面 ...
- SDK多项目开发与联调
在SDK开发中,因为是往外提供的功能静态库,所以在开发的时候要验证开发的SDK是否功能正常,这里就需要做进行边开发边联调的工作. 下面使用的开发模式是创建一个WorkSpace工作工具,SDK项目和D ...
- uniapp面试题
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- P6824 「EZEC-4」可乐 题解
题目链接:可乐 一开始想着 0-1 Trie,枚举 \(x\) 去写,然后判断就行了.然后想起南京区域赛的 C 题,其实和这个也有点大同小异的感觉,可以用更朴素的办法,找到对于一个 \(a_i\) 而 ...
- 【题解】P5461 赦免战俘
一.题目 现有 \(2^n\times2^n\ (n≤10)\) 名作弊者站成一个正方形方阵等候 kkksc03 的发落.kkksc03 决定赦免一些作弊者.他将正方形矩阵均分为 4 个更小的正方形矩 ...
- Asp-Net-Core学习笔记:3.使用SignalR实时通信框架开发聊天室
SignalR牛刀小试 在MVP杨老师的博客里看到这么个东西,我还以为是NetCore3才推出的新玩意,原来是已经有很多年的历史了,那看来还是比较成熟的一个技术了. 简介 SignalR是一个.NET ...