我们以“嵌入式软件敏捷开发方法赋能汽车行业”为主线推出的系列内容,在第1期重点强调风河的“Linux(操作系统)+Container(容器)”解决方案提供了深厚的技术基底和创新DNA,致力于支持汽车开发制造企业持续拓宽行业边界,不断化想象为现实,为产业转型带来强劲动力,赋能更安全、更绿色、更加便捷的交通出行未来!
容器技术能够为汽车软件带来非常多的好处。例如,这种技术提供了标准化的环境,使汽车嵌入式软件和硬件实现了解耦,也实现了软件模块之间的解耦,同时提高了软件组件的重用率,由此可以在汽车软件全生命周期里带来非常多的效益。
作为本系列内容的第 2 期,我们来探讨容器化技术最立竿见影的好处之一,这就是显著节省了汽车软件OTA更新的成本和时间。
化整为零,搭建基于服务的架构
在传统的系统中,即使你按照SOA的构架,软件最终仍然被编译成一个整体。如果你对其中的某个部分做出改变,编译之后的整个二进制影像还是必须完全替换。但是,当你采用容器架构,就变成了基于服务(Service Based)架构,例如座舱、速度表、导航等等,都变成了一个一个的独立系统。从 OTA的角度来讲,它们都可以去单独进行开发、测试、更新。这样一来,每个模块开发的工作量就比较少,而且能够独立推进,有利于分工协同。如果某个部分发生改变,也可以单独更新。
同时,我们把一个复杂的系统像搭积木一样分成许多小块,这样既便于维护,又能进行敏捷开发、灵活部署。以前的项目流程都是瀑布式的开发,经常会造成一个模块做完才能做后续的模块。当我们把功能切分成小单元,就可以分配给不同的人分头去做开发,最后再集成起来。这样,一个模块单元如果需要更新,就不需要牵扯其他的模块单元。如此一来,不仅提高了协同开发的效率,还能提高软件的复用度。
当然,如何把一个规模较大的系统拆分成基于服务(Service Based)的小模块,确保整个工程项目的开发具有最佳的协同效率,以及未来更新维护具有最低的成本,这需要一定的经验技巧,而风河公司可以提供咨询服务,帮助企业客户解决这个问题。这种拆分工作就叫微服务化。我们可以让每个服务自成单元,不仅能独立运行,而且能独立更新。同时,我们可以通过CI/CD 工具在云端去更新。这样,如果发现任何问题,都可以随时修正,并保证服务不中断,从而给客户带来很多的价值。
化整体更新为模块更新
如果不能实现软件部件模块之间的解耦,那么在进行软件OTA更新的时候就必须向车辆下载整个软件映像。采用风河所提供的容器技术之后,就只需要下载发生变更的那部分软件部件的容器映像。更进一步,如果某个容器映像是被多处重复使用的,那么也只需要下载一次,因此更进一步节省了下载数据量和带宽。
目前,许多汽车制造商也都能提供软件 OTA,但基本上都必须都全车软件进行,即便是只有部分模块发生变更,也需要更新全套软件,因此所需要花费的时间和网络流量都非常大。
这里我们给出一个风河容器解决方案的实际场景——有一位开发工程师,他修复了一个Bug。他把修改后的代码提交到远程代码仓库,此时云端的平台就可以监测到这个代码提交,然后推出一个Pipeline来启动编译,再进行打包、上传至 OTA Server,最后自动推送到用户手中的汽车上。从这个过程可以看出,开发工程师只需做完代码提交,其余的工作,包括更完善的测试工作,都是自动完成的,而且非常顺畅高效,一两分钟即可完成。
不仅能节流,更能开源
可以说,容器技术给汽车软件乃至整个汽车产业带来的价值是革命性的,这实际上是在重演IT 软件发展史上已经发生过的从瀑布式开发到迭代式开发的变革。在 IT 软件领域,DevOps早已如日中天,成为企业数字化的核心能力之一,也是IT交付和运行的基本要求。在此过程中,以容器化为代表的云原生技术极大加速了这一进程。
DevOps的独特之处在于开发、运营、质量工程和安全团队的协同工作,在新产品推出和后续更新迭代所涉及的所有任务中承担着灵魂角色。风河的 Linux+容器技术解决方案,目标就在于让 DevOps 在汽车业真正落地。
从瀑布式开发到敏捷开发,再到目前的DevOps,软件开发流程正在向自动化、便捷化和智能化的方向发展,这不仅会大幅提升开发效率、降低软件维护与更新成本,起到“节流”的作用,更会让汽车企业在功能快速迭代的过程中更加及时地掌握用户需求,从而获得极强的“开源”能力。关于这方面,让我们留待本系列内容的第 3 篇来探讨。
0 comments:
Post a Comment