
讲坛第1期《井源 - 运维几何》和前段时间马驰的《是时候让运维集体下岗了》在业界引起广泛讨论,运维岗位真的没有前途了吗?如何把饭碗端稳?这一期,我们采访了快猫星云的来炜,来炜是运维破圈创业人士,既然能创业,一定是在行业内有很深的积累的,他会怎么看待这个问题?让我们一起来听一种新的声音!
这里是接地气、有高度的《运维百家讲坛》第 3 期,开讲!
大家好,我是快猫星云的来炜。快猫星云是一家云原生智能运维科技公司,由开源监控工具“夜莺监控”的核心开发团队组成。快猫星云打造的云原生监控分析平台——“Flashcat平台”,旨在解决云原生架构、混合云架构下统一监控难、故障定位慢的问题。
如果想更多了解快猫星云创立背后的故事,大家可以进一步阅读 ITPub 对我的一个专访《十年死磕,从一线工程师到CEO》,欢迎大家指正。
把工作的价值,如何通俗易懂的给公司管理层讲清楚,并取得理解和支持,是所有中后台技术团队普遍面临的难题,否则失业分分钟的事情,运维工作的价值讲清楚更是难上加难。
从我的朋友圈来看,时不时就会看到劝运维下岗/转行的帖子:
明人不说暗话:在云原生和DevOps成熟的今天,运维作为一个岗位和团队已经完成了历史任务,应该退出舞台了。随着科技的发展,时代的变化,一个岗位的消亡是很正常的事情,及时做好调整和规划才是思考的重心。但是,运维这个岗位以及背后的运维人,从来都是一次次站在要被淘汰的边缘徘徊,又一次次倔强的起死回生,柳暗花明。他们往往乐于自嘲、主动拥抱危机、敢于求变。回想下,近十年来,云计算也好、云原生也罢、DevOps 也算,SRE 也行,所有这些 IT 的大变革,都是尝试在不断优化和改进“大运维”这个领域。运维这个行业没有消亡,反而是不断进化,生发出了新的内涵。
这说明了什么?说明运维很重要,说明运维也很难!但是如何把这个价值说清楚,我们从站位、目标设定、投入产出比上来分别着手分析,下个问题见。
聚焦经典的运维领域,最主要的几个工作职责:
如果你发现自己的工作,并不是围绕着以上范畴展开,那么有两种可能,你不是运维或者你的工作超纲了!
明确了工作范畴,说大点就是明确了运维的使命之后,设定目标就相对容易些了,比如:
关于如何体现运维的价值:
首先我们运维人要转变的是态度和立场:坚定和业务站在一起,争取共背业务目标。
我举个例子,HR部门,也是属于公司内部后台的不能再后台的部门了,但是我所接触过的优秀的hr中,不管是recruiter、还是hrbp,从来都是把自己当作业务部门的一份子,把业务部门的目标当作自己的目标。当立场一致,大家都是自己人的时候,价值就好说了。
其次,价值这个事情,永远都是和“成本投入”相对应的。你如果组建了一个很大的运维团队,人力成本在公司很显眼,那么你就很容易成为老板眼中的“重点关注对象”,也会受到业务方更苛刻的挑战,正所谓,楚人无罪怀璧其罪:) 客观上来讲,运维团队的资源投入,一定是要和业务收入相匹配的,过高过低都是不健康的,不利于团队发展的。所以,“运维的价值创造”最后会落到运维效率的竞争上来。
最后,关于价值,定量和定性的描述都得有。譬如和行业水平的定量对比,来自公司内业务部门满意度调查的定量数据。也要有比如对公司战略项目支撑中的“存在感”这些定性数据。
首先我们看看,ChatGPT的核心优势是什么?ChatGPT,在知识的丰富度、自然语言理解能力(以及上下文理解)、内容生成能力方面,有着代际的革新。
然后,我们再分析下运维行业的核心问题是什么?
以上都不是,运维行业所处理的问题,本质上还是一个系统性的工程问题,是为了解决IT系统价值快速交付的问题、解决伸缩性的问题、解决稳定性的问题、是不断提高系统运行维护性价比的问题。
目前来看,云计算、微服务对于运维行业的改变来的要更实质性一些。ChatGPT能有效改善运维行业知识沉淀的问题,或许会很快代替一些初级的运维架构师岗位。
这个问题没有绝对的答案,从我个人的从业经验来看,大概有以下几种情况:
自研的好处:
自研的弊端:
开源和开源二次开发:
好处是能很快见效,投入生产。
坏处有三:
使用商业产品和解决方案:
优势:
不足:
诚然,云计算、K8s的出现,核心是为了改进“运维”这个行业,对运维行业的工作方式发生了重大影响。比如:
我们看到,运维工作的内涵并没有变,工作的价值也并没有变弱,只是运维要掌握的技能树在升级。运维人继续保持危机感、保持主动求变精神、立足服务好业务,就能永立潮头,处处柳暗花明。
的确,开源的、商业化的监控平台有很多,我之前也写过一篇博客:《二十年里12个开源监控工具大对比》,大家可以参考。
回到为什么选择Flashcat平台,需要从监控系统的发展趋势以及Flashcat平台的特点说起。监控系统的发展趋势,可以参考我之前的博客文章 《云原生监控的十大特点和趋势》。而Flashcat平台,正是面向这些趋势而生的针对性的解决方案:
我正在学习如何使用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
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
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
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
我有一大串格式化数据(例如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以想要的样式转储标量?解