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

简介: 泛微借助阿里云的底层优势,将部分客户的服务迁移到云上,从硬件和网络上保证用户能够高效访问 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 作为阿里云上原生的自动化编排部署服务,让自动化部署的过程发挥到了极致,为泛微提供了强有力的支持,让泛微在云上的体验畅通无阻。

相关文章
|
5天前
|
敏捷开发 人工智能 Devops
探索自动化测试的高效策略与实践###
当今软件开发生命周期中,自动化测试已成为提升效率、保障质量的关键工具。本文深入剖析了自动化测试的核心价值,探讨了一系列高效策略,包括选择合适的自动化框架、设计可维护的测试脚本、集成持续集成/持续部署(CI/CD)流程,以及有效管理和维护测试用例库。通过具体案例分析,揭示了这些策略在实际应用中的成效,为软件测试人员提供了宝贵的经验分享和实践指导。 ###
|
5天前
|
机器学习/深度学习 人工智能 jenkins
软件测试中的自动化与持续集成实践
在快速迭代的软件开发过程中,自动化测试和持续集成(CI)是确保代码质量和加速产品上市的关键。本文探讨了自动化测试的重要性、常见的自动化测试工具以及如何将自动化测试整合到持续集成流程中,以提高软件测试的效率和可靠性。通过案例分析,展示了自动化测试和持续集成在实际项目中的应用效果,并提供了实施建议。
|
5天前
|
Java 测试技术 持续交付
探索自动化测试在软件开发中的关键作用与实践
在现代软件开发流程中,自动化测试已成为提升产品质量、加速交付速度的不可或缺的一环。本文深入探讨了自动化测试的重要性,分析了其在不同阶段的应用价值,并结合实际案例阐述了如何有效实施自动化测试策略,以期为读者提供一套可操作的实践指南。
|
5天前
|
Web App开发 敏捷开发 测试技术
探索自动化测试的奥秘:从理论到实践
【10月更文挑战第39天】在软件质量保障的战场上,自动化测试是提升效率和准确性的利器。本文将深入浅出地介绍自动化测试的基本概念、必要性以及如何实施自动化测试。我们将通过一个实际案例,展示如何利用流行的自动化测试工具Selenium进行网页测试,并分享一些实用的技巧和最佳实践。无论你是新手还是有经验的测试工程师,这篇文章都将为你提供宝贵的知识,帮助你在自动化测试的道路上更进一步。
|
5天前
|
敏捷开发 Java 测试技术
探索自动化测试:从理论到实践
【10月更文挑战第39天】在软件开发的海洋中,自动化测试是一艘能够带领团队高效航行的船只。本文将作为你的航海图,指引你理解自动化测试的核心概念,并分享一段实际的代码旅程,让你领略自动化测试的魅力和力量。准备好了吗?让我们启航!
|
6天前
|
机器学习/深度学习 数据采集 人工智能
智能运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的兴起背景、核心组件及其在现代IT运维中的应用。通过对比传统运维模式,阐述了AIOps如何利用机器学习、大数据分析等技术,实现故障预测、根因分析、自动化修复等功能,从而提升系统稳定性和运维效率。文章还深入分析了实施AIOps面临的挑战与解决方案,并展望了其未来发展趋势。 ####
|
7天前
|
数据采集 IDE 测试技术
Python实现自动化办公:从基础到实践###
【10月更文挑战第21天】 本文将探讨如何利用Python编程语言实现自动化办公,从基础概念到实际操作,涵盖常用库、脚本编写技巧及实战案例。通过本文,读者将掌握使用Python提升工作效率的方法,减少重复性劳动,提高工作质量。 ###
22 1
|
10天前
|
测试技术 API Android开发
探索软件测试中的自动化框架选择与实践####
本文深入探讨了软件测试领域内,面对众多自动化测试框架时,如何依据项目特性和团队需求做出明智选择,并分享了实践中的有效策略与技巧。不同于传统摘要的概述方式,本文将直接以一段实践指南的形式,简述在选择自动化测试框架时应考虑的核心要素及推荐路径,旨在为读者提供即时可用的参考。 ####
|
13天前
|
运维 负载均衡 Ubuntu
自动化运维的利器:Ansible入门与实践
【10月更文挑战第31天】在当今快速发展的信息技术时代,高效的运维管理成为企业稳定运行的关键。本文将引导读者了解自动化运维工具Ansible的基础概念、安装步骤、基本使用,以及如何通过实际案例掌握其核心功能,从而提升工作效率和系统稳定性。
|
15天前
|
数据管理 程序员 数据处理
利用Python自动化办公:从基础到实践####
本文深入探讨了如何运用Python脚本实现办公自动化,通过具体案例展示了从数据处理、文件管理到邮件发送等常见办公任务的自动化流程。旨在为非程序员提供一份简明扼要的实践指南,帮助他们理解并应用Python在提高工作效率方面的潜力。 ####