运营商系统快速上云的实践分享

运营商系统上云的背景

系统上云是数字经济发展的潮流,在数字化转型的浪潮中,上云已经成为推动各行各业创新和效率提升的关键力量。运营商作为服务行业和企业上云的服务商,积极响应国家号召的同时为行业上云打造案例标杆,自身的系统要首先上云。

运营商运营支撑体系上云也有内在的需要,系统架构不统一、依赖传统IOE硬件、单体架构等,带来了部署成本高、维护困难、无法根据业务弹性伸缩、新业务扩展支撑响应慢等一系列问题。互联网企业的云化实践以及前期的试点经验都表明,上云是高效解决这些问题的必由之路。

系统上云的目标

参考互联网企业云化实践思路,结合运营商现网系统情况,按照“先云化,再上云”的策略,采取去IOE、微服务化、容器化、中心化、统一和多底座兼容、云化工具配套 6大举措实现上云,最终达成节省IT投资、简化配置部署、弹性伸缩、快速集成、灵活扩展和降低运维难度的目标。

图片

上云的挑战

运营商系统上云存在很多挑战,包括但不限于架构适配改造工作量大,性能、可靠性和安全风险高,现有标准不满足云化特性,缺乏底座能力,存在工程实施周期长、风险高、业务迁移难和运营效率低等多方面挑战。

传统架构笨重,适配改造困难

运营商的系统往往是基于传统的、大型的、集成度高的架构设计,这些系统需要大量的改造才能适应云环境。例如,将单体应用拆分为微服务架构,需要重新设计服务的模块、通信机制等等。旧系统未微服务化,依赖较重的中间件,烟囱式支撑业务,升级较为繁琐,无法动态伸缩部署,前后端未做分离,定位问题困难等,需要在较短时间内完成系统的架构升级。

现有标准不满足云化特性,缺乏统一平台底座

现有系统基于IOE构建,使用重量级中间件或开源中间件,未使用统一的PAAS组件。缺乏统一平台底座,导致系统云化改造缺乏统一架构标准、改造工作量大、扩展支撑难度高,例如不具备低代码快速配置实现前端需求能力、报表快速配置能力。

工程实施风险大周期长

上云要求复杂的项目管理、多方协调和技术实施,这些因素可能导致上云项目延期或预算超支。追求快速上云的过程中,过于复杂或不明确的项目目标和范围设定可能导致实施进度缓慢,难以在预定计划完成。

业务迁移难

运营商业务复杂,为保证业务正常运行,需同时兼顾新老系统需求的并行支撑。共性需求没有统一研发,不能共享成果,人力资源浪费,个性化需求响应不及时,端到端全流程有断点,无法快速的承接迁移业务。

配置开发工作量大/表单界面多

流程业务配置工作量大,需要配置流程、环节、时限和业务组件埋点等,表单个性化需求较多、表单界面多,需投入较多前段人力开发。

运营困难

定制化需求多,变更较为频繁,上线后难运维,缺乏故障快速发现、定位、处理手段,并且无法快速进行需求研发迭代。

运营商系统快速上云实践

在运营商系统上云实践过程中,为达成系统云化特性标准,针对上云过程中的诸多困难点,按照“八步法”组织实施,有序推进,实现了系统并行实施和快速上云。

画蓝图

总体思路是基于统一底座实现多业务系统统一云化架构,优化资源利用率,整体上实现业务与技术的解耦,提高系统的灵活性和可维护性。

架构自下而上分为硬件层、PAAS层、应用层以及展示层,其中硬件层提供必要的计算能力、数据存储能力和网络通信能力,是支撑上层应用运行的物理基础,硬件资源通常通过虚拟化技术被抽象化,以支持更灵活和可扩展的网络功能和服务;PAAS层为上层业务应用提供了统一的云化技术底座,提供流程平台与搜索引擎、开放的API设计能力、低代码能力的表单设计器、灵活的规则配置平台与报表平台等组件或能力;应用层基于服务能力开放平台支持模块化服务,通过API快速集成构成多业务系统,采用容器化技术来封装和部署各种应用和服务,保障云资源环境的一致性,支持快速部署和拓展,资源隔离,可伸缩性;展示层提供云化应用系统的统一对外交互界面。

图片

定标准

针对上云的挑战和目标,对标上云目标特性,制定了以下目标措施:

  • 完成系统去IOE及去Weblogic、Websphere 等商业软件;

  • 统一使用平台PaaS组件,包括不限于Cache,pg,mq等等;

  • 能力注册:对外提供能力注册平台,有效调用,应用和界面解耦,核心功能能够注册并调用;

  • 代码平台托管:全量代码托管到平台代码仓库且动态更新;

  • CI/CD:容器化实现平台的编译打包和部署,实现动态伸缩;

  • 敏捷开发:平台实现从软件开发需求到可部署代码的开发全过程管理;

  • 故障快速定位解决: IaaS/PaaS/SaaS相关业务指标监控,故障时快速发现并定位,较短时间内处理解决。

搭底座

以微服务化架构对外提供服务,实现应用与平台解耦,基于这个核心底座,可以快速进行业务流程的加载,实现敏捷开发、实现需求开发测试上线转维的全周期管控。统一底座包含如下一系列共享平台组件:

流程平台:严格遵循BPMN规范,提供全面的流程管理功能,包括流程定义、监听配置和部署。支持流程实例的创建、启动和完成,支持任务节点的生成、完成,以及环节参与者的指定、签收、改派和加派等操作。此外,平台还提供灵活的微流程设计工具,以适应各种业务需求,确保流程管理的高效和灵活。

自定义表单设计器:支持低代码的方式快速配置表单的各项业务属性、数据源,适合不同设计与应用场景。

API设计平台:支持多种通信协议,如:http/restful、soap/webservice、websocket。

规则平台:支持一个规则定义下有百万级规则实例数,可根据多种条件组合规则进行智能调度。

报表平台:新报表平台支持多数据源、可视化设计、多种类型表格及图表,提供丰富模板,支持快速自定义配置。

搜索平台:集成高效的Elasticsearch查询分析服务,优化并加速工单搜索过程确保快速准确地检索相关工单信息。

升架构

架构升级原则依托于云原生的10要素(前后端分离、应用与数据解耦、中心化&微服务设计、无状态设计、应用与配置分离、统一日志、水平扩展、快速启动、容器部署、应用敏捷交付)实现架构弹性伸缩,具备研发云、云眼、云桥等平台对接的能力。

图片

用工具

合理的利用工具能提升研发、配置效率,做到事半功倍的效果,业务发布助手以及底代码表单工具为快速上云实践提供了巨大助力。

业务发布助手:实现将业务场景设计的流程、表单、埋点、调度策略、时限规则等业务配置打包,发布到其他环境,如从研发环境生成业务包,发布到生产环境,避免重复配置,提升上云业务配置效率。

低代码表单工具:基于低代码表单平台“拖拉拽”的模式快速实现界面需求,省去大部分的编码工作量,降低了研发门槛,节约资源投入,提高效率。

图片

迁业务

业务迁移的过程采取专题需求版本统一研发、规范发布、自动数据迁移比对和共性能力预置等手段,帮助核心业务流程快速迁移整合。

统一研发:针对专题需求,由统一团队对需求进行统一分析、设计和研发,制定基线版本,最大程度上缩短交付周期。

规范发布:统一版本包(应用包+数据包)、部署操作手册、演示脚本等,支持定制需求落地。

自动数据迁移比对:对于复杂流程,针对性的设计了数据迁移比对流程,较好的实现了旧系统数据的迁移到云化系统。

图片

共性能力预置:针对具有共性的业务场景在出厂时预置了对应的模块以及配置数据,实现快速的业务迁移,具备可复制性可推广性。

建模式

为应对多项目并行交付的挑战,确保项目同步推进,统一支撑团队通过优化资源配置和规范化交付流程,快速识别并解决潜在问题,统一版本输出,加强各省项目的统一性和效率。同时建立了项目交付模型框架,在交付前中后六个阶段规定了标准动作输出,系统化地推进交付运营并提升交付质量。

图片

优运营

系统迁移上云,需优化需求保障、研发提效、运维提升等各种运营指标,做到事中并行保障,事后优化提升。

1、针对多项目并发需求,采取统一支撑,亮点共享,个性需求小循环,共性需求大循环的模式。

统一团队作为需求分析接口人过滤共性需求还是个性化需求,如果判定为个性化需求就由各自团队内部进行分析、设计、研发、测试、交付;如果是共性需求则由统一团队进行后续的流程,做到多点交付,亮点共享,节约成本。

2、运维上采取多个有效措施,来解决发现难、定位慢、解决差的问题。

针对中间件比如cache,mq,数据库等问题,利用监控平台进行日常监控,出现问题及时发现并告警通知。针对应用类故障的引入调用链相关,提供图形化界面快速定位故障点,避免传统人工排查日志定位。针对故障出现的业务数据修复,引入业务清障助手,可以批量快速的处理故障引发的异常业务数据。

图片

基于上云采取的积极有效措施,团队在一年内完成了超过30套系统的快速上云,取得了良好的效果。经运行监测发现,系统上云后,系统性能上提升35%左右,稳定性大幅提高,系统部署和运维成本降低幅度达到75%,系统不再依赖昂贵的硬件和商用中间件,节省了大量的IT投资;云环境支持快速部署新服务和应用,响应变化的速度比传统IT架构快50%以上;DevOps和自动化工具的集成简化了开发和运维流程,使得新功能从开发到上线的时间可以缩短至几小时或几天。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/17489.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java如何读取指定地址的tif格式图片转为base64编码

在Java中,要将指定地址的TIFF(tif)格式图片转换为Base64编码,你需要执行以下步骤: 1、使用java.nio.file包中的Files类或java.io包中的FileInputStream来读取文件。 2、使用java.util.Base64类(在Java 8及…

常用目标检测预训练模型大小及准确度比较

目标检测是计算机视觉领域中的一项重要任务,旨在检测和定位图像或者视频中的目标对象。当人类观看图像或视频时,我们可以在瞬间识别和定位感兴趣的对象。目标检测的目标是使用计算机复制这种智能。 近年来,目标检测网络的发展日益成熟&#…

外贸人如何让回复率倍增?面对不回复的潜在客户你可以这样跟进!

当谈到如何开发潜在客户时,采用简洁有效的沟通比什么都重要。 根据DMR的商业统计数据,我们的国外客户平均每天都在发送和接受121封电子邮件,而这个数字会随着个体在组织中获得的更多权利和责任而攀升,自然那些掌握着产品采购大权…

【TypeScript】 ts内置定义的类型

目录 简言内置类型Awaited<Type> 异步结果Partial<Type> 可选Required<Type> 必选Readonly<Type> 只读Record<Keys, Type> 映射对象类型Pick<Type, Keys> 选取新建Omit<Type, Keys> 选取删除Exclude<UnionType, ExcludedMembers&…

四步简单操作:轻松将iCloud照片恢复到相册

随着智能手机的普及&#xff0c;我们的生活中越来越多的照片存储在了云端&#xff0c;其中iCloud提供了便捷的照片备份和存储服务。但有时候&#xff0c;我们可能会不小心删除了在iCloud上的照片&#xff0c;或者想要将iCloud中的照片恢复到手机相册中。 在这篇文章中&#xf…

【数据结构】快速排序(详解)

目录 快速排序 历史&#xff1a; 基本思想&#xff1a; 主框架&#xff1a; 下面解释实现单次排序的几种版本&#xff1a; 1.Hoare版本 2. 挖坑法 3. 前后指针法 快速排序的实现包括递归与非递归&#xff1a; 1. 递归实现&#xff1a;&#xff08;即开头的基本框架&am…

Jenkins安装 :AWS EC2 Linux

1 JDK11 install # 用的yum安装 # 压缩包安装&#xff0c;下载的jdk-11.0.22_linux-x64_bin.tar.gz在EC2解压&#xff0c;配置环境变量&#xff0c;运行jenkins的时候会报错$ yum -y list java-11* Available Packages java-11-amazon-corretto-devel.x86_64 …

Linux shell 实现自增版本号

Linux shell脚本实现x.x.x格式递增版本号&#xff0c;每次运行脚本自动将最后一位版本号1&#xff0c;每次更新后将最新的版本号保存到当前txt文件内容&#xff0c;以保持连续递增版本号。 脚本文件目录 rootubuntu01:/scripts/version# tree . ├── increment_version.sh └…

动手学深度学习4.6 暂退法-笔记练习(PyTorch)

以下内容为结合李沐老师的课程和教材补充的学习笔记&#xff0c;以及对课后练习的一些思考&#xff0c;自留回顾&#xff0c;也供同学之人交流参考。 本节课程地址&#xff1a;丢弃法_哔哩哔哩_bilibili 本节教材地址&#xff1a;4.6. 暂退法&#xff08;Dropout&#xff09;…

LangChain技术解密:构建大模型应用的全景指南

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

Flutter 中的 UnconstrainedBox 小部件:全面指南

Flutter 中的 UnconstrainedBox 小部件&#xff1a;全面指南 Flutter 提供了众多的布局小部件&#xff0c;以帮助开发者构建灵活且响应式的用户界面。UnconstrainedBox 是其中一种特殊的小部件&#xff0c;它允许子组件在没有约束的情况下渲染&#xff0c;同时可以指定一个父组…

深入理解Java中的this关键字

在Java编程中&#xff0c;this关键字是一个非常重要且常用的概念。对于初学者来说&#xff0c;理解this关键字的实际用途和工作原理&#xff0c;对于掌握面向对象编程&#xff08;OOP&#xff09;的基本概念至关重要。本篇博客将详细讲解this关键字的各种用法及其背后的机制&am…

2020职称继续教育--突发公共卫生事件应急处理技术方案

单选题&#xff08;共7题&#xff0c;每题5分&#xff09; 1、滑塌、滑坡、泥石流属于&#xff08;&#xff09;。 C、地质灾害 2、本讲中&#xff0c;不属于卫生应急管理体制原则的是&#xff08;&#xff09;。 B、综合协调 3、自然灾害卫生工作周期不包括&#xff08;&…

使用目标检测模型YOLO V9 OBB进行旋转目标的检测:训练自己的数据集(基于卫星和无人机的农业大棚数据集)

我看到YOLO V8中&#xff08;ultralytics版本8.2.18&#xff09;集成了YOLO V9&#xff0c;所以直接在YOLO V8 OBB的基础上实现YOLO V9 OBB&#xff0c;训练结果也出来了&#xff0c;但是评估指标比YOLO V8 OBB低一点点&#xff0c;不知道是不是哪里遗漏修改了......如有大神赐…

公用表表达式(CTE)详解:针对 MySQL 和 SQL Server 数据库

公用表表达式&#xff08;CTE&#xff0c;Common Table Expressions&#xff09;是一种在 SQL 中定义临时结果集的方法&#xff0c;该结果集在单个查询的执行过程中可以被引用。CTE 提高了查询的可读性和结构化&#xff0c;特别适用于复杂的子查询和递归查询。本文将详细介绍 C…

cfa三级大神复习经验分享系列(六)

Behavioral Finance 这一般是大家拿来入门的章节&#xff0c;可是上来就那么多名词&#xff0c;那么多原理真的完全看晕了。其实这一章节最大的重点就是各个bias&#xff0c;其他的东西都是帮助理解的&#xff0c;考试不会考。我自己列了一个清单&#xff0c;把所有bias根据分类…

【Linux学习】进程间通信 (2) —— 信号

下面是有关进程通信中信号的相关介绍&#xff0c;希望对你有所帮助&#xff01; 小海编程心语录-CSDN博客 目录 1. 信号 1.1 概念 1.2 信号的产生 1.3 信号的处理方式 2. 函数 2.1 kill() 函数 2.2 signal()函数 2.3 sigaction()函数 2.4 sigprocmask()函数 …

Python中的`*args`和`**kwargs`:深入理解可变参数传递

Python中的*args和**kwargs:深入理解可变参数传递 在Python函数编程中,*args和**kwargs是两个非常有用的特性,它们允许我们在调用函数时传递任意数量和类型的参数。这种灵活性使得函数更加通用和可重用。本文将深入探讨*args和**kwargs的工作原理、应用场景以及它们如何增强…

c++对rgb数据进行抽样

以下算法是对rgb数据进行抽样,将数据在内容不变的情况下,降低数据的内存占用,方便应用处理和网络传输。 int scaleRGB(const unsigned char* src_img, unsigned char* dst_img, unsigned int src_width, unsigned int src_height, unsigned int dst_width, unsigned int ds…

文盘Rust -- 生命周期问题引发的 static hashmap 锁

100编程书屋_孔夫子旧书网 2021年上半年,撸了个rust cli开发的框架,基本上把交互模式,子命令提示这些cli该有的常用功能做进去了。项目地址:https://github.com/jiashiwen/interactcli-rs。 春节以前看到axum已经0.4.x了,于是想看看能不能用rust做个服务端的框架。 春节…