草庐IT

自动化运维项目前期规划的五大难点

twt社区 2023-03-28 原文

难点一:自动化运维项目,如何进行技术路线的选择?

1、基于开源工具自研

基于社区活跃度高、口碑好、功能强大的开源自动化工具,进行二次开发,实现自身需求的完全定制化,该技术路线有两个理解层次,第一个层次只是开源工具的使用上,对该工具的所有模块的运用都非常娴熟,二次开发也是工具的调用、整合、界面定制方面;第二个层次是开源工具的代码定制上,深入开源代码,进行重新优化和定制,嵌入自身的内容,并在第一个层次上去调用和整合。能够实现自研路线的银行科技力量都比较强大,有专门的自动化运维开发团队,对开源社区研究的比较深入,有强大的开发和运维实力。

2、基于开源平台自研

除了开源工具的自研之外,还有一种是开源平台的自研,在开源工具之上,往上发展,基于统一的研发平台,实现从底层工具到自动化运维“平台”的自研,开源平台提供了一些开发框架、接口标准、技术工具供开发人员使用,加速开源工具和“平台”的研发效率和进度。

3、基于闭源自研

这条技术路线和前面两种技术路线类似,都属于自研类,区别是,前者是站在开源工具/平台的肩膀之上,进行的二次开发,而后者是完全从底层工具、代理、平台、界面、接口等方方面面都是自研,难度也是最大的,国内大行研发实力强的,都基本是这条技术路线,需要大量的运维工具开发和维护团队,耗费大量时间和精力。但受益也是很不错的,其他各运维条线的工作效率大幅提升,自主化高,迭代能力强。

4、第三方现有产品客户化定制

这条技术路线是目前选择最多的,也是中小银行绝大多数的选择,开发团队一般都用来做业务软件开发了,很少中小银行会将自研自动化运维系统和平台。目前自动化运维产品提供厂商也非常多,而且相当一部分厂商都能提供一整套解决方案,包括DevOps、自动化运维、集中监控等。这种技术路线,银行企业需要仔细甄别,不仅仅是甄别自动化运维产品本身,更重要的是甄别其拓展性和平台的能力,同时银行企业,也要在多个系统引入过程中,站在整体视角,严格划分好功能边界,运维体系比较大,厂商的各类解决方案,都是大而全的方案,在引入过程中,难免各家厂商的功能边界会出现混淆和不清晰的地方,需要仔细区分。

难点二:自动化运维项目,如何进行底层工具产品选型?

1、自动化运维底层工具产品是选用开源产品还是闭源产品

目前来看,无论是开源还是闭源都可以满足银行的运维需求,选用开源产品无非就是银行自身的技术实力允许,有一定的开发实力,或者和第三方外包一起结合热点开源产品进行二次开发。当然对开源产品的选型要慎重,如果是银行自己采用开源产品,建议选择无代理模式的自动化运维工具,对系统无侵入还是比较重要的,否则的话,就应该深入介入了解开源代理的底层代码。如果是和有技术实力和案例的第三方外包一起进行开源的二次开发的话,那么无代理和有代理都是可以选择的,因为可以通过外包转嫁开源风险。选择闭源产品目前也是很多,基本是通过有代理的模式进行的,有代理模式的效率要比无代理更高,而且客户端无需和服务端建立互信关系,弱化服务端的用户权限,但是客户端的代理基本是通过ROOT账户运行,可能会有后门。

2、通用的底层工具产品包括哪些部分

(1)自动化底层运维工具:CMDB及配置自动化发现工具;脚本及作业管理中心;Agent及管控中心,用来执行命令获取数据;自动化编排引擎;集成中心,API集成和访问权限管理;

(2)在此之上构建的专业领域运维工具:网络自动化工具;防火墙自动化工具;操作系统运维工具;中间件运维工具;云资源管理工具;应用发布工具;

(3)基于各种运维场景构建的运维工具:巡检工具;补丁及基线管理工具;软件安装配置工具;日志自助查询工具;抽数工具等等。

难点三:自动化运维项目,如何合理规划工程实施步骤?

大致的步骤有以下几个方面:

1、规划自动化运维场景、模块和整体架构

2、自动化运维管理节点和模块软硬件资源部署

3、在节点上安装自动化运维服务端软件,并进行相关配置

4、两种方式建立自动化运维关系:

(1)建立服务端和客户端的互信,客户端安装必要的依赖软件,如Python

(2)客户端安装相应代理和依赖包

5、验证服务端和客户端的自动化运维关系

6、进行自动化运维场景和功能模块分类开发和测试

7、自动化运维外部接口开发和测试

8、自动化运维统一门户搭建,并对接不同场景和功能模块

9、自动化运维系统正式上线

难点四:如何从整体上和“平台”角度规划自动化运维平台?

1、整体上

考虑监、管、控、及充分结合其他运维系统,而不仅仅是一个自动化的工具。

自动化运维作为运维技术体系中的一员,其目的就是为了减轻运维成本、提升运维效率、规范运维任务、通过自动化自愈提升业务连续性等等,其重要意义不言而喻。这点从国内各类大行、股份制银行等的运维人员招聘的技术要求中,也可以略知一二,经常是需要一些既懂运维技术的,又懂运维开发的人员。但这些各自为政的自动化运维开发都为自己提供便利,往往没有站在全局的角度去思考问题,造成开发工作重复,边界不清晰,甚至功能冲突的情况,这是自动化运维需要规避的地方,从一开始介入这个领域,就应该从整体的角度,清晰的划分不同运维团队的自动化运维边界,真正实现运维端到端的自动化服务,为实现这些服务,需要理清哪些地方要有哪些自动化工具支撑,哪些工具能够共用合并,最后再从集成的角度,如何统一管控和对外提供服务等。

2、平台角度

是一个具备集成能力,具备服务开放性,具备很好的功能扩展的一个平台。

“平台”在我们的理解中应该是一个集成者和统一管控者,这有别于“系统”,系统是一个功能和处理个体,就好比银行系统架构中的前置-中台-后台的概念,系统属于后台的概念,而“平台”属于中台的概念。后台所有对外的服务都需要通过中台来流转,中台有一个,而后台可以有多个,是1对多的关系。因此,从自动化运维平台的角度来看这个问题,这个平台不需要有多强大的功能,不需要完成例如批量调度、自动化投产、自动化巡检、自动化操作、自动化软硬件配置等具体操作,更重要的是将底层的自动化运维技术实现抽象化,服务化,同时对整个自动化技术实现统一管理,包括自动化服务注册、自动化服务模板、自动化服务集成、自动化服务权限管理等等。至于具体技术实现,则交由底层的各类自动化运维工具去实现,或者独立的“系统”去实现。另外,“平台”也可以是一个多“系统”和工具的调度者,单一工具无法实现的自动化任务,可以通过多工具任务编排实现,形成大平台,小系统的格局,突破传统的小系统过于臃肿,每个系统都想做全,争老大,造成功能边界模糊的问题。

难点五:自动化运维平台如何融入整体运维体系,划分功能边界?

自动化运维平台需要很好的融入整体运维体系,清晰的划分功能边界,包括云管平台、流程平台、监控平台、配置管理平台、智能运维平台等。统一CMDB为所有系统和平台提供统一的配置基准数据,提升联动的数据质量和效果;自动化运维平台自动采集和发现价值数据和数据关联,供其他系统和平台使用,和各项资源建立自动化关联关系,提供不同自动化运维场景调用API,供其他系统和平台调用;集中监控平台对接所有监控系统和平台,实时收集所有事件和告警,结合CMDB配置数据,第一时间匹配和丰富事件告警内容,以丰富的通知手段和详尽真实的告警详情告知相关负责人;运维大数据通过多样化、不同通道的方式,集成各系统和平台的实时或历史的结构化、非结构化数据,并进行过滤、清洗、加工、整合、分析、输出和数据持久化;IT架构可视化系统通过业务系统部署架构图、业务逻辑架构图、业务网络拓扑图三类架构图的方式,结合运维大数据中,不同数据源的数据,包括智能运维产出的建议,进行实时的展示,让数据和图联动,更为直观的展示业务系统整体运行状况。运维以IT架构可视化为主,智能运维为辅,强调人在运维中不可替代性。可以参考以下规划图:

有关自动化运维项目前期规划的五大难点的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  3. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  4. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  5. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  6. Ruby 从大范围中获取第 n 个项目 - 2

    假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit

  7. ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载 - 2

    我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty

  8. Hive SQL 五大经典面试题 - 2

    目录第1题连续问题分析:解法:第2题分组问题分析:解法:第3题间隔连续问题分析:解法:第4题打折日期交叉问题分析:解法:第5题同时在线问题分析:解法:第1题连续问题如下数据为蚂蚁森林中用户领取的减少碳排放量iddtlowcarbon10012021-12-1212310022021-12-124510012021-12-134310012021-12-134510012021-12-132310022021-12-144510012021-12-1423010022021-12-154510012021-12-1523.......找出连续3天及以上减少碳排放量在100以上的用户分析:遇到这类

  9. ruby-on-rails - 有没有一种工具可以在编码时自动保存对文件的增量更改? - 2

    我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功

  10. ruby - 如何在 Ruby 字符串中插入项目符号字符? - 2

    我正在尝试创建一个带有项目符号字符的Ruby1.9.3字符串。str="•"+"helloworld"但是,当我输入它时,我收到有关非ASCII字符的语法错误。我该怎么做? 最佳答案 你可以把Unicode字符放在那里。str="\u2022"+"helloworld" 关于ruby-如何在Ruby字符串中插入项目符号字符?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1195

随机推荐