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