在JavaOne大会上,Pivotal的首席技术专家Mark Heckler介绍了一些快速在云计算中开发新的物联网(IoT)应用程序的最佳实践。他的做法让我们更容易地尝试不同的用例,一旦其商业价值得到证实,我们就可以具体实施。
作为一个例子,Heckler解释了如何为一个可再生能源监控和控制应用开发基本框架。他为他位于圣路易斯的房子开发了一个基本框架,但是同样的原理也可被应用于可在云计算中快捷部署的多种物联网应用中。
其关键在于创建一个软件开发工具链,这个工具链可以尽可能地为物联网设施和云计算后端实现代码生成自动化。Spring Boot 将有助于引入各种各样的服务以供通信、监控、数据库以及应用程序逻辑等应用使用。这个初始模板可被传输至Cloud Foundry以便于为在云计算运行的不同服务器平台自动生成代码。
确保物联网物理端的简单化
虽然物联网的物理端在开发物联网应用程序中只占据了二成,但它却是非常重要的。工程师和架构师需要密切关注后端物联网软件,Heckler说。这恰恰正是其大部分价值的来源之处。
在物理端,Heckler建议其物理基础设施应当是易于快速配置的。一个最小的物理和逻辑组件都应支持良好的可靠性、沟通方案和标准。例如,Heckler的能源监控应用使用了一个包括Arduino板、Raspberry Pi网关以及供通信使用的无线网络连接和WebSockets协议在内的物理基础设施。
Heckler表示,为设备思考如何提供足够的性能而不是最佳的性能将是非常重要的,这是因为更高的性能表现往往需要更强的处理能力和提高端点的复杂性。这一策略意味着大部分的繁重处理任务都需要在云计算中完成。Heckler说,Arduino平台是用于验证概念设计的一个不错选择,但是它缺乏低成本的通信能力。他推荐使用Raspberry Pi作为节点,因为它支持Linux和Java,而且它还具有较好的低成本通信方案。
关注标准
Heckler说,你应当尽可能地基于现有支持标准的基础设施和工具来开发云计算物联网应用程序。Heckler展示了他是如何能够通过使用Cloud Foundry来快速地开发出一个云计算应用程序环境,从而在基于云计算的门户网站、节点和独立物联网设备之间确保交互通信都可通过REST和 WebSockets实现。
Heckler使用这种方法在很短时间内就完成了他的可再生能源监控和控制系统的开发工作。这一应用的输入包括多种不同的传感器,而其控制输出涉及冷却、加热和通风等。
尽可能多的配置
由使用一组强大的软件工具入手,多尝试一些不同的方法,将更易于开发和重新部署一个应用程序架构,这样你就可以找出一个最佳方案,Heckler说。他曾在Cloud Foundry平台上尝试过GlassFish、WebLogic和WildFly 服务器。Heckler说,与手工自定义改写代码来实现现有应用程序的跨平台移植相比,以这些服务器为目标使用现有工具来编程生成代码是一个更好的方法。
将CloudFoundry作为后端将更易于使用相同的方法来实现在本地、内部部署或者云计算环境中的处理和部署。这将有助于减少在开发概念设计验证阶段以及之后迁移至以生产为目的的最佳环境阶段的工作量。
另一个很好的做法就是使用Spring Boot来提供自动配置和外部绑定功能,从而更易于生成Cloud Foundry初始代码。这也更有助于选择组件来快速集成应用程序,可部署应用程序以便于在不同目标环境中运行。从本质上来说,Spring Boot 可有助于设置被传送至Cloud Foundry的核心框架,它可为GlassFish、WebLogic 或 WildFly服务器生成代码。这使得开发人员能够把更多的时间和精力关注于针对物联网用例应用程序背后的逻辑开发中。
选择合适的组件
Heckler还推荐使用Spring Boot Actuator,它可在Spring Boot配置过程中从价格成本角度提供监控和管理应用程序的功能。这将有助于检查环境、查看类路径和内存使用情况,这些功能在开发和测试阶段都是非常有用的。
超文本应用程序语言可以帮助我们探索和解决与应用程序相关的API。同样重要的是,囊括一个数据库,或者将数据存储在应用程序中,以便于在发生网络中断事件时应用程序仍能够掌控数据。
一旦这些Spring Boot 单元被选中,那么开发人员就能够使用Spring Boot代码生成工具快速地生成一个全功能(虽然可能用处也不大)的应用程序。这个应用程序可被快速导入一个Java集成开发环境中,以便于进一步实现针对某一用例的定制化。那么,最后的结果就可以很容易地推送至一个开放工具以生成一个Gradle 或 Maven 项目。
弃用REST,使用WebSockets
REST 和 JSON非常适用于开发网络应用程序,但是它们为物联网应用程序带来了相当可观的开销。REST消息有时候会增加数百字节的头信息,而物联网应用程序本身通常只会发送与测量或控制消息相关的几个字节的信息。Heckler 建议使用WebSockets来代替前者。其开销要小得多,此外在必要时可实现双工通信。
你还需要开发一个WebSocket类来处理数据,这些数据可以通过扩展WebSocket处理程序来完成。Heckler说,他仍然有一个可通过REST来访问云计算系统的参数,但是他说,“使用它的代价如此高昂,所以我不会使用它。”
基于Spring Boot的基本框架、Cloud Foundry和一个开发工具将有助于在较短时间内针对物联网设备完成一个云计算应用程序的开发工作。Heckler表示,他已经把同样的一个框架重新用于各种与企业应用相关的应用中。他建议企业重点关注使用现有工具来为物联网应用程序开发基本的逻辑功能。而最终识别出能够推动物联网应用发展的用例将是一项极具挑战性的任务。从组件入手将更易于最初的业务识别,之后就可以使用合适的架构对其进行优化。
本文作者:滕晓龙
来源:51CTO