硬件编程
当我们在设计单一硬件时,主要是使用指令控制硬件电门的状态,进而让硬件有特定的能力,如 存储能力/运行能力/可视化能力等。这时候是在特定的硬件开发平台上完成指令的编排。开发人员怎么去确认这些指令呢?不管是.net、java、golang,当他们在进行跨平台适配时,都会对相应的平台提供指令适配。在近年的创信项目中,让软件平台迁移到特定的硬件平台时,进行了大量的硬件指令适配。
硬件抽象化
当把硬件指令抽象化后,形成可编程的微内核,也就是操作系统的硬件指令集。指令集形成体系化规范后,微内核将硬件指令集进行抽象,让外围应用只与内核交互。如果有新的硬件出现,将重新完善微内核适配,最终形成硬件接入。当有了可编程的API接口后,硬件与软件将基于特定的协议进行独立交互,不再有强关联性。
软件编程
基于OSI7层模型与tcp/ip四层模型,软件编程主要指就socket连接及基于特定应用平台业务实现编程。
当下流行的web编程主要基于特定的中间件提供其中业务实现部分的编程,如面向servlet标准的java web开发,基于IIS等的.net web实现,或者基于特定web 中间件的业务实现,如python/golang 等web开发。
基于当下IT基础服务的完整性,我们在软件编程中会使用到大量的基础中间件,为我们的业务实现提供支持服务,如数据存储服务:【数据库/FTP/对象模型等】,或者是基础的数据开发平台等,特定的中间件驱动把socket连接进行了封装,我们只关注特定中间件驱动提供的api即可。
但整体来说,软件编辑就是在osi等模型的socket封装之后的业务实现。socket为软件提供了跨机器的互联能力。
硬件资源云化
socket连接句柄在特定的硬件中是有限的。如果软件对硬件资源是动态的,就需要构建硬件资源池来应对应用对资源的支持。硬件服务能力抽象为资源,统一注册到云管理平台中,应用在部署时对应用资源的使用采用声明制,最终由云管理平台完成应用的自动化部署与监控,根据应用对资源的声明查找硬件资源库中满足声明的资源进行占用,并自动完成应用部署。
云管理平台
硬件资源是静态的,待是否在线需要根据实际情况来看,在时间维度上是动态的。硬件云管理平台是一套管理软件,主要由资源注册中心/应用发布调度中心/硬件资源代理服务/硬件资源虚拟化(容器化)等部分组成。云管理平台是一个中心化的应用平台,主控平台管理者所有应用资源的登记/动态监测/资源回收/应用部署等。云管理平台释放了实施团队的双手,让自动化工具完成大多数工作。
业务系统云化需求
业务系统从研发到落地应用需要经过多套工序、并且在反复发生。如:需求梳理/代码实现/功能测试/集成测试/应用打包/应用发布与部署等。
正常情况下需要有多套环境:开发环境/测试环境/准生产环境/生产环境。
这么多环境,怎么保证一致性?云化部署正好解决了这些内容。资源信息的声明式获取,让运行环境通用化。云环境的自动化部署,让应用环境的部署更为灵活、智能。并且根据需要实现ci/cd等标准工序,让代码检测/自动化测试/版本回归/灰度发布等成为现实...............................