问题跟踪与物联网中的DevOps
1. 问题跟踪工具介绍
1.1 Trac
Trac发行版带有一组以
.ini
文件形式存在的示例工作流配置,这些文件描述了工作流状态和转换。不过,目前无法在图形用户界面(GUI)中编辑工作流。Trac适合喜欢简单性和工具集成的用户。
1.2 Redmine
Redmine是一个用Ruby on Rails编写的流行问题跟踪器,其设计与Trac有很多相似之处。它有两个分支:ChiliProject和OpenProject,其中ChiliProject的开发已停滞,而OpenProject仍在持续开发。
Redmine是免费软件,它将多个工具集成在一起,形成一个连贯的整体,并且基于Web。与Trac相比,Redmine有一些额外的功能:
- 可以通过Web界面管理多个项目。
- 可以使用甘特图和日历。
1.2.1 安装与使用
可以使用以下命令启动Redmine实例:
docker run -d -p 6052:3000 redmine
此实例将在主机端口6052上可用,并使用SQLite数据库,不适合生产环境。若要进行生产安装,可以配置Redmine容器使用Postgres或MariaDB容器作为数据库。
默认用户名和密码均为
admin
。在继续操作之前,需要手动初始化数据库,使用页面顶部的“Administration”链接,并按照页面上的说明进行操作。
1.2.2 创建项目和问题
在用户界面中可以创建新项目,但如果不先完成数据库初始化步骤,新项目将没有必要的配置,无法创建问题。创建项目后,可以创建问题,默认的问题类别有Bug、Feature和Support。
1.2.3 视图和状态机
Redmine还有甘特图视图和日历视图等。Redmine问题的默认状态机如下:
- New
- In Progress
- Resolved
- Feedback
- Closed
- Rejected
1.3 GitLab问题跟踪器
GitLab的问题跟踪器与Git仓库管理系统集成得非常好,界面美观,但在撰写本文时灵活性不足,适合喜欢工具简单性的团队。
由于GitLab开发速度快,其功能集可能会发生变化。它按仓库跟踪问题,如果有多个仓库,可能难以同时查看所有问题的概况,建议创建一个单独的项目来汇总涉及多个仓库的问题。
1.3.1 API测试
GitLab问题跟踪器有一个灵活的API,还有一个命令行客户端。测试GitLab API很简单:
1. 安装GitLab CLI。
2. 设置以下两个环境变量,描述GitLab API的端点和授权令牌:
GITLAB_API_PRIVATE_TOKEN = <token from your project>
GITLAB_API_ENDPOINT = http://gitlab.matangle.com:50003/api/v3
- 现在可以列出问题等,还有内置的帮助系统:
gitlab help Issues
+--------------+
| Issues |
+--------------+
| close_issue |
+--------------+
| create_issue |
+--------------+
| edit_issue |
+--------------+
| issue |
+--------------+
| issues |
+--------------+
| reopen_issue |
+--------------+
1.3.2 问题状态和标签
GitLab问题只有两种常规状态:open和closed,主要通过其他类型的元数据(如标签)来描述问题。标签由文本和背景颜色组成,一个问题可以关联多个标签。此外,还可以在问题描述中嵌入Markdown格式的待办事项列表。
1.3.3 用户界面特性
- Assign to:可以分配为项目成员的人员。
- Labels:可以使用默认标签集、创建自己的标签或混合使用。默认标签包括Bug、Confirmed、Critical等。
- 其他属性:可以按里程碑分组问题,支持GitLab Flavored Markdown,还可以附加文件。
1.4 Jira
Jira是Atlassian开发的灵活的错误跟踪器,用Java编写,是本文中唯一的专有问题跟踪器。它对最多15人的小团队免费,不同模块(如wiki和仓库查看器)是单独的产品。如果需要Wiki,可以单独部署,Atlassian的Confluence Wiki与之集成的摩擦最小,此外还有用于代码仓库集成和浏览的Fisheye代码浏览器。
1.4.1 安装与使用
可以使用以下命令启动Jira实例:
docker run -p 6053:8080 cptactionhank/atlassian-jira:latest
可以在端口6053访问界面,但尝试使用Jira比较复杂,需要先创建Atlassian账户,完成后使用该账户登录。Jira会先提供一个简单的教程,引导创建项目和问题。
1.4.2 工作流和特性
默认情况下,Jira的工作流与Bugzilla工作流类似:
- Open
- In Progress
- Resolved
- Closed
- Reopened
Jira有很多功能,其中许多可以通过内置应用商店中的插件获得。如果能接受Jira不是免费软件,它可能是本文中外观最精美的问题跟踪器,但配置和管理也比较复杂。
2. 物联网与DevOps
2.1 物联网背景
“物联网”一词在20世纪90年代末由英国企业家Kevin Ashton在研究RFID技术时提出。Kevin在宝洁公司工作时,对使用RFID管理供应链产生了兴趣。
RFID(射频识别)技术是钥匙链上用于开门的小标签背后的技术,RFID标签可以间接连接到互联网,并且其形式不限于钥匙链上的标签。一个RFID标签包含一个约2平方毫米的小芯片和一个线圈,当靠近阅读器时,线圈通过感应充电,芯片获得足够的电力将唯一标识符传输到阅读器硬件,阅读器再将标签的识别字符串发送到服务器,服务器根据情况决定是否打开与阅读器关联的锁。服务器通常连接到互联网,以便根据访问权限的变化远程添加或删除与RFID标签关联的标识符。
其他物联网技术还包括可被相机扫描并为系统提供信息的被动二维码,以及能在锂电池上运行长达一年的蓝牙低功耗智能有源传感器。
2.2 物联网设备特点
“物联网”这个术语比较模糊,例如像树莓派这样的小型计算机,它是一个片上系统(SoC),安装在信用卡大小的电路板上,虽然体积小,但仍然是一台完整的计算机,足以运行Java应用服务器、Web服务器和Puppet代理。
与传统计算机相比,物联网设备在很多方面受到限制,通常是嵌入式设备,放置在难以访问的受限位置。从DevOps的角度来看,物联网设备的定义特征是在不同方面受到限制,如内存、处理能力或访问权限等,因此不能使用在服务器或桌面机器上使用的所有技术。
2.3 常见物联网设备类型
- 智能手表 :如今的智能手表可以有蓝牙和Wi-Fi连接,能自动检测可用的升级,在用户交互时下载新固件并自行升级。市面上有多种智能手表,如Pebble、Android Wear和Apple Watch,有些还具备移动网络连接,未来会越来越普遍。
- 键盘 :键盘可以有可升级的固件,它实际上是物联网设备的一个很好例子,提供了许多传感器,能运行软件将传感器读数提供给最终连接到互联网的更强大的机器。有一些具有开放固件的完全可编程键盘,如Ergodox。
- 家庭自动化系统 :这些系统连接到互联网,可以通过智能手机或桌面计算机进行控制,例如Telldus TellStick可以通过互联网连接的设备控制远程电源继电器。
- 无线监控摄像头 :可以通过智能手机界面进行监控,有许多不同市场细分的供应商,如Axis Communications。
- 生物识别传感器 :包括健身传感器,如脉搏计、体重秤和放置在身体上的加速度计。Withings体重秤可以测量生物特征并将数据上传到服务器,用户可以通过网站查看统计数据。智能手表和手机中也有加速度计来跟踪用户的运动。
- 基于蓝牙的钥匙查找器 :如果丢失钥匙,可以从智能手机上激活它们。
- 汽车计算机 :负责处理媒体、导航以及汽车物理控制系统(如锁、窗户和门)的管理。
- 音频和视频系统 :包括娱乐系统,如网络音频播放器,以及视频流硬件,如Google Chromecast和Apple TV。
- 智能手机 :无处不在的智能手机实际上是带有3G或4G调制解调器和Wi-Fi的小型计算机,连接到更广泛的互联网。
- 嵌入存储卡的Wi-Fi计算机 :可以将现有的单反相机转换为具有Wi-Fi功能的相机,能自动将图像上传到服务器。
- 家庭或办公室的网络路由器 :实际上是小型服务器,通常可以从互联网服务提供商(ISP)端进行远程升级。
- 网络打印机 :如今相当智能,可以与云服务交互,方便从不同设备进行打印。
2.4 物联网设备技术共性
许多物联网设备在技术层面非常相似,即使它们用于完全不同的目的。例如,大多数智能手机使用ARM CPU架构的变体,制造商可以一起获得一些外围芯片的许可。MIPS处理器在路由器硬件供应商中很受欢迎,而Atmel RISC处理器在嵌入式硬件实现者中很常见。
基本的ARM芯片可供开发者和爱好者轻松进行原型设计,树莓派基于ARM架构,可作为专业用途的原型设备。Arduino同样提供基于Atmel架构的设备,便于进行硬件原型设计。
2.5 物联网创新优势
这种情况为物联网创新创造了有利条件:
- 设备价格便宜,即使小批量采购也容易获得。
- 设备开发简单,容易获得原型平台。
- 开发环境相似,易于学习,很多时候使用GNU编译器集合(GCC)。
- 在论坛、邮件列表和文档等方面有大量支持。
2.6 物联网设备部署挑战
对于像树莓派这样功能强大的设备,可以使用与服务器相同的方法和实践,树莓派设备可以作为服务器,只是比传统服务器功能弱一些。对于物联网设备,无代理部署系统比需要代理的系统更合适。
像Arduino中使用的Atmel嵌入式CPU这样的小型设备限制更多。通常,需要编译新固件,并在设备重启时将其部署到设备,此时特殊的引导加载程序代码会运行,设备通过USB连接到主机。
在开发过程中,可以通过连接一个单独的设备来重置原始设备并将其置于加载模式,从而实现固件上传的自动化。但在实际部署场景中,这种方法成本较高,因为会影响成本。从质量保证的角度来看,在与测试中使用的硬件不同的设备上进行部署存在风险。
2.7 物联网市场前景
根据研究机构Gartner的数据,到2016年底,大约有64亿个设备连接到互联网,比2015年增长了30%。到2020年底,预计将有210亿个互联网连接设备。消费市场将拥有最多的设备数量,而企业将在这方面投入最多的资金。
下一代无线网络(暂称为5G移动网络)预计在2020年进入市场,它将具备适合物联网设备的能力,甚至远远超过当今的4G网络。新移动网络标准的一些预计能力包括:
- 能够连接比当今网络更多的设备,这将使部署包含数十万个传感器的大规模传感器网络成为可能。
- 为数万名用户提供数十兆比特每秒的数据速率,在办公环境中,每个节点将提供1千兆比特每秒的容量。
- 极低的延迟,支持实时交互式应用程序。
2.8 行业巨头观点
以爱立信为例,它是一家领先的瑞典移动网络硬件供应商。爱立信物联网网站上的一段话指出:“爱立信与物联网,全球超过40%的移动流量运行在爱立信的网络上。我们是行业中最具创新力的公司之一,拥有超过35000项已授权专利,我们正在通过降低企业使用现代通信技术创建新解决方案的门槛、打破行业之间的壁垒以及连接公司、人和社会来推动物联网的发展。展望未来,我们看到两个主要的机会领域:一是变革行业,物联网正成为一个又一个行业的关键因素,实现新类型的服务和应用,改变商业模式并创造新的市场;二是演变运营商角色,在新的物联网范式中,我们看到运营商可以扮演三种不同的可行角色,运营商选择追求哪些角色将取决于历史、抱负、市场前提和未来展望等因素。”
2.9 5G对物联网的推动作用
5G网络带来的变革将为物联网的发展注入强大动力。其高连接能力使得大规模传感器网络的部署成为现实,这对于环境监测、工业自动化等领域具有重要意义。例如,在智能城市建设中,可以部署大量的环境传感器,实时监测空气质量、噪音水平等数据,为城市管理提供精准的决策依据。
低延迟特性则为实时交互式应用开辟了新的天地。在自动驾驶领域,车辆需要与周围环境和其他车辆进行实时通信,5G的低延迟能够确保信息的及时传递,提高自动驾驶的安全性和可靠性。
高数据速率也将满足物联网设备对大数据传输的需求。例如,高清视频监控设备可以通过5G网络实时传输高质量的视频画面,为安防监控提供更清晰、更及时的信息。
2.10 物联网与DevOps面临的挑战
从DevOps的角度来看,物联网带来了一系列独特的挑战。由于物联网设备的多样性和复杂性,如何确保设备的一致性和兼容性是一个难题。不同的设备可能使用不同的操作系统、硬件平台和通信协议,这增加了开发、测试和部署的难度。
设备的远程管理和维护也是一个挑战。由于物联网设备通常分布在不同的地理位置,有些甚至处于偏远或难以到达的地方,如何及时发现设备故障并进行修复是一个关键问题。
此外,物联网设备的安全性也是一个不容忽视的问题。由于设备连接到互联网,容易受到网络攻击,如数据泄露、设备被控制等。因此,在DevOps流程中需要加强安全措施,确保设备和数据的安全。
2.11 应对物联网与DevOps挑战的策略
为了应对物联网带来的挑战,DevOps团队可以采取以下策略:
-
标准化和模块化
:采用标准化的硬件和软件平台,以及模块化的设计思想,降低设备的复杂性和兼容性问题。例如,使用统一的操作系统和通信协议,将不同的功能模块进行封装,便于开发和维护。
-
自动化测试和部署
:利用自动化工具进行设备的测试和部署,提高效率和准确性。例如,使用自动化测试框架对物联网设备进行功能测试、性能测试和安全测试,确保设备在不同环境下的稳定性和可靠性。
-
远程监控和管理
:建立远程监控系统,实时监测物联网设备的状态和性能,及时发现故障并进行预警。同时,提供远程管理功能,如软件升级、参数配置等,方便对设备进行维护和管理。
-
安全防护
:加强物联网设备的安全防护,采用加密技术、访问控制等手段,确保设备和数据的安全。例如,对设备之间的通信进行加密,设置严格的访问权限,防止非法入侵。
2.12 物联网与DevOps的未来趋势
随着物联网和DevOps的不断发展,未来将会出现一些新的趋势:
-
边缘计算
:边缘计算将计算和数据存储靠近物联网设备,减少数据传输延迟,提高系统的响应速度和可靠性。例如,在工业生产中,将数据分析和处理任务放在设备端进行,实时做出决策,提高生产效率。
-
人工智能与机器学习
:人工智能和机器学习技术将在物联网中得到广泛应用,实现设备的智能决策和自动化控制。例如,通过机器学习算法对物联网设备产生的数据进行分析,预测设备故障,提前进行维护。
-
多云和混合云部署
:为了提高系统的灵活性和可靠性,物联网系统将越来越多地采用多云和混合云部署模式。通过将不同的服务和应用部署在不同的云平台上,可以充分利用各云平台的优势,降低风险。
2.13 总结
物联网的发展为我们带来了前所未有的机遇,但也带来了一系列挑战。从问题跟踪工具的选择到物联网设备的开发、部署和管理,都需要我们不断探索和创新。DevOps作为一种高效的开发和运维模式,将在物联网的发展中发挥重要作用。通过标准化、自动化和安全防护等策略,我们可以更好地应对物联网带来的挑战,推动物联网的健康发展。
未来,随着5G、人工智能等技术的不断进步,物联网和DevOps将相互融合,创造出更加智能、高效的应用场景。我们需要紧跟技术发展的步伐,不断学习和实践,为物联网的发展贡献自己的力量。
表格:常见物联网设备类型总结
| 设备类型 | 特点 | 示例 |
|---|---|---|
| 智能手表 | 有蓝牙和Wi-Fi连接,可自动检测升级,部分有移动网络连接 | Pebble、Android Wear、Apple Watch |
| 键盘 | 有可升级固件,提供传感器,部分可编程 | Ergodox |
| 家庭自动化系统 | 连接互联网,可通过手机或电脑控制 | Telldus TellStick |
| 无线监控摄像头 | 可通过手机界面监控 | Axis Communications |
| 生物识别传感器 | 测量生物特征并上传数据 | Withings体重秤 |
| 基于蓝牙的钥匙查找器 | 可从手机激活 | - |
| 汽车计算机 | 处理媒体、导航和物理控制系统管理 | - |
| 音频和视频系统 | 包括网络音频播放器和视频流硬件 | Google Chromecast、Apple TV |
| 智能手机 | 带3G/4G调制解调器和Wi-Fi的小型计算机 | - |
| 嵌入存储卡的Wi-Fi计算机 | 可将单反相机转换为Wi-Fi相机 | - |
| 家庭或办公室网络路由器 | 可从ISP端远程升级 | - |
| 网络打印机 | 与云服务交互,方便多设备打印 | - |
mermaid流程图:物联网设备开发与部署流程
graph LR
A[需求分析] --> B[设计开发]
B --> C[测试]
C --> D{测试是否通过}
D -- 是 --> E[部署]
D -- 否 --> B
E --> F[监控维护]
F --> G{是否出现故障}
G -- 是 --> H[故障修复]
H --> E
G -- 否 --> F
列表:物联网与DevOps应对挑战策略
-
标准化和模块化
- 采用统一的硬件和软件平台
- 封装功能模块
-
自动化测试和部署
- 使用自动化测试框架
- 实现自动化部署流程
-
远程监控和管理
- 建立远程监控系统
- 提供远程管理功能
-
安全防护
- 采用加密技术
- 设置访问控制权限
通过以上的分析和总结,我们对物联网和DevOps有了更深入的了解。在未来的工作中,我们需要不断探索和实践,以应对物联网带来的挑战,推动其健康发展。
超级会员免费看
1120

被折叠的 条评论
为什么被折叠?



