基础设施即代码,集成交付新探索

2022-04-25

  现代软件开发对基础设施的管理提出了更苛刻的要求:产品要适应瞬息万变的市场,要求基础设施有更快的响应速度;持续交付和DevOps的推行,要求产品团队对部署和运维有更高的自主性;技术的快速进步和演化,也使得基础设施的配置不得不频繁变化,而在这种快速变化的过程中,要求基础设施既要灵活,也要安全、可靠。

  长期以来,管理IT基础设施都是一个手动过程,人们会将服务器实际位置就位并对其进行配置。只有在机器被配置为操作系统和应用程序所需的正确设置后,才会部署应用程序。因此,这种手动的过程通常会导致很多问题。

  传统的基础设施运维管理具有以下几个问题:

  成本:从网络工程师到硬件维护技术人员,必须聘请许多专业人员在流程的每一步执行必要的任务。

  扩展性和可用性:也可归结为“速度”问题。由于手动配置太慢,应用程序经常会遇到访问高峰,而系统管理员会拼命尝试设置服务器来管理负载,这必然会影响可用性。如果组织没有备份服务器甚至数据中心,那么应用程序可能会长时间不可用。

  监测和性能可见性:如何密切关注所有基础设施,以确保其正在以较优方式运行?当遇到问题,又如何准确定位问题来自基础设施的哪个位置呢?

  不一致性:如果多个人负责手动部署配置,不一致将成为不可避免的问题。 

  软件定义基础设施,基础设施即代码在此背景下"应运而生"的,不但要集成还要运营, 持续交付和DevOps的推行使得ISV服务器产品团队对部署和运维有更高的自主性。基础设施即代码是通过机器可读的定义文件,而不是物理硬件配置或交互式配置工具来管理和配置计算数据中心的过程。简单来说,基础设施即代码意味着使用配置文件管理您的IT基础设施。

  ====烽火在基础设施即代码领域的实践====

  在ICT转型、数字化经济的当下,烽火通过云网基础设施支撑自有平台产品, 集成各云服务商系统发挥技术优势,提供完善的端对端一站式集成解决方案。探索项目总集交付、持续运营交付、数据共享交付,在数字政府领域深耕、发展,从而实现政务数据从“存储、整合”到“应用”的跨越,释放数据价值红利。从传统的弱电机房改造到IaaS层数据中心的建设积累发展, 再到横向拉通烽火全系ICT家族产品基础硬件平台,数据中台产品(云平台/云存储/大数据/SDN/), 建立起了管理纵向合作伙伴和ISV服务商的生态体系。烽火作为基础设施的集成者,要适应瞬息万变的应用市场需求, 对其管理则提出了更苛刻的要求:基础设施必须有更快的交付响应速度、灵活的可定制性、 面向应用和数据服务商的管理可视性。因此,在基础设施即代码领域,烽火在其自有云产品上进行了广泛的实践。

  Terraform在烽火多云管理平台的应用

  烽火多云管理平台FitMgr经过选型,采用Terraform工具实现对云服务资源的编排及管理。Terraform 是一个安全、高效进行基础设施部署、更改、版本化的开源工具。通过声明式的配置语言(HCL, Hashicorp Configuration Language)来描述基础设施,即配置文件,由Terraform对配置文件及当前基础设施状态进行对比,分析资源之间的依赖关系,生成一个执行计划,最后调用各家云厂商的具体实现来完成整个基础设施生命周期的管理。

  烽火云平台中被Terraform管理的资源生命周期图

  在Terraform的初始化阶段,Terraform会加载Backend后端,加载配置及资源状态信息,分析资源执行的应该执行具体哪个操作,再通过资源视图分析资源之间的依赖关系,对于没有相互依赖关系的资源,会执行并行创建资源。在Provider对接是烽火多云管理平台Fitmgr中的资源中心,该资源中心是对底层不同类型虚拟化资源的管理,资源操作成功后会将相应的资源信息返回,记录在后端的状态文件存放,作为下次执行编排的基础。

  

  Terraform在烽火多云管理平台的某个应用场景

  应用场景为:创建所有主机的镜像、规格、软件版本、配置都完全一样的对等 Apache集群。其业务模型如下:

  

  配置文件组织形式:

  可以看出,相比于手动部署资源,Terraform减少人为误操作而导致的错误,提高部署效率;另外,生成的执行计划可以保证操作资源时不发生意外,造成不可逆的结果,提高操作的准确性。模板配置化的方式,可以得知整个资源的依赖关系,也可以做相应的资源版本化管理,甚至可以把该资源模板直接复制建立多可用区的服务,增强对资源操作的可移植性。

  在交付过程中, 以客户业务核心需求为导向,采用迭代、循序渐进的方法,把软件开发思想应用到集成交付项目中,不但可以缩短交付周期,还可以为持续集成交付奠定基础。而基础设施即代码就是我们在集成交付领域的一次全新探索。未来,我们会通过持续探索, 不断完善和集成烽火系统自有家族产品, 逐步实现与合作伙伴开发商一起打造集成交付的完整生态体系。