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

本文涉及的产品
云服务器 ECS,u1 2核4GB 3个月
云服务器 ECS,u1 4核8GB 1个月
云服务器 ECS,每月免费额度200元 3个月
简介: 泛微借助阿里云的底层优势,将部分客户的服务迁移到云上,从硬件和网络上保证用户能够高效访问 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天前
|
敏捷开发 测试技术 持续交付
自动化测试框架的演进与实践
随着软件开发流程的加速,自动化测试成为确保软件质量的关键。本文将探索自动化测试框架的发展轨迹,从早期的线性脚本到现代的持续集成环境中的复杂框架,并讨论如何根据项目需求选择合适的自动化测试工具,以及实施自动化测试策略时面临的挑战和解决方案。
|
17天前
|
运维 监控 Devops
DevOps文化下的自动化运维实践
本文将探讨在DevOps文化背景下,自动化运维的重要性及其实现方式。通过分析自动化运维的优势和挑战,文章提供了具体的实施策略和案例,旨在帮助读者理解如何在DevOps实践中融入自动化运维,以提高软件开发和部署的效率与质量。
|
2月前
|
运维 监控 Docker
构建高效微服务架构:从理论到实践构建高效自动化运维体系:Ansible与Docker的完美融合
【5月更文挑战第31天】 在当今软件开发的世界中,微服务架构已经成为了实现可伸缩、灵活且容错的系统的关键策略。本文将深入探讨如何从零开始构建一个高效的微服务系统,涵盖从概念理解、设计原则到具体实施步骤。我们将重点讨论微服务设计的最佳实践、常用的技术栈选择、以及如何克服常见的挑战,包括服务划分、数据一致性、服务发现和网络通信等。通过实际案例分析,本文旨在为开发者提供一套实用的指南,帮助他们构建出既健壮又易于维护的微服务系统。
|
3天前
|
存储 人工智能 运维
自动化运维工具链的搭建与实践
【6月更文挑战第26天】在当今快速迭代的技术环境下,自动化运维成为保障服务稳定性和提升工作效率的重要手段。本文将深入探讨如何搭建一套高效的自动化运维工具链,包括工具选择、配置管理、持续集成与部署等关键环节,并分享实践中的经验教训。通过实例分析,本文旨在为读者提供一条清晰的自动化运维实施路径,助力企业快速适应市场变化,提升竞争力。
12 4
|
1天前
|
运维 Kubernetes 安全
自动化运维在现代IT架构中的角色与实践
【6月更文挑战第28天】随着企业对信息技术的依赖日益加深,高效、可靠的运维体系变得至关重要。本文将探讨自动化运维如何优化现代IT架构,提升运维效率和系统稳定性。我们将从实际案例出发,分析自动化工具的选择、部署策略以及面临的挑战,为读者提供一套可行的自动化运维解决方案。
|
6天前
|
机器学习/深度学习 人工智能 测试技术
自动化测试框架的演进与实践
【6月更文挑战第23天】在软件工程领域,自动化测试框架的发展不断推动着质量保证的效率和效果。本文将探讨自动化测试框架从简单脚本到复杂集成系统的演变过程,并分析当前流行的框架如Selenium、Appium以及新兴的AI驱动测试工具。我们将通过具体案例,展示如何在现代软件开发实践中有效应用这些框架以提升测试覆盖率和准确性。
|
2天前
|
Java 测试技术 持续交付
自动化测试实践:从单元测试到集成测试
【6月更文挑战第28天】-单元测试:聚焦代码最小单元,确保每个函数或模块按预期工作。使用测试框架(如JUnit, unittest),编写覆盖所有功能和边界的测试用例,持续集成确保每次变更后自动测试。 - 集成测试:关注模块间交互,检查协同工作。选择集成策略,编写集成测试用例,模拟真实环境执行测试,整合到CI/CD流程以持续验证软件稳定性。 自动化测试提升软件质量,降低成本,加速开发周期,是现代软件开发不可或缺的部分。
|
27天前
|
存储 数据管理 测试技术
构建Python构建自动化测试框架(原理与实践)
当谈到软件质量保证时,自动化测试是一个不可或缺的步骤。Python作为一种简单易学的编程语言,具有丰富的测试框架和库,使得构建自动化测试框架变得相对简单。本文将介绍如何使用Python构建自动化测试框架,包括选择合适的测试框架、编写测试用例、执行测试和生成报告等方面。
构建Python构建自动化测试框架(原理与实践)
|
9天前
|
机器学习/深度学习 人工智能 测试技术
探索自动化测试的前沿技术与实践
自动化测试作为提升软件开发效率和质量的关键工具,正经历着前所未有的变革。随着人工智能、机器学习、云计算等技术的融合与创新,自动化测试不断突破传统界限,展现出更智能、更高效、更灵活的发展趋势。本文将深入探讨自动化测试领域的最新技术进展,分析其在现代软件开发中的应用,并讨论如何有效整合这些技术以最大化测试效率和准确性。
|
11天前
|
数据可视化 前端开发 Java
自动化测试框架的选择与实践: Selenium vs. TestComplete
【6月更文挑战第18天】在软件开发的海洋中,自动化测试是一艘能够确保产品质量和效率的坚固船只。本文将深入探讨两种流行的自动化测试框架——Selenium和TestComplete,从它们的优势、局限性到适用场景进行对比分析。我们将通过实际案例来揭示如何根据项目需求选择最合适的测试工具,并提供一些实用的实施建议。文章旨在为读者提供清晰的指导,帮助他们在自动化测试的旅程中做出明智的决定。
15 3