剖析物联网解决方案

物联网(IoT,Internet of Things)是一个强大的变革力量,它是数字商业利用来融合物理与数字世界的基石。

麦肯锡公司(McKinsey)估计,到 2025 年,物联网每年可创造 11.1 万亿美元的经济价值。可以理解的是,为交付新的物联网解决方案,通过将产品与服务进行连接来提高运营效率并增加营收,IT 领导者随之面临着越来越多业务上的压力。

最近,我与客户进行了相当多的讨论 —— 讨论如何开发物联网解决方案,以及如何建立正确的架构。当我们深入研究这个主题时,我发现,几乎没有任何在线材料能给我提供一个物联网解决方案架构的,端到端的概览,或者关于物联网应用程序开发的最佳入门范例。

所以,我开始描绘这幅蓝图,将其与客户(Mendix)在该领域所做的项目联系起来,并提炼出一些最佳范例。

我将用三篇博文讲述这个故事,先从描述对物联网解决方案的解剖开始,然后就是关于平台在简化物联网解决方案开发中的作用。最后一篇文章将会介绍一些关于架构的建议,以及定义增量物联网战略的最佳范例。

开发物联网解决方案需要什么?如何建立起正确的架构?物联网解决方案的设计与典型的 IT 解决方案大相径庭,因为它将运营技术(OT,Operations Technology)的物理世界(传感器、执行器和通信设备),与信息技术(IT,Information Technology)的数字世界(数据,分析,工作流,以及应用程序)连接了起来。

用例和运营需求的多样性创造了一系列物联网终端,通信协议,数据管理和分析技术,以及相应的部署拓扑(Deployment topologies)。

而这些仅仅是为了打下基础。物联网的真正价值源自将数据转化为洞察力(Insight),并使其能够付诸实施,以推动更智能的运营或推出新产品和服务。通过结合传感器数据、保存在企业系统(如 ERP,CRM 和 PLM)中的数据,甚至是第三方服务(如天气和交通)数据,使得用户可以根据自己的想法行事,这就激发了用户对物联网应用程序的需求。

物联网解决方案看上去是何种模样?

尽管多样化,但还是有一些跨用例的共性,可以用于图解说明物联网解决方案的剖析结构。采用分层方法描述剖析结构有助于从事物层面直到物联网应用,即从各个层面识别相关的服务和技术。

物联网终端

这一层涵盖了连接事物和进行通信所需的物理世界和操作技术:

  • 事物:真正的物联网终端显然是那些应该连接的东西,无论是汽车,喷气发动机和照明系统这样的物质产品,还是其他诸如家畜,农作物,人类或空间区域(如房间或室外空间)此类 ”事物“。
  • 传感器:收集并报告他们所连接的事物的实际状态数据。传感器可以进行安装,或嵌入到物体中,从而监测温度,压力,光线,运动,位置等数据。
  • 执行器:通过从物联网应用程序或其他系统所获得的信号(如打开阀门,打开/关闭相机、电机或灯)来控制产品的物理或逻辑状态。这包括发送到嵌入式软件的命令,例如重启或更新配置。
  • 代理:在一组物联网设备之间进行调解的组件,它们同时还作为传感器/执行器和云端之间的桥梁,决定发送什么数据以及何时发送。反过来,它们也处理来自云端的命令和更新。
  • 边缘计算设备:在网络边缘处理物联网数据的分布式体系结构。通过网络传输大量的原始数据会给网络资源带来巨大的负担。在某些情况下,在数据源附近处理数据,并仅通过网络将有价值的数据发送到云端会更高效。
  • 通信:对于物联网设备之间的通信,物理层与通信协议之间是有区别的。就物理层而言,网关,移动设备,网状网络(Mesh network)以及直接设备或广播设备的通信是可选方案,根据实际用例可能适用或不适用。物理层的选择将决定哪种通信协议最为合适(例如 MQTT,COAP,HPPT(S),AMQP,ZigBee,Z-Wave 等)。

物联网软件

往下一层就是(云端)平台,它们将基本的物联网软件服务整合到一起,从而安全地管理物联网终端、表示连接物的 “数字双胞胎”、处理和分析数据,以及提供消费和公开服务的 API:

  • 设备管理:简化配置、服务开通(Provisioning)和操作终端设备的步骤。它支持监视、测试、更新软件,以及对连接设备进行故障排除。
  • 数字双胞胎(Digital twin)管理:对许多物联网用例来说(尤其是在工业物联网中),定义连接物的数字双胞胎是很有价值的。这可能与物联网平台中,从物理事物到逻辑标识符的一一映射那样简单,或者像将具有组件/系统分层结构的资产工程视图映射到一个实例以及类级别(Class level)的,代表该资产的物理设备一样复杂。
  • 事件与数据处理:事件处理涉及到来自连接设备的事件流,过滤以及监视。另外,还需要用于数据聚合(Data aggregation),数据存储和管理的服务。
  • 分析/机器学习:分析服务(Analytics services)执行统计分析,并应用机器学习来检测一个设备实例(或类级别)上的模式,从而进行预见性维护(Predictive maintenance)、提出建议,和触发工程变更等等。
  • API(Application Programming Interface,应用编程接口) 管理:在物联网平台的所有层面上,为设备通信,数据,服务和后端集成以及应用程序开发提供开放性。
  • 安全管理:确保物联网终端不会因物联网创造的攻击面的增加而暴露在安全威胁之下。物联网设备会生成有关操作的敏感信息,并通过互联网进行传输。并且设备本身易受黑客攻击,这可能会导致严重的商业损失。安全服务应包括(基于证书的)设备认证、网络连接、软件升级、身份认证、身份与访问权限管理,以及数据丢失防护。

物联网应用程序

应用层是物联网解决方案得以实现的地方,在这一层,数据转化为可操作的洞察力,并将其交付给企业用户、客户与合作伙伴。该层集成了现有的那些后端,建立了第三方服务,并定义了工作流以根据洞察力行事。应用层的核心服务包括:

  • 集成开发环境(IDE):开发物联网应用程序需要有一个设计期环境(Design-time environment)。这个环境可以是一个传统的 IDE,它能够用于以特定语言进行编程,或者是用于协作、可视化开发物联网应用程序的模型驱动环境(Model-driven environment)。另外,开发团队需要软件配置管理(Software configuration management)以及分支与合并(Branching & Merging)的核心服务,以便提交他们的工作、创建构建和应用程序包。最后,IDE 应引导开发人员应用物联网应用程序开发的正确模式和最佳范例。
  • 多通道应用程序:当今世界上的 Web 与移动应用程序中,IDE 理想地支持跨平台、响应式和多通道应用程序的开发,针对特定外形因素进行优化,并且以最小的开销使用设备特性与其所支持的姿态。
  • 集成:这是物联网应用的命根子(Lifeblood)。应用程序应该能够(通过数字双胞胎)访问物联网终端,以便在收到警报或触发执行器后能够读出 “事物” 的完整历史信息。它们应该能够利用各种物联网软件服务(例如时间序列数据和机器学习算法)并将这些服务编排到物联网应用程序中。最后一点(但并非最不重要的一点)是,集成企业后端与第三方服务,以管理工作流并使物联网应用程序具有上下文(例如,通过为维护工程师创建一个仪表盘,增强了工程和客户支持数据)。
  • 测试:测试(Testing)与品质保证(Quality assurance)是物联网应用程序开发项目中的重要科目。不同级别上的测试自动化(单元测试,集成,功能测试)有助于最大限度地减少相对于(迭代)开发周期的测试负担。
  • 部署:分阶段部署到目标环境,以及自动化配置应用程序资源(Web 服务器,操作系统,数据库,文件存储)可帮助开发运维工程师(DevOps)有效地管理物联网应用程序。理想情况下,在所选择的云端上可以灵活地部署 —— 比如说,接近应用程序使用的核心物联网服务的运行状态。
  • 管理:水平/垂直扩展与配置高可用性的用户管理、应用程序管理、监控和自助服务选项,这对于管理物联网应用程序来说非常重要。具体说来,通过无状态应用架构(Stateless application architecture)提供的弹性支持对于处理可变负载与可变容积来说是很有必要的。
  • 安全:就像物联网平台层一样,安全性对一个应用来说至关重要。这同时涉及到应用程序的运行时环境,及其本身的安全设置(例如访问和认证)。

定义一份物联网解决方案解析的元素可能会遇到巨大的挑战。如上所述,物联网解决方案的复杂性类型与级别将决定需要多少基础和服务来创建端到端解决方案。

尽管如此,很明显,各种各样的终端、网络技术、协议、物联网软件以及应用程序开发服务,这些对于计划采用物联网来转变业务运营的企业来说都是一个挑战。那么问题来了:如何使得物联网解决方案开发是易于管理的?其答案就在于采用一个平台方案。

本文的版权归 StoneDemo 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

最终,为什么选择go-kit

前言 工作这些年,先后经历过两家公司,分别参与过php语言框架的设计和主导过golang技术栈的落地工作,在此过程中有一些感悟和总结。我想以之前我主导的gola...

8147
来自专栏EAWorld

微信小程序第一手实践分享

目录: 1. 如何理解小程序 2. 小程序如何串联微信 3.个人实践心得 今天是微信小程序正式上线的第一天,从小程序公布、内测到今天,市面上对于小程序众说纷纭,...

4018
来自专栏杨建荣的学习笔记

运维平台的建设思考(r6笔记第20天)

自己最近也在琢磨如何搭建出一个完善有效的运维平台,当然这个工作不是一朝一夕就能完成,前行的道路上肯定会有各种各样的困难和牵绊,但是自己还是能够学以致用,把一些重...

3336
来自专栏FD的专栏

前后端分离团队的资源浪费

最近的项目,团队都是以前端、后端两个分离的形式。作为一个大前端,不论是在 Web 开发的时候,还是开发 Android 应用的时候,经常遇到:

1254
来自专栏IT大咖说

腾讯DevOps体系之研发管理那些事儿

内容来源:2018 年 5 月 05 日,腾讯研发管理部CODE平台产品负责人孙晨星在“2018 DevOpsDays Beijing”进行《腾讯DevOps体...

2042
来自专栏Snova数据仓库

Snova数仓简介

Snova为您提供简单、快速、经济高效的PB级云端数据仓库解决方案。借助于Snova,您可以在数分钟内创建拥有数百节点的企业级云端数据仓库,并高效的完成日常维护...

1432
来自专栏知晓程序

小程序运营不知道从哪入手?这 4 点思考值得借鉴

1753
来自专栏SDNLAB

混合虚拟化网络,网络性能优化之辩

网络设备在虚拟化后是否依旧可以快速提供良好的性能?这是目前大家最为关注的问题之一。下面就讨论一下传统网络设备和虚拟化后面临的问题以及怎样使用网络设备才能提供实时...

4167
来自专栏小文博客

腾讯云自媒体分享计划——自媒体作者福音

3606
来自专栏程序你好

为什么Devs喜欢GitHub(和微软购买它)?

802

扫码关注云+社区

领取腾讯云代金券