新闻中心

洞察行业前沿技术,聚焦梯度科技动态

某科研单位信息系统DevOps开发、运维一体化实践
2022-04-07
文章来源:
作者:梯度科技

导读:本文由梯度科技高级开发工程师汤吉昌撰写,主要介绍梯度智能云平台在某科研单位信息系统中的应用,针对内部各开发团队和运维团队独立、开发项目周期长等问题,提出DevOps的构建理念,通过梯度智能云平台实现DevOps开发、运维一体化,在确保产品质量的前提下缩短交付时间,提升交付效率。



01
项目背景



某科研单位信息系统于20186月开始建设,由20多个软件厂商共同参与建设,项目内部各开发团队和运维团队是完全独立的,项目虽采用微服务的架构方案建设,但由于建设初期没有采用DevOps的构建理念,项目团队经历了各种各样的问题如:

1.当开发团队针对需求进行代码设计/构建后,测试任务和部署任务是完全孤立彼此的活动,往往导致整体项目实际周期比预期构建耗时更长

2.团队成员各自花费大量时间用于设计,开发,测试,部署,而非汇聚于整体项目构建

3.手动部署代码往往不可避免出现人为错误,即便通过 Jenkins 持续集成,仅仅只解决了快速部署的问题,环境的差异、资源的分配等核心问题依然存在

4.产品,开发,测试,运维团队有各自的时间轴,并不同步,将导致延迟的情况。从用户需求到发布上线需要1个月,整体周期长,导致用户对项目团队的迭代频次大为不满。



02
应用效果



去年,通过梯度科技以云原生生态为核心的梯度智能云平台并引入了DevOps的理念,目标就是希望能够提高研发人员从代码构建到业务上线的整体效率。整个过程实现了一个完整的开发、运维一体化流程,包括从开发人员提交代码、代码 Review、代码编译、单元测试、集成测试,到最后构建出业务镜像,在不同的环境中部署业务等各个环节,形成了统一的应用全生命周期管理。  

梯度智能云平台以高可用形式部署,保证在节点异常的情况下能正常运行,它可以解决开发、测试、运行环境统一、服务快速部署、运行期服务管理等调度的问题。提供裸金属、虚拟机、私有云、公有云统一接入的能力,屏蔽业务应用对基础设施层不同的依赖。


图片1.png

梯度智能云平台功能架构图


梯度智能云平台在项目中起到的作用如下:

租户/用户管理:每个参建厂商都是智能云平台的用户,用户与用户之间资源隔离,互不影响;同时根据用户权限划分,公共资源(如:节点资源、集群资源、域名资源等)只有运维管理员有操作权限;依靠细粒度的权限管理,将每个角色的责任划分的非常细致,出现问题可以快速定位到相应的责任人,提高问题解决速度。

配置中心:业务应用的配置文件统一托管到配置中心,生产环境中部分关键的配置信息(如:数据库密码、特殊服务授权等)由客户管控,通过配置中心可以快速修改并启用,起到安全隔离的作用。同时灵活的配置中心也可以管理应用的配置文件,根据环境的不同设置不同的配置文件。

持续交付:智能云平台提供了代码获取、代码检查、编译打包、构建业务镜像、自动部署的功能。研发人员提交代码到Git仓库后既可自动或手动触发构建任务,从提交代码到完成自动部署整个过程不会超过3分钟,整个过程完全自动,节省大量时间。

微服务管理:集成测试过程中,依靠微服务管理可以实现流量的管控、故障注入等功能,提高了集成测试的效率,并增强了软件的健壮性,使测试更加充分。通过微服务实现蓝绿发布、灰度发布等,并展现了整个软件的调用拓扑,可实时监控应用之间的流量、成功率、失败率等。   

资源管理:通过资源管理,将研发现场容器云划分为2个集群,分别是测试环境集群和演示环境集群,两个集群之间计算资源、网络资源都完成隔离,保证了两个环境的独立性,杜绝了互相影响。

监控管理:业务应用部署后,智能云平台会监控每一个应用的运行状态、资源消耗等指标,同时也监控服务器主机的运行状态和资源消耗,当出现异常时,平台会告警,并将告警信息发送给运维人员。

镜像仓库:业务应用打包成业务镜像后,统一提交到镜像仓库,镜像仓库保存了每一个版本的镜像,能快速的回滚;同时镜像仓库还提供了安全扫描的功能,可以扫描每一个镜像的安全漏洞。

应用管理:管理着所有部署的业务应用,可以随时增加实例数、调整资源、应用启停、应用回滚等;同时可直观的查看所有应用的运行情况。

编排管理:提供helm编排文件包,可快速部署中间件集群,如果redis、zookeeper、elasticsearch、rabbitmq等。

日志管理:采集并保存所有业务应用日志、操作日志、平台日志,系统提供日志查询、日志分析等功能,可以在智能云平台上查看异常日志,快速定位问题。



03
DevOps开发、运维一体化流程



项目建设中共有四个环境,分别是:开发环境、集成测试环境、演示环境、生产环境,其中开发环境、集成测试环境、演示环境都依赖项目现场机房,生产环境在生产机房,两个机房完全物理隔离,分别部署了容器云平台,根据项目实际情况DevOps的流程如下:

图片2.png


根据参与角色分为五个阶段:

第一阶段:研发人员提交代码后将自动触发构建任务,构建任务会从Git仓库拉取代码,经过代码检查和编译打包成镜像后,自动将业务镜像提交到镜像仓库,同时将自动完成测试环境新版本的部署。

第二阶段:自动构建任务完成后,测试人员将开始集成测试,集成测试由于涉及到和其他厂商的沟通协调,需要人工参与;在测试过程中依靠微服务治理实现流量监控、故障注入等测试,使整个集成测试更加充分;在性能测试过程中,通过查询容器云平台的监控指标,可以非常直观的查看业务应用的资源占用情况、网络流量情况等。

第三阶段:集成测试通过后,测试人员通知运维人员手动将业务镜像在演示环境中升级。

第四阶段:在演示环境中,产品经理和客户共同验证业务需求的完成度,并决定是否发布到生产环境。

第五阶段:确定发布生产环境后,由于项目现场机房和生产机房完全隔离,需将业务镜像通过移动介质导入到生产环境中,由客户方运维人员部署到生产环境。此时,可根据业务的实际情况确定发布策略,容器云平台提供了滚动升级、蓝绿发布、灰度发布三种发布策略。

DevOps流程的关键点是业务镜像,依靠docker镜像将应用的运行环境固化,确保业务应用运行的稳定、可靠。


04
使用DevOps带来的效果

通过一年多以来的实践,使用DevOps带来以下好处:

1.全量交付,解决增量交付中版本混乱、版本丢失等问题,解决镜像多个迭代后管理失控问题

2.自动化构建,规范检查,业务版本发布,提升交付效率,极大减轻研发人员、测试人员和运维人员的沟通负担

3.通过Git代码源及版本仓库,各个阶段通过验证MD5,解决业务应用的唯一性

4.流程中任何一个环节出现问题,停止整个流水线,迅速反馈,及时修复,防止上游问题流转到下游,降低上线风险


DevOps流程带来的效率提升具体表现如下

1.测试环境发布频次小于10/天提升到120+/

2.生产环境发布频次小于5/周提升到100+/周;

3.提出需求到发布生产10天提升到2天;

4.版本迭代周期从月级别,提升到周级别




0771-5345636