失聯(lián)的架構(gòu)師,只留下一段腳本
本文轉(zhuǎn)載自微信公眾號(hào)「小姐姐味道」,作者小姐姐養(yǎng)的狗 。轉(zhuǎn)載本文請(qǐng)聯(lián)系小姐姐味道公眾號(hào)。
我對(duì)Linux非常的精通,尤其是腳本語(yǔ)言比如sed、awk、python等,用起來更是爐火純青。我把它作為自己一個(gè)非常特立獨(dú)行的技能,一個(gè)和其他普通程序員區(qū)別開來的技能。所以在我寫腳本的時(shí)候,我都會(huì)自豪的抬高我的頭,鼻孔朝天冥思精悍的code。
比如,看到別人一遍遍的翻文檔安裝elasticsearch這個(gè)軟件,xjjdog就渾身難受,就寫了腳本來加快這個(gè)過程。
- mkdir /data
- useradd es -d /data/es
- chown -R es:es /data
- cat > /etc/security/limits.conf <<EOF
- * soft nofile 65536
- * hard nofile 65536
- * soft noproc 65536
- * hard noproc 65536
- es soft memlock unlimited
- es hard memlock unlimited
- EOF
- cat > /etc/sysctl.conf <<EOF
- vm.swappiness = 0
- vm.max_map_count = 262144
- EOF
- sysctl -p
- chown -R es:es /opt/elasticsearch
這種腳本能夠讓我快速知曉軟件安裝的要點(diǎn),不需要再讀那些冗長(zhǎng)的文檔。像這樣的事情,我總是在做,久而久之,搞的自己好像很閑一樣。來看看我以前分享的命令行吧。
這幾天看到小王一直在那里搗鼓excel,這些數(shù)據(jù)他已經(jīng)處理了好幾天時(shí)間了??蛻粜枰獜钠渌脚_(tái)遷移到我們的平臺(tái),導(dǎo)出了一堆爛七八糟的數(shù)據(jù),大概有三四十MB的樣子。不知道怎么回事,清洗數(shù)據(jù)這個(gè)活兒,就落在了小王身上。
文件很大,公司的電腦很爛。小王打開之后,電腦的風(fēng)扇就呼呼直轉(zhuǎn)。他每次都需要使用ctrl+f找到不太正常的數(shù)據(jù),然后把它么拷貝到另外一個(gè)文件中。數(shù)據(jù)多工期緊,昨天晚上,小王就加班干到23點(diǎn)多,直到夜的盡頭。
總監(jiān)對(duì)此專門進(jìn)行了表?yè)P(yáng)。
我坐在小王的旁邊,自然不能對(duì)此坐視不理。常年養(yǎng)成的習(xí)慣,讓我對(duì)低效的事情無法忍受,就如同一只常年奔跑的兔子忍受不了緩慢爬行的蝸牛。
只掃了一眼小王的需求,我就判定這個(gè)工期三天的任務(wù),使用腳本只需要2個(gè)小時(shí)就能完成。我并不是樂于助人,實(shí)在是我非常的喜歡寫這種腳本,還有腳本帶來的這種速度差異的快感。
一個(gè)小時(shí)之后,我把調(diào)試好的python腳本交給小王。shell里一運(yùn)行,正確的文件就出來了。好爽的感覺。
小王自然對(duì)我拜服,逢人便吹xjjdog如何牛x。
這個(gè)事情不知怎么就被總監(jiān)給知道了,我被叫進(jìn)了寬大的辦公室??吹娇偙O(jiān)一臉陰沉的臉,我知道事情不妙,但并不知道癥結(jié)所在。我剛?cè)肼氝@家公司,應(yīng)該沒有在不經(jīng)意間觸碰了不該逾越的底線,我的心中充滿了迷茫。
“聽說你幫小王解決了個(gè)問題“ ??偙O(jiān)說, “以后少寫這樣的東西“。
“為什么?“ 我仿佛不太相信自己的耳朵, “腳本能顯著的增加工作效率“。
“就知道你會(huì)有這樣的疑問。“ 總監(jiān)嚴(yán)肅的臉緩和了下來,和我講了一個(gè)架構(gòu)師的故事。
小宋曾經(jīng)是這家公司的架構(gòu)師。有很多三腳貓的架構(gòu)師并不寫代碼,所以小宋成為了能碼字的稀缺架構(gòu)師。他的一個(gè)絕活就是寫腳本,就像我現(xiàn)在干的事情一樣。
腳本能增加效率,這是我多年的經(jīng)驗(yàn)。但效率這兩個(gè)字本身,就根本無法衡量。所以效率這兩個(gè)字,無法被量化。即使你把工期從3天縮減到2個(gè)小時(shí),那也不見得你的效率高,因?yàn)檫@只是零散的瑣事中的一個(gè)小插曲,你省下的時(shí)間還是去摸魚。你的這些效率,打破了正常的研發(fā)周期,也斷送了想要拼搏的同學(xué)的夢(mèng)想。所以, 增加效率 ,這種有實(shí)際功效的做法并不能登上大雅之堂,只能在小圈子里樂呵一下,最后只會(huì)變成一個(gè)口號(hào)。
小宋的腳本第一次是用在一個(gè)線上事故的處理上。當(dāng)時(shí),程序有一個(gè)BUG,數(shù)據(jù)庫(kù)和緩存中一部分?jǐn)?shù)據(jù)錯(cuò)亂,產(chǎn)生了不一致的情況。由于緩存分布在20多臺(tái)機(jī)器上,就不能使用把所有緩存給清掉的方式。
業(yè)務(wù)經(jīng)理很著急,經(jīng)過討論之后,決定開發(fā)定時(shí)任務(wù),掃描所有的緩存和數(shù)據(jù)庫(kù)中所有的記錄,然后修正數(shù)據(jù)。數(shù)據(jù)量很大,程序也需要驗(yàn)證,估計(jì)修復(fù)時(shí)間至少需要兩天。
小宋說,沒那么麻煩。你只需要把問題發(fā)生期間,所有的業(yè)務(wù)日志給我就可以了。
接下來的三個(gè)小時(shí),小宋從日志里過濾出了問題發(fā)生過程中所有被更新過的key。略一思索,就使用腳本完成了對(duì)這一批key的緩存刪除操作,非常完美的解決了問題。
這件事之后,小宋就經(jīng)常被請(qǐng)去寫一些腳本來幫助處理疑難問題。他來者不拒,樂此不疲。
一切像是向著良性的方向發(fā)展,直到一次線上的故障。
公司的幾百臺(tái)機(jī)器,都是在aws平臺(tái)上的ec2服務(wù)。使用ec2提供的api,可以做很多事情。但ec2的命令實(shí)在是太難以理解,所以小宋做了封裝。
- https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html
使用這個(gè)腳本,可以對(duì)部分、或者所有的機(jī)器,進(jìn)行批量管理(比如加個(gè)分組,開個(gè)權(quán)限等),就不用登陸到后臺(tái)做一些管理工作。每當(dāng)小宋看到黑屏幕上流淌的字符,他就想,這就是效率的魅力。
腳本非常好用,于是得到了分發(fā)。有一個(gè)運(yùn)維拿到了這個(gè)腳本,鬼使神差的想要在線上驗(yàn)證一把。
他向所有的機(jī)器發(fā)送了關(guān)閉命令。
公司立馬就炸了鍋,扯皮的事是難免的。但最后的矛頭指向了小宋。
腳本是他寫的,但他首先是一個(gè)架構(gòu)師。一個(gè)架構(gòu)師,可以不寫代碼,可以不出成績(jī),但必須要有風(fēng)險(xiǎn)意識(shí)。
可這些命令,并不是我提供的。這是aws平臺(tái)提供的東西,我對(duì)此什么都沒有做。去測(cè)試這些命令,和用不用這個(gè)腳本沒有關(guān)系。小宋爭(zhēng)辯。
但命令確實(shí)是通過這個(gè)腳本發(fā)送出去的,也確實(shí)造成了后果。背后那些千回百轉(zhuǎn)的曲折關(guān)系,沒人會(huì)去研究,也沒人會(huì)關(guān)心。那些平常享受小宋腳本的同學(xué),此時(shí)也是默不作聲,因?yàn)檫@種責(zé)任問題,如同效率問題一樣,都是虛張聲勢(shì),并沒有明確的結(jié)果。
這種事情,小宋也是體驗(yàn)過的。比如提供了redis腳本,有人就喜歡運(yùn)行FLUSHALL命令;提供了docker命令,有人就喜歡調(diào)用docker purge去做清理。這根本控制不住。
他認(rèn)為,這是使用者的水平問題,而不是他的腳本問題。與總監(jiān)吵了幾架之后,小宋最后一氣之下,憤而離職。
他直接刪掉了這家公司所有人的好友,消失了。
“所以,我是對(duì)你好,才會(huì)和你提這樣的要求。比起風(fēng)險(xiǎn)來,這點(diǎn)效率帶來的提升,真的是微不足道。 講到這里,總監(jiān)意味深長(zhǎng)的看著我。”我現(xiàn)在就是及時(shí)的制止你的行為,免的步小宋的后塵“。
我點(diǎn)點(diǎn)頭,這個(gè)道理我懂。之前有家公司,就因?yàn)橛X得Linux的學(xué)習(xí)成本大,命令危險(xiǎn),就選擇了Window系統(tǒng)做服務(wù)器。寧可難受、付錢買授權(quán)、當(dāng)2B,也不敢越雷池一步。拿著風(fēng)險(xiǎn)兩個(gè)字掛在嘴邊,這些道理都是一樣的。
我突然覺得,這么多年我的信仰就要崩潰了。花了那么大的力氣,把命令行學(xué)精,到最后落到個(gè)學(xué)無所用,真是悲哀。
“總監(jiān),不好了。 ,正在我想要表達(dá)些什么的時(shí)候,有個(gè)小伙子闖了進(jìn)來, “線上有人使用ansible練手,把根目錄的權(quán)限全部改成000了!“。
我的腦子里立馬出現(xiàn)了這樣的命令,這次鍋是linus torvalds的了。
- chmod -R 000 /
誰(shuí)知道總監(jiān)笑了。“你剛來,不了解這里的情況。這個(gè)月已經(jīng)發(fā)生好幾次這樣的事了。是時(shí)候換安全可靠的Windows了,我認(rèn)識(shí)采購(gòu)的人。”
我微笑著點(diǎn)頭,不置可否,但虛心受教。
我灰溜溜回到自己的工位,長(zhǎng)嘆一聲,刪光了公司所有的人。
今天就提交辭呈吧,畢竟,公司是找不到linus torvalds的,但能找到我。畢竟,ansible這個(gè)工具,是我前幾天剛給推薦的。
所以,如果架構(gòu)師是你,你會(huì)留下什么腳本呢?
作者簡(jiǎn)介:小姐姐味道 (xjjdog),一個(gè)不允許程序員走彎路的公眾號(hào)。聚焦基礎(chǔ)架構(gòu)和Linux。十年架構(gòu),日百億流量,與你探討高并發(fā)世界,給你不一樣的味道。我的個(gè)人微信xjjdog0,歡迎添加好友,進(jìn)一步交流。