0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

容器化对嵌入式系统的好处

星星科技指导员 来源:embedded 作者:Ricardo Camacho 2023-05-04 10:22 次阅读

容器是一种不断发展的标准化和便携式包装技术。它们最初是为 Web 应用程序和微服务开发和部署而引入的,在 IT 行业中得到了广泛的采用。

今天,我们也看到它们被应用于嵌入式行业,例如汽车电子控制单元(ECU)的开发。这适用于自适应 AUTOSAR 和经典 AUTOSAR,适用于深度嵌入式安全和安保关键系统,其中 C 和 C++ 是主要的编程语言。

容器可在软件开发的任何阶段为嵌入式开发、测试、暂存和生产提供相同环境的快速复制,从而提高整体生产力、代码质量、减少劳动力、节省成本等。

借助容器,组织及其供应商发现了惊人的敏捷性、灵活性和可靠性。公司使用容器来:

缩短软件开发上市时间。

提高代码质量兴趣。

应对管理日益复杂的开发生态系统方面的挑战。

在快速且不断发展的市场中动态响应软件交付试验。

正在使用的一个例子是如何将容器直接部署到当今的现代敏捷开发工作流中,如DevOps / DevSecOps。

在进入细节和好处之前,让我们将这项技术放在上下文中并回答以下问题。

为什么存在容器,它们是什么?

容器如何适应软件开发生命周期?

它们如何影响业务成果?

容器技术

开放容器计划(OCI)是一个Linux基金会项目,由多家公司于2015年建立,旨在围绕容器格式和运行时创建开放的行业标准。该标准允许兼容的容器在所有主要操作系统硬件CPU 架构、公共/私有云等中无缝移植。

容器是与其他组件或依赖项(如二进制文件或特定语言运行时库和配置文件)捆绑在一起的应用程序。容器有自己的进程、网络接口和挂载。它们彼此隔离,并在“容器引擎”之上运行,便于携带和灵活。

此外,容器共享一个操作系统。它们可以在以下任一设备上运行。

Linux、Windows 和 Mac 操作系统

虚拟机或物理服务器

开发人员的计算机或本地数据中心

公共云

poYBAGRTFsGAKcCfAAHpZq7LvJs438.png

图 1:容器化架构

了解容器引擎的作用很重要,因为它提供了以下关键功能:

操作系统级虚拟化。

容器运行时,用于管理容器的生命周期(执行、监督、映像传输、存储和网络附件)。

用于隔离资源的内核命名空间。

还有各种容器引擎,包括:Docker,runC,CoreOS rkt,LXD,CRI-O,Podman,Containerd,Microsoft Hyper-V,LXC,Google Container Engine (GKE),Amazon Elastic Container Service(ECS)等。

其他值得一目了然的概念是容器映像和容器业务流程。

容器映像是具有可执行代码的静态文件,包含容器运行所需的所有内容。因此,容器是容器映像的运行实例。此外,在大型复杂部署中,容器化体系结构中可能有许多容器。管理所有容器的生命周期变得尤为重要。

容器编排通过预配、部署、纵向扩展或缩减等方式管理工作负载和服务。流行的容器编排解决方案是Kubernetes,Docker群和Marathon。

现在,让我们考虑一下将应用程序与其所有依赖项打包在一起的灵活性带来的技术和业务收益,以便它们从一个计算环境快速可靠地运行到另一个计算环境。

技术和业务收益

嵌入式软件系统的开发生态系统可能过于复杂。让大型团队都在通用或相同的环境中工作,这增加了复杂性。例如,开发团队环境由编译器、SDK、库、IDE 组成,在某些情况下,还包括人工智能 (AI) 等现代技术的结合。所有这些工具和解决方案都在协同工作,它们的所有依赖项也是如此,以及不断发展的发布版本,这些版本提供对发现的安全漏洞的修复、对已识别缺陷的修复、许可等等。

此外,组织应该有单独的环境用于开发、测试/验证、生产,也许还有灾难恢复。借助容器,组织可以通过轻松扩展或缩减应用程序依赖项、将开发环境恢复到特定状态以及根据需要推出容器映像来有效地管理所有这些复杂的开发环境,从而确保每个团队成员都能获得一致的开发环境。如今,许多组织在每台开发人员/测试人员计算机上复制开发和测试环境,为人为错误留有余地。

我记得有一次我在桌面上开发和测试了一个嵌入式应用程序,它运行良好,所以我提交了代码。很久以后,QA 团队在验收测试期间通知我该应用程序不起作用。我开始调试报告的问题,但无法产生所描述的问题。

我让其他开发团队成员参与进来,以帮助识别和解决问题,但我们就是无法重现问题。经过几天的调查,与QA团队合作,有时抓住稻草,我们终于开始调查QA的构建环境。

一切都是相同的,除了QA团队更新了他们机器上的操作系统(OS)和编译器版本。在他们的操作系统版本中,对任务优先级处理进行了修改。代码逻辑是合理的,但正在运行的任务被具有相同优先级的另一个任务阻止。将竞争任务优先级中的任何一个减少一个都可以解决问题。

由于代码逻辑是第一个疑似罪魁祸首,因此我们花费了大量人力和时间来调查和解决问题。调查问题需要更多开发和 QA 工程师花费更多时间。我们举行了额外的会议和状态报告,并推迟了其他任务。涟漪效应尚不完全清楚,但产生了巨大的成本。如果已经使用容器对开发环境进行集中管理和部署,它将使开发和 QA 团队的部署环境保持同步,并且可以完全避免此问题。

嵌入式部署策略

可以通过多种方式配置和部署使用容器的软件开发。组织可以根据正在使用的现有工具、所需的自动化级别和团队组织来确定容器的使用并不断发展。

策略可以是在开发人员的主机上使用公共容器来制作、构建和运行其应用程序。这可确保每个开发人员都使用完全相同的构建工具和运行环境的集合和版本。

许多嵌入式团队使用 Jenkins、GitHub、Azure、GitLab 等进行持续集成和持续交付 (CI/CD)。在此示例中,有两个容器。一个容器创建并生成应用程序,而另一个容器运行应用程序。这有助于表达容器提供的灵活性。

组织也可能具有图形分布的团队。拥有容器映像库可以促进共享容器并消除重新发明轮子。这通过为不同目的重复使用现有容器来提高效率。共享容器可确保整个开发供应链的质量。

CI/CD 管道中的嵌入式测试自动化

容器也被用于DevOps工作流程中的软件测试。通过将容器化测试解决方案集成到 CI/CD 管道中,组织可以执行静态分析,以确保符合 MISRA C:2012、MISRA C++ 202x、AUTOSAR C++14、CERT、CWE、OWASP 等标准。

像Parasoft C/C++test这样的软件测试自动化工具提供了一个可以在Docker Hub中找到的容器。此外,还可以执行单元测试,包括语句、分支的结构代码覆盖和/或修改条件决策覆盖率 (MC/DC)。然后,只有在成功完成测试后,软件才会提交到主分支中。

构建过程中的这种容器化部署在代码开发和代码质量方面产生了惊人的效率。在这个快速和自动化的持续集成周期中,让多名工程师并行工作,确保在整个产品生命周期中生成和维护坚实的软件基础。

poYBAGRTFrCAObCGAAFGJmwCems720.png

结论

构建嵌入式实时安全和安保关键系统的组织正在采用包含容器的 DevOps 工作流。其他人正在采用集装箱化战略。那些已经构建了 CI/CD 管道并已经使用它几年的公司报告说,他们已经能够更好地预测软件的交付,并轻松适应需求和设计的变化。

随着生产力的提高和测试成本的降低,开发团队报告说产品质量和上市时间都有所提高。此外,嵌入式组织已通知我们 QA 问题报告和客户票证的可衡量下降。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5060

    文章

    18983

    浏览量

    302286
  • Web
    Web
    +关注

    关注

    2

    文章

    1255

    浏览量

    69300
  • 操作系统
    +关注

    关注

    37

    文章

    6699

    浏览量

    123151
收藏 人收藏

    评论

    相关推荐

    浅析嵌入式Linux容器技术

    嵌入式Linux容器技术一、Linux容器技术Linux Container容器是一种内核虚拟技术,可以提供轻量级的虚拟
    发表于 10-27 08:56

    从事嵌入式软件开发有什么好处

    很多学员都有去了解过嵌入式,但是之后就杳无音信了,这是为什么呢?是大家对嵌入式没有信心,还是对自己没有信心呢?下面小编就来给大家介绍下从事嵌入式软件开发的好处是什么吧。一、从事
    发表于 11-08 08:45

    什么时候获取嵌入式的Servlet容器并启动Tomcat

    什么时候创建嵌入式的Servlet容器工厂?什么时候获取嵌入式的Servlet容器并启动Tomcat?获取嵌入式的Servlet
    发表于 12-20 06:11

    嵌入式系统概论与嵌入式系统的特点

    嵌入式系统概论嵌入式系统的特点:专用性:与具体应用紧密结合,具有很强的专用性隐蔽性:嵌入式系统
    发表于 12-21 08:21

    嵌入式系统安装docker的步骤

    系列文章目录docker 门外初体验–嵌入式系统安装docker(九)文章目录系列文章目录前言一、设计思路二、操作要点三、验证四、总结前言嵌入式开发精髓在于软硬件的结合,如果嵌入式开发
    发表于 12-22 06:27

    如何配置嵌入式Servlet容器

    springboot默认使用的是嵌入式的servlet容器(tomcat):定制和修改servlet容器的相关配置1)修改和server有关的配置(ServerProperties类
    发表于 12-24 06:56

    嵌入式系统原理、设计与应用

    本书系统讲述了嵌入式系统的基本概念、开发的原理及原则、软件和硬件结构的设计、嵌入式操作系统及网络协议栈的总体构架,以及
    发表于 04-25 17:07 2次下载

    嵌入式Servlet容器

    配置嵌入式Servlet容器##Spring Boot里面内置了嵌入式的Servlet容器(tomcat)点击pom.xml->右键->Diagrams->show
    发表于 10-20 17:51 3次下载
    <b class='flag-5'>嵌入式</b>Servlet<b class='flag-5'>容器</b>

    什么是嵌入式操作系统 常见的嵌入式系统有哪些

    、INTEGRITY、OSE、C ExecuTIve  什么是嵌入式操作系统 嵌入式操作系统是一种支持嵌入式
    发表于 10-21 09:36 27次下载
    什么是<b class='flag-5'>嵌入式</b>操作<b class='flag-5'>系统</b> 常见的<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>有哪些

    学好嵌入式开发有何好处?看看嵌入式的特点有哪些吧

      在全球半导体市场快速复苏,消费电子、通信以及嵌入式系统各个应用领域快速发展,嵌入式微处理器技术不断进步的情况下,全球嵌入式系统产业规模继
    发表于 11-03 09:51 14次下载
    学好<b class='flag-5'>嵌入式</b>开发有何<b class='flag-5'>好处</b>?看看<b class='flag-5'>嵌入式</b>的特点有哪些吧

    从事嵌入式软件开发的好处是什么

    很多学员都有去了解过嵌入式,但是之后就杳无音信了,这是为什么呢?是大家对嵌入式没有信心,还是对自己没有信心呢?下面小编就来给大家介绍下从事嵌入式软件开发的好处是什么吧。一、从事
    发表于 11-03 09:51 26次下载
    从事<b class='flag-5'>嵌入式</b>软件开发的<b class='flag-5'>好处</b>是什么

    嵌入式系统设计的问答

    嵌入式系统的概念 嵌入式系统的基本架构 嵌入式操作系统的基本组成和分类
    发表于 11-03 18:06 6次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>设计的问答

    嵌入式系统

    ,这一阶段嵌入式系统的主要特点是系统结构和功能比较单一,处理效率比较低;随着微处理器的诞生,嵌入式系统得到了广泛的发展,这一时期出现了一些商
    发表于 11-03 20:36 11次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>

    应用嵌入式工控主板的好处都有哪些

    在我国加工制造领域和各种生产领域之中相关的自动技术应用之下,要求更多专业的控制主板来提高系统运转的效率,其中嵌入式工控主板凭借着其自身独特的优势,为我国更多的工业应用带来了良好的改变效果,而在长期
    发表于 04-22 16:01 745次阅读

    使用MPU监控创建安全可靠的嵌入式系统 使用MPU监控的原因和好处

    在当今快节奏的世界中,嵌入式系统在各个行业中发挥着至关重要的作用,涵盖汽车和航空航天到医疗和工业自动领域。随着嵌入式系统的日益复杂和关键性
    的头像 发表于 07-21 11:04 812次阅读