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