论基建业务信息化中的关键技术

2021-03-24 18:45李阳
科学与生活 2021年29期
关键词:容器框架部署

李阳

2019年6月,我有幸作为系统设计师参加了“某集团电力基建信息管理系统”项目的建设工作,该项目总投资1324.19万元,建设工期为14个月,该项目是某集团“十四五规划”中集团统建类重点项目。该项目通过电力基建管理信息系统建设项目的实践,建立一个标准规范的工程建设管理系统,对建设过程中涉及到的质量、安全、设计、图纸信息、工程文件信息、监控信息等综合信息进行统一管理,为各级用户提供一个统一高效的建设管理和业务处理界面,可以满足工程建设期不同层次的参与者对建设管理系统的信息需求和功能需求。在此基础上,形成该集团公司电力基建项目通用模块,并且通过本期电力工程实践和积累相关标准体系、管理制度、人才队伍、技术经验等,可应用服务于后续其他基建类、电力类工程建设。

由于该信息系统项目业务部门涉及众多,资源数据整合需求面广,工程浩大,外部业务接入单位环境特殊,具有严格的安全、稳定、实时高效和可靠性要求。所以,在整体的项目建设过程当中尤其要注重加强对项目管理过程中的技术管理。技术管理工作是项目管理中一项基础的工作,是任何一个项目管理人员都必须时刻注意的问题。事实也证明,充分而详实的技术管理,为后来项目的顺利开展、上线和验收奠定了坚实的基础。

1.微服务技术

本项目建设考虑到主流技术发展和系统运营维护需要,应用开发和运行平台将采用成熟的PaaS平台进行开发和建设,遵循微服务+容器化的技术路线。

微服务技术是从SOA架构理念发展、转变而来,核心是要对应用进行服务化,并将复杂服务拆分成仅关注与完成一件特定任务的简单服务。随着服务的拆分,服务数量会变得越来越多,服务治理也变得越来越困难,因此就需要有一套成熟的微服务管理框架来解决这些问题,对服务应用进行统一的管理和维护。

本项目用到的微服务框架是市面上主流的SpringCloud和SpringCloud Alibaba,SpringCloud是一系列成熟框架和解决机制的有序集合。它利用SpringBoot的开发便利性巧妙地简化了分布式系统所依赖的基础设施的开发和集成,如服务发现、注册、配置中心、消息总线、负载均衡、断路器、网关、流量限制等。基于SpringCloud的子项目众多,大致可以分为两类,一类是对现有成熟框架的“SpringBoot化”的封装和抽象,也是数量最多的项目,比如SpringCloud Stream就是把Kafka、ActiveMQ等消息队列框架进行了统一的集成和归并;第二类是开发了一部分分布式系統所依赖的基础设施的实现,如SpringCloud Eureka、SpringCloud Config、SpringCloud Hystrix等。本项目中主要用到的组件有Gateway、Nacos、Sentinel、Sleuth、Zipkin、Sky Walking、Stream等。

2.容器技术

容器是当下流行的虚拟化技术,它通过使用命名空间进行进程的分割,有了容器就无需再启动和维护虚拟机。与虚拟机技术相比,容器的最大不同之处在于打包方便和可移植性。构建容器的目的在于为当下的信息化系统建设降低占用空间和启动时间、提供重用性、更好地利用服务器资源,从而保证系统运行的高性能和高可用。目前,流行的容器产品主要是Docker。

本项目将使用Kubernetes+Docker的方式来部署电力基建信息管理系统,Docker在当下已经成为事实上的容器标准,是开源免费的。Docker的主要核心技术包括资源隔离、资源限制和分层文件系统,其中,资源隔离通过Linux中namespace的理念来实现;资源限制则基于Linux的内核技术Control Group来实现;而分层文件系统使用了Google的Big Table思想,可以实现快速迭代、回滚。

Kubernetes是一个开源的、可扩展的平台,主要用来管理容器化应用和服务。可以针对于部署的容器进行健康检查,自动的伸缩扩容。除此之外,Kubernetes在自动化装箱、自愈能力、存储编排、服务发现和负载均衡、以及自动发现和回滚、保密和配置管理方面都有自己独特优势,事实上,已经成为容器管理、编排、运行部署的首选工具。

本项目通过使用K8s+Docker部署集群应用,最大程度的保证系统对外提供服务的可扩展、高性能和高可用。

3.Vue生态

目前,当下流行的开发模式主要是前后端分离,而前端开发框架主要包括Vue、Bootstrap等,其中Vue以其简单易学、容易上手、轻量化、框架生态发展良好等优势,在国内得到了广泛的认可和大力普及。本项目在前端框架层面,将使用Vue生态进行页面的构建和逻辑的控制。

Vue是遵循MVVM(Model-View-ViewModel)思想来实现的前端技术,它将视图UI和业务逻辑相分离,以数据驱动和组件化的思想来构建系统功能页面,极大的解放了后端人员投放在前端页面上的工作量和工作压力,使得前后端人员各司其职,术业专攻,通过标准的API来实现响应式的数据绑定和组合的视图组件。提高了开发质量和对于用户需求变更的响应速度。

通过开发出来的页面可以部署到Nginx中来进行渲染,Nginx是一款轻量级的Web服务器,它采用基于异步事件驱动的方法来处理请求,削减了上下文调度开销,并发服务能力强。相较于Tomcat,在高并发场景下,有更高的性能、更低的消耗等优势。

4.云计算

本项目基于该集团统一建设的云平台来构建,云管平台采用云计算、虚拟化技术,将系统所依赖的IT基础设施(计算、存储、网络、安全等)资源进行标准化、统一化处理、降低开发成本。统一云管平台针对于云资源可以提供统一的基础运维服务,减少了开发团队的工作量,通过底层资源的稳定来保障上层系统运行的稳定。

云计算是当下企业、政府进行信息化建设、数字化转型必须实施的基础战略。按照通常的分类,可以将云计算分为:将基础设施作为服务(IaaS)、将平台作为服务(PaaS)和将软件作为服务(SaaS)三大类。其中,IaaS服务具有更高的资源使用效率;PaaS层可以提供供上层系统开发所使用的数据库、中间件等依赖服务,使得项目组团队更多的将精力放在业务逻辑的开发和功能实现上来,而不用特别关注所依赖的服务的技术细节和扩展性、可用性问题。

5.DevOps

近年来,随着“互联网+”行动的深入推广、实施,市场对软件产品和软件服务的交付提出了更高的要求,衍生了更多的想法。一方面,软件产品的需求变更频繁使得研发工作迭代次数增多,发布部署次数增加,使得整个软件构建过程工作比重逐渐增大。另一方面,SOA、分布式、微服务、容器等软件架构的实施过于庞大和复杂,使得手工部署的难度明显上升,出错率和风险性大大增加。再者,当下大部分组织结构内,开发部门和运维部门都是分离的,各司其职,频繁的发布部署会给运维部门带来极大的工作量和压力,加剧了开发和运维之间的“矛盾”;另外,会带来大量重复性的、易错的人工劳动,使得人工成本增加,人员利用率减低。

而DevOps的出现对这类问题起到了良好的“治愈”效果。据相关研究调查显示,采用了DevOps的工作组织,比起传统的低效组织来说,可以完成平均每年1460次部署,部署频繁200倍,产品投入使用速度快2555倍,服务恢复速度快24倍。

本项目在开发建设过程中引入DevOps的工作理念,通过使用成熟的工具链和技术栈,将DevOps的思想深入到团队每个成员心中,并作为指导思想来开展工作,可以大大提升开发的效率和部署的效率,而且减少重复性工作量,降低部署出错率和风险,从而提升整个团队的工作效率和工作产出。

以上为在做“某集团电力基建信息管理系统”项目系统设计时,需要考虑和关注的关键技术。经过我们团队的不懈努力,历时14个月,本项目于2020年8月,通过了甲方的验收,该项目成功上线以后,大大提高了某集团电力基建相关业务人员的工作效率,减轻了某集团电力基建相关业务人员的工作强度,收到了用户的高度肯定和评价。

随着技术的不断演进、市场化的需求不断演变。软件设计的难度和维度正在变得复杂。面对复杂的周遭环境,我们只有做到快速响应和高效反馈、解决问题,才能在市场竞争中立于不败之地。基于这样的形势,我们唯有不断地精进自己技术的广度和深度,在做系统设计时,才能多方位,多维度的去考虑如何设计出一个更加合适的系统。

猜你喜欢
容器框架部署
框架
难以置信的事情
浅谈框架网页的学习
基于Jmeter对Node框架性能的测试研究
韩暂停部署新增“萨德”系统
韩国宣布暂停部署“萨德”
液体对容器底及容器对桌面的压力和压强
取米
一元一次不等式和一元一次不等式组