从人工到自动,泛微云上自动化部署实践

简介: 泛微借助阿里云的底层优势,将部分客户的服务迁移到云上,从硬件和网络上保证用户能够高效访问 OA 系统

作者:阿里云弹性计算技术专家 闲炎

image.png

泛微成立于2001 年,总部设立于上海,专注于协同管理OA软件领域,并致力于以协同OA为核心帮助企业构建全新的移动办公平台。在移动办公领域,打造了上海医药、复星集团、绿地集团等多个业界标杆。

近年来,随着云办公的兴起,一些集团性企业(企业用户量在几万、十几万人)也开始尝试私有云部署模式。泛微借助阿里云的底层优势,将部分客户的服务迁移到云上,从硬件和网络上保证用户能够高效访问 OA 系统,包括:

• 应用端采用高可用、可扩展性的集群架构。针对集团型大型客户人员快速增长具有“无缝式”快速扩容资源,可以满足客户不同场景需求。
• 数据端支持阿里云RDS数据源,能够保障用户高并发下业务支撑的稳定性,同时可以提升单机的承载能力,提升数据库端承载压力,并对容灾性具有很大的提升。
• 用户数据自动备份,采用 ECS 自动快照备份策略,应用附件通过 OSS“加密”存储,数据库采用物理备份+整库闪回策略。
• 安全方面使用阿里云盾可以针对WEB、APP、网络业务等进行整体防护, 保护用户数据安全 。

image.png

泛微在阿里云上的基本部署架构

一直以来,这种上云架构都是专门的运维人员通过手动部署的方式进行。针对不同体量的客户,部署架构也有所区别。随着泛微 OA 客户的云上客户增多,为每个客户手动部署所产生的问题日益凸显。

一、痛点:手动部署困境

1、效率低下、失误率高

泛微 OA 软件的部署分为两个部分:
• 所依赖的云服务资源部署,如专有网络、交换机、安全组、ECS 实例、RDS 实例、SLB 实例、Redis 实例、NAS 等
• 应用软件部署,如 JDK、泛微 OA 服务端,以及启动前的各种配置

所有云资源都需要通过手动方式一个个创建,其之间的关系也需要人工自行配置。在所有云资源就绪之后,还要手动安装软件包并配置各种参数。完整流程下来要耗费数个小时。这个过程还可能遇到配置错误的问题,失误率高,使得整体部署时间可能变得更长。

2、非标准化

由于是人工部署,就意味着哪怕是同一个运维人员,每一次部署的结果都有可能是不同的。比如错配了一个端口、安装错了某个版本。而由于部署文档的不完善,集群化部署方法更多地是有经验的部署同学自己掌握,新人往往会有学习成本和试错成本。
如果不能标准化整个部署流程,那么中间环节出现错误的可能性就会大大增加,也会增加整个公司的成本。

3、管理困难

手动创建好云服务资源后,管理各云服务需要去对应控制台,我们很难对整体资源进行管理。而在面对扩缩容集群场景时,无法轻易地了解全局部署情况,扩缩容也会变得困难和复杂。

二、自动化部署利器:资源编排服务ROS

面对手动部署的痛点,泛微亟需自动化部署的方式降低部署成本、提升部署体验。最终,泛微通过阿里云的资源编排 ROS 完成了手动到自动化的转型,实现了10倍以上的提效。

什么是资源编排服务?

资源编排服务 ROS(Resource Orchestration Service)是一款帮助阿里云用户简化云资源管理的自动化服务。通过编写 JSON/YAML 格式的模板,在模板中定义所需的云服务资源(如 ECS 实例、数据库实例等)以及资源依赖关系等,根据此模板在 ROS 中创建资源栈,ROS 服务端将根据模板自动完成所有资源的创建和配置,实现自动化部署及运维。而资源栈则管理着模板中定义的所有资源,并可通过新模板来更新资源栈,在资源栈中新增、更新或删除部分或所有资源。

image.png

三、ROS的特点:IaC和标准化部署

借助阿里云的资源编排服务,用户可以向基础设施即代码这个未来趋势转型,实现标准化部署。

1、基础设施即代码

基础设施即代码(Infrastructureas Code,IaC)的理念是将基础设施配置视为软件编程。使用 ROS 可以帮助最快速地实践 DevOps 中关于 IaC 的理念,通过模板来定义和管理基础设施。在 DevOps 实践中,资源编排可以轻松地克隆开发、测试、线上环境;同时,也可以更容易实现应用的整体迁移和扩容。

2、标准化部署

在实践中,不同环境的细微差异往往带来非常复杂的管理成本,延长了问题诊断的时间,从而影响了业务的正常运转。通过使用 ROS 模板可以将部署环境标准化,减少不同环境的差异,将环境的配置沉淀到模板中。再通过版本管理、CodeReview 等流程,保证部署的标准性。

四、ROS 如何助力泛微自动化部署

使用ROS实现自动化部署,用户需要经过下面几步:

1、定义模板

基于泛微的部署架构,根据 ROS 的模板语法,在模板中声明所需要的阿里云资源(如 ECS 实例、数据库实例等)、参数、描述、条件等内容。模板的基本内容如下:

image.png

ROS 还提供了可视化编辑器能力,可在编辑器中拖拽资源来生成模板,也可通过现有模板查看架构图。

image.png

2、模板解析与执行

通过 ROS 控制台可使用定义好的模板来创建资源栈,以创建出所定义的云资源并进行应用软件安装、配置。

当 ROS 接收到用户创建资源栈的请求时,会对模板进行解析。解析包括语法检查、参数校验、依赖分析等。依赖分析就是分析出资源间的依赖关系,目的有两个:

• 确保创建顺序的正确性:被依赖资源创建完成后才会创建依赖资源。
• 资源并行创建能力:无依赖关系的资源可以并行创建。

模板解析完成后,就会开始创建资源。每个资源在创建开始、创建完成、创建失败均会有事件通知,可在控制台查看。资源创建完成后也可看到资源的 ID,并点击跳转到对应产品的控制台。

通过模板可以快速地重复部署,尤其多地域、多可用区部署的情况;同时也可以减少环境之间的偏差,将部署过程和结果标准化,减少因为环境偏差引入的系统问题。

五、收获价值:效率提升10倍

泛微使用资源编排服务 ROS之后,部署一个OA系统从原来的手动部署一天,到现在只需要1小时,效率提升了10倍以上,整个部署过程变得顺滑和标准,极大提升了部署人员的幸福感。

云计算时代,部署和管理云服务资源是最基础的操作,资源编排服务 ROS 作为阿里云上原生的自动化编排部署服务,让自动化部署的过程发挥到了极致,为泛微提供了强有力的支持,让泛微在云上的体验畅通无阻。

相关文章
|
23天前
|
人工智能 JavaScript 前端开发
自动化测试框架的演进与实践###
本文深入探讨了自动化测试框架从诞生至今的发展历程,重点分析了当前主流框架的优势与局限性,并结合实际案例,阐述了如何根据项目需求选择合适的自动化测试策略。文章还展望了未来自动化测试领域的技术趋势,为读者提供了宝贵的实践经验和前瞻性思考。 ###
|
1月前
|
机器学习/深度学习 人工智能 jenkins
软件测试中的自动化与持续集成实践
在快速迭代的软件开发过程中,自动化测试和持续集成(CI)是确保代码质量和加速产品上市的关键。本文探讨了自动化测试的重要性、常见的自动化测试工具以及如何将自动化测试整合到持续集成流程中,以提高软件测试的效率和可靠性。通过案例分析,展示了自动化测试和持续集成在实际项目中的应用效果,并提供了实施建议。
|
1月前
|
Java 测试技术 持续交付
探索自动化测试在软件开发中的关键作用与实践
在现代软件开发流程中,自动化测试已成为提升产品质量、加速交付速度的不可或缺的一环。本文深入探讨了自动化测试的重要性,分析了其在不同阶段的应用价值,并结合实际案例阐述了如何有效实施自动化测试策略,以期为读者提供一套可操作的实践指南。
|
1月前
|
监控 jenkins 测试技术
自动化测试框架的构建与实践
【10月更文挑战第40天】在软件开发周期中,测试环节扮演着至关重要的角色。本文将引导你了解如何构建一个高效的自动化测试框架,并深入探讨其设计原则、实现方法及维护策略。通过实际代码示例和清晰的步骤说明,我们将一起探索如何确保软件质量,同时提升开发效率。
46 1
|
21天前
|
运维 监控 持续交付
自动化运维在现代数据中心的应用与实践####
本文探讨了自动化运维技术在现代数据中心中的应用现状与实践案例,分析了其如何提升运维效率、降低成本并增强系统稳定性。通过具体实例,展示了自动化工具如Ansible、Puppet及Docker在环境配置、软件部署、故障恢复等方面的实际应用效果,为读者提供了一套可参考的实施框架。 ####
|
21天前
|
运维 监控 Devops
自动化运维实践:打造高效的DevOps流水线
在软件开发的快节奏中,自动化运维成为提升效率、确保质量的关键。本文将引导你理解自动化运维的价值,通过实际案例分享如何构建一个高效、可靠的DevOps流水线。我们将从持续集成(CI)开始,逐步深入到持续部署(CD),并展示代码示例来具体说明。准备好让你的运维工作飞跃式进步了吗?让我们开始吧!
|
25天前
|
jenkins 测试技术 持续交付
自动化测试框架的搭建与实践
在软件开发领域,自动化测试是提升开发效率、确保软件质量的关键手段。本文将引导读者理解自动化测试的重要性,并介绍如何搭建一个基本的自动化测试框架。通过具体示例和步骤,我们将探索如何有效实施自动化测试策略,以实现软件开发流程的优化。
52 7
|
1月前
|
敏捷开发 Java 测试技术
软件测试中的自动化策略与实践
在快速迭代的软件开发周期中,自动化测试是确保产品质量和提升开发效率的关键。本文将深入探讨自动化测试的重要性,介绍实用的自动化测试框架,并通过一个具体的代码示例,说明如何实现一个简单的自动化测试脚本。
45 12
|
28天前
|
机器学习/深度学习 人工智能 自然语言处理
智能化软件测试:AI驱动的自动化测试策略与实践####
本文深入探讨了人工智能(AI)在软件测试领域的创新应用,通过分析AI技术如何优化测试流程、提升测试效率及质量,阐述了智能化软件测试的核心价值。文章首先概述了传统软件测试面临的挑战,随后详细介绍了AI驱动的自动化测试工具与框架,包括自然语言处理(NLP)、机器学习(ML)算法在缺陷预测、测试用例生成及自动化回归测试中的应用实例。最后,文章展望了智能化软件测试的未来发展趋势,强调了持续学习与适应能力对于保持测试策略有效性的重要性。 ####
|
28天前
|
敏捷开发 Devops 测试技术
探索自动化测试之美:从理论到实践
在软件开发的海洋中,自动化测试犹如一座灯塔,指引着项目向着质量和效率的彼岸。本文将扬帆起航,从自动化测试的意义出发,穿越工具选择的海域,停靠在实战演练的岛屿,最终抵达持续集成的港湾。我们将通过一个具体的代码示例,体验自动化测试的魅力,并分享如何将这些实践应用到日常的软件质量保证过程中。