利用高级模拟设置 IoT DevOps 以实现成功

DevOps 因其有望缩短产品开发周期并实现迭代产品更新,已成为物联网项目中广受欢迎的方法。但并不是说 DevOps 一定适合每一个项目 — 尤其是在您处理关键业务系统时。

问题大部分归根于测试。DevOps 方法旨在加快开发、质量保证 (QA) 和生产团队之间的反馈循环。这在一定程度上是通过在将变更部署到生产环境中时,用自动化 QA 取代传统开发和 QA 流程实现的。

但是,任何出现的测试故障仍需要及时检测和降低影响,比如撤销最新的变更或发布。对于非关键系统而言,这可能是可控范围内的权衡,但对关键业务系统来说,这往往是不可接受的风险。

将模拟用于 DevOps QA

有一种替代方案,就是运行关键业务系统的高级模拟,让 QA 工程师能够在部署生产单元之前在实验室中应用更改并运行回归测试。

如今在很大程度上已经这么做了。“对于软件即服务 (SaaS) 产品之类的非关键系统,免费试用版可用作某种实验室,实际上是最终用户在进行质量保证。” 网络和 IoT 模拟工具提供商 Gambit Communications 首席技术官 Uwe Zimmermann 表示。但关键业务系统需要更稳定的测试。

存在的挑战是,充分模拟生产系统从而及早发现问题。IoT 系统通常由许多子系统(通常来自第三方)构建而成,产生难以预测的相关性。因此,一个组件的任何变更都会对整个系统产生连锁效应,因而必须对整个系统进行经常性的自动回归测试。

另一个挑战是 IoT 系统的动态特性。随着更多节点添加到 IoT 网络中,网络的某些部分可能会比其他部分更快地遇到瓶颈。这会导致非线性的线性性能降级,这需要认真进行容量规划和监测。

模拟器不仅需要解决这些问题,而且还要迅速。以 DevOps 为特征的反馈循环越短,留给测试的时间就越少,因而问题变成了:能以多快的速度重新配置 IoT 模拟器,使其在分配的时间内运行完回归测试?

此外,DevOps 把以前孤立的团队聚集在一起,这意味着隔在开发团队和 QA 团队之间的那道“墙”被推到,使他们能够在测试计划方面开展合作。尽管这样能够加速开发。但也催生出新的压力。“消除这些障碍,意味着将有更多人参与其中,而这会产生新问题。” Zimmermann 解释说。为使工作流程畅通,模拟器必须契合 DevOps 管道,并提供所有利益相关方都可以使用的结果。

为关键业务 DevOps 打造更好的模拟器

为满足这些需求,Zimmermann 表示,模拟器必须在以下四个方面表现出色:

  • 完整性:模拟器必须涵盖需要测试的生产环境的所有方面。这包括能够大规模地模拟复杂场景,例如高流量、网络故障或安全漏洞。模拟器还应能够复现罕见但可能产生严重后果的病理性危机情景。
  • 速度:现实世界场景可能需要几天、几周甚至几个月才能展开。测试仪需要在几分钟或数小时内复现这些场景,这意味着模拟器必须性能好、可扩展性强。模拟器还必须能够应对器件数量的潜在增长和需求的意外猛增。
  • 灵活性:优质的模拟器必须能够适应任一自动化工作流程流水线。该工具需要具有灵活的 API,并支持多种编程语言。此外,模拟器还应足够灵活,以适应 IoT 应用特有的迅速变化的技术。
  • 确定性:模拟需要复现问题,以便多个团队能够共同调查和解决这些问题。协作对 DevOps 而言至关重要,它使具有不同技能集和系统知识的人能够访问同一代码。每项变更都需要审查、验证和测试。

旨在应对挑战的 IoT 模拟器

因此,Gambit Communications 开发出 MIMIC Simulator,专门用以开发和测试大规模网络应用程序。这款工具长期用于思科、IBM、惠普和英特尔等大型组织的网络应用程序,现在也越来越多地用于 IoT 应用程序。

MIMIC Simulator 的核心目标是捕获与被测系统的实际交互。在 MIMIC Simulator 中创建模拟(“模型”)往往需要记录真实设备(或环境)与被测系统的交互。在此阶段,MIMIC Simulator 从记录中推断出基础模拟。

随后,可以对基础模拟进行定制以实现所需效果,如详尽的测试案例、边界条件、缩放、错误处理等。每个场景都模拟某个特定条件,而 MIMIC Simulator 可以在任何数量的场景中运行,例如,在回归测试套件中。

“如果系统无法分辨模拟与真实环境之间的差别,模拟就成功了。” Zimmermann 说道。

MIMIC Simulator 以其几乎与 CPU 能力成线性扩展而著称。该工具可以模拟单个工作站的多达 10 万台设备,而在多主机环境中,可以模拟超过 100 万台设备。它旨在与实验室中的设备集成,实现对物理和模拟实体的实时控制。

英特尔® 处理器是这种灵活性的关键。根据 Zimmermann 所说,大型模拟需要使用至少 32 个内核和 256 GB RAM 的英特尔® 至强® 处理器。许多客户在多个主机(无论是虚拟主机还是实体主机)上运行 MIMIC Simulator,创建更大规模、更为动态的模拟。

据 Zimmermann 介绍,在任何模拟中,关键问题都是被测系统的接口。为确保能够支持 IoT 系统,Gambit Communications 添加了一系列通用网络协议,如 MQTT、CoAP 和 HTTP/S。从编程角度来看,MIMIC Simulator 可以用 Java、C++、Go、Python、Perl、TCL、JavaScript、PHP 或 OpenAPI 进行控制。该工具支持通过 Docker 进行编排,以融入工作流程自动化管道。

部署模型同样灵活。Zimmermann 报告说,大约 60% 的用户在本地运行模拟,10% 的用户在空隙实验室运行。其余用户至少在云端运行部分模拟,以尽量降低成本。

面向 DevOps 工作流程的关键业务模拟

这种开放性和灵活性,加上 MIMIC Simulator 的速度和确定性,可以使关键业务工程团队的 DevOps QA 和回归测试成为现实。除了实现迭代更新和缩短开发时间外,各大技术机构还利用该平台进行各种活动,从技术培训和销售演示到 IoT 设备的初期硬件建模,无所不包。

现在,凭借开展大规模高级模拟的能力,关键业务系统及其构建它们的工程师终于可以像消费类产品多年来一样,利用现代工作流,充分享受迭代式 IoT 更新范式带来的好处。

让数字任务转型开始吧。

 

 

本文由 insight.tech 的副主编 Christina Cardoza 编辑。