草庐IT

Flashcat来炜:如何把运维的饭碗端稳

SRETalk 2023-04-13 原文

讲坛第1期《​​井源 - 运维几何​​​》和前段时间马驰的《​​是时候让运维集体下岗了​​》在业界引起广泛讨论,运维岗位真的没有前途了吗?如何把饭碗端稳?这一期,我们采访了快猫星云的来炜,来炜是运维破圈创业人士,既然能创业,一定是在行业内有很深的积累的,他会怎么看待这个问题?让我们一起来听一种新的声音!

这里是接地气、有高度的《​​运维百家讲坛​​》第 3 期,开讲!

介绍一下您自己以及现在的公司?

大家好,我是快猫星云的来炜。快猫星云是一家云原生智能运维科技公司,由开源监控工具“夜莺监控”的核心开发团队组成。快猫星云打造的云原生监控分析平台——“Flashcat平台”,旨在解决云原生架构、混合云架构下统一监控难、故障定位慢的问题。

如果想更多了解快猫星云创立背后的故事,大家可以进一步阅读 ITPub 对我的一个专访​​《十年死磕,从一线工程师到CEO》​​,欢迎大家指正。

有些运维老炮反映公司对运维的价值所知甚少,您是怎么给公司讲清楚运维的价值的?

把工作的价值,如何通俗易懂的给公司管理层讲清楚,并取得理解和支持,是所有中后台技术团队普遍面临的难题,否则失业分分钟的事情,运维工作的价值讲清楚更是难上加难。

从我的朋友圈来看,时不时就会看到劝运维下岗/转行的帖子:

  • 比如瑞典马工的​​《是时候让运维集体下岗了》​​​,振聋发聩,开篇就提到:​​明人不说暗话:在云原生和DevOps成熟的今天,运维作为一个岗位和团队已经完成了历史任务,应该退出舞台了。​
  • 再比如带我入行的井老板,在 SRETalk 第一期中,用心良苦的劝导:​​随着科技的发展,时代的变化,一个岗位的消亡是很正常的事情,及时做好调整和规划才是思考的重心。​

但是,运维这个岗位以及背后的运维人,从来都是一次次站在要被淘汰的边缘徘徊,又一次次倔强的起死回生,柳暗花明。他们往往乐于自嘲、主动拥抱危机、敢于求变。回想下,近十年来,云计算也好、云原生也罢、DevOps 也算,SRE 也行,所有这些 IT 的大变革,都是尝试在不断优化和改进“大运维”这个领域。运维这个行业没有消亡,反而是不断进化,生发出了新的内涵。

这说明了什么?说明运维很重要,说明运维也很难!但是如何把这个价值说清楚,我们从站位、目标设定、投入产出比上来分别着手分析,下个问题见。

您觉得运维工作最重要的几个目标是什么?您是怎么落地这些目标的?运维的价值如何更好的得到体现?

聚焦经典的运维领域,最主要的几个工作职责

  1. 代码发布和交付(delivery),做好最后一公里的价值交付;
  2. 提升架构的可伸缩性(scalability)并付诸实施;
  3. 保障系统的稳定性(reliability)并不断改善;
  4. 在满足前三项目标的同时,不断优化并降低系统的运行成本(finops)。

如果你发现自己的工作,并不是围绕着以上范畴展开,那么有两种可能,你不是运维或者你的工作超纲了!

明确了工作范畴,说大点就是明确了运维的使命之后,设定目标就相对容易些了,比如:

  1. 针对代码发布和交付,可以简单的用发布次数来度量;
  2. 针对系统的伸缩性,可以用扩容的时效性来度量;
  3. 针对稳定性,我们可以通过观察核心功能的不可用时长来度量;
  4. 针对系统运行成本,我们可以计算到每完成一笔核心交易所花费的资源成本和人力成本来表示和追踪。

关于如何体现运维的价值

首先我们运维人要转变的是态度和立场:坚定和业务站在一起,争取共背业务目标。

我举个例子,HR部门,也是属于公司内部后台的不能再后台的部门了,但是我所接触过的优秀的hr中,不管是recruiter、还是hrbp,从来都是把自己当作业务部门的一份子,把业务部门的目标当作自己的目标。当立场一致,大家都是自己人的时候,价值就好说了。

其次,价值这个事情,永远都是和“成本投入”相对应的。你如果组建了一个很大的运维团队,人力成本在公司很显眼,那么你就很容易成为老板眼中的“重点关注对象”,也会受到业务方更苛刻的挑战,正所谓,楚人无罪怀璧其罪:) 客观上来讲,运维团队的资源投入,一定是要和业务收入相匹配的,过高过低都是不健康的,不利于团队发展的。所以,“运维的价值创造”最后会落到运维效率的竞争上来。

最后,关于价值,定量和定性的描述都得有。譬如和行业水平的定量对比,来自公司内业务部门满意度调查的定量数据。也要有比如对公司战略项目支撑中的“存在感”这些定性数据。

ChatGPT这样的AI能力您觉得未来是否有可能解决运维行业的问题?

首先我们看看,ChatGPT的核心优势是什么?ChatGPT,在知识的丰富度、自然语言理解能力(以及上下文理解)、内容生成能力方面,有着代际的革新。

然后,我们再分析下运维行业的核心问题是什么?

  • 是缺少领域知识吗?
  • 是交互效率低吗?
  • 是内容输出难吗?

以上都不是,运维行业所处理的问题,本质上还是一个系统性的工程问题,是为了解决IT系统价值快速交付的问题、解决伸缩性的问题、解决稳定性的问题、是不断提高系统运行维护性价比的问题。

目前来看,云计算、微服务对于运维行业的改变来的要更实质性一些。ChatGPT能有效改善运维行业知识沉淀的问题,或许会很快代替一些初级的运维架构师岗位。

工具选型这块,到底是自研,还是使用开源,还是使用商业产品,是如何抉择的?

这个问题没有绝对的答案,从我个人的从业经验来看,大概有以下几种情况:

自研的好处

  1. 心理上的自主可控感会更强一些;
  2. 短中期维度来看,对于团队的发展空间会更有利;
  3. 能根据自己的实际情况进行有针对性的、灵活的设计。

自研的弊端

  1. 时间成本很高,会造成较长一段时间拖后腿的情况,给业务的发展带来一定的影响;
  2. 人力成本高,以北京为例,要招聘一位相对资深的工程师,每年的薪资大概在50万,如果要自研相关运维工具到成熟,投入两位工程师还是需要的;
  3. 受限于研发人员的认知,自研容易和行业最佳实践脱钩,长期会造成内部工具落后于时代。

开源和开源二次开发

好处是能很快见效,投入生产。

坏处有三:

  1. 开源工具一般注重灵活性,功能上也比较聚焦,在产品化和用户体验上通常比较欠缺,拿来快速使用存在体验方面的问题;
  2. 写代码的朋友大家都有个体会,完全读懂和理解别人的代码和自己开发一套,难度其实是相当的,所以开源项目投入到生产环境,也是要投入足够的人力和时间去掌握的;
  3. 大多数针对开源项目的二次开发,会导致和社区主干脱钩,导致无法顺利升级到后续的最新版本,享受不到开源项目真正的红利。

使用商业产品和解决方案

优势:

  1. 时间成本优势明显,借助商业产品能够快速敏捷的支持业务的发展需要,首先做到不拖后腿!
  2. 原则上来讲,商业化产品的成本相比自研会有数倍的降低。这个成本差距是由商业模式决定的。商业产品能盈利的根本原因就是产品研发成本(加上销售成本)随着客户数量的增加而摊薄,否则这个公司没有存在的意义和可能;
  3. 商业产品的核心竞争力包括领域know-how、极致的产品体验、良好的技术支持和服务共同构成的,这通常意味着采用商业产品的技术团队会在公司业务方取得更好的口碑。

不足:

  1. 国内tob领域起步较晚,目前阻碍客户采用商业化产品最大的问题是缺少极致好用的产品,以及价格优势还不明显;
  2. 很多甲方客户技术历史包袱较重,个性化方案多,商业化产品往往很难做到完全匹配,导致客户不得不硬着头皮选择自研。

业内有观点认为云计算和Kubernetes这样的基础设施的崛起会让运维岗位逐渐消亡,您是怎么看待这样的观点呢?

诚然,云计算、K8s的出现,核心是为了改进“运维”这个行业,对运维行业的工作方式发生了重大影响。比如:

  • 以前的 clickops 逐步过渡到 IaC
  • 传统监控升级为更全面的可观测性体系
  • release 也从大版本定期发布变成了更敏捷的持续集成
  • 老中医式的开源软件维护模式,变成了对应的云服务的正确选型和使用
  • 扛机器上架的体力活变成了简单的控制台分分钟开通
  • 手敲命令配置网络路由的专家工作转变成云服务的各个网络产品的组合搭配
  • 从物理机混部提升利用率转变为采用微服务、云原生架构成本天然下降

我们看到,运维工作的内涵并没有变,工作的价值也并没有变弱,只是运维要掌握的技能树在升级。运维人继续保持危机感、保持主动求变精神、立足服务好业务,就能永立潮头,处处柳暗花明。

可选的监控工具有很多,用户选择贵司的 Flashcat 平台,理由是什么?

的确,开源的、商业化的监控平台有很多,我之前也写过一篇博客:​​《二十年里12个开源监控工具大对比》​​,大家可以参考。

回到为什么选择Flashcat平台,需要从监控系统的发展趋势以及Flashcat平台的特点说起。监控系统的发展趋势,可以参考我之前的博客文章 ​​《云原生监控的十大特点和趋势》​​。而Flashcat平台,正是面向这些趋势而生的针对性的解决方案:

  1. Flashcat面向更广泛多元的用户群:从面向运维工程师群体到面向全体研发、运营、CTO/CIO,Flashcat 让监控分析、信息拉齐如此简单;
  2. Flashcat与业务指标密切联动:当业务受损时,Flashcat 总能第一时间发现,并和 IT 系统深入联动,辅助技术团队快速展开调查;
  3. 云原生、混合云统一监控:无论采用什么样的 IT 架构,您只需要一套 Flashcat 平台。

有关Flashcat来炜:如何把运维的饭碗端稳的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  7. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  8. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  9. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  10. ruby - 如何使用文字标量样式在 YAML 中转储字符串? - 2

    我有一大串格式化数据(例如JSON),我想使用Psychinruby​​同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解

随机推荐