運維DBA要不要學python

運維DBA要不要學python

 

我個人認爲是:要

 

現在python在運維數據庫的工作中主要用在

1、編寫一些運維腳本

2、編寫運維管理平臺

3、研究互聯網大廠的運維腳本/工具並應有

 

特別是運維開源數據庫的時候,第三點特別重要,例如MongoDB的zabbix監控數據庫腳本就是用老外用python寫的,如果要改一下里面的指標

肯定要用到python

一些互聯網大廠開源的數據庫腳本和工具,例如mysql相關工具,基本都是用python寫的,這些工具/輪子我們肯定會用到

所以python是如此重要,當然用shell也可以完成第一點,如果強硬用python來寫也只是用python來調用一下某些shell命令

但是,既然要學python,用python,做一個pythoner,那麼最好所有工作都用python,有些人不這麼認爲,某些任務,shell可以做的python做不了

python一定要調用shell命令來做,這個是的,既然是調用shell命令爲何不直接用shell

但是我個人覺得shell有個最大的缺點:格式化

shell幾乎是沒有格式的,只有簡單的縮進,也沒有專用的shell編輯器,那麼,當你寫了幾百行代碼的時候,如果沒有很好的縮進習慣,那麼review你的shell腳本

的那個人簡直就是災難,也由於沒有專用的shell編輯器,編寫shell的時候很容易出錯,也不好調試

 

用python就沒有這些問題,python可以用pycharm(本人覺得除了pycharm其他工具都不行)或者其他工具,python有嚴格的格式化,編輯器也非常強大

pdb,ipdb,print調試手段手到擒來

 

我記得之前有個招S銀行技術部的招聘信息,其中有一條

必須會寫shell,並且有寫過單個腳本超過10000行shell代碼的經驗

當時覺得這個要求非常蛋疼,能在單個腳本寫超過10000行shell代碼的可能是高人也可能是SB,反正覺得招S銀行的技術也好不到哪裏好

據我所知,他們的mysql運維也是外包給某數據庫服務公司,反正大部分都是外包,核心技術應該比較一般

不過,用python不是說完全不用學shell,畢竟python也是要調用shell命令的,不會shell你怎麼知道怎麼調用shell命令去完成某些任務

只不過不需要學習shell的流程控制語句之類的複雜語法已而

 

 

 

最後,還有一個語言,go語言

go作爲互聯網界的C/C++,雖然發展歷史不長,但是最近幾年確實比較火,go雖然是靜態語言,也是帶GC功能的

因爲需要GC,所以go語言不適合做

1、系統編程:系統編程依然是C/C++做主導,由於GC的關係,性能比不上C/C++

2、大數據:依然是JAVA的天下,當時hadoop誕生的時候,go語言還沒出生,所以大數據領域還是無法取代JAVA

3、電商:依然是JAVA的天下,JAVA有最成熟的解決方案,阿里巴巴的業務大量使用JAVA就是一個例子

 

go語言適合做

1、雲計算:在雲計算領域,go語言沒有對手,go語言一般用於非cpu密集型業務,cdn,對象存儲,docker,consul,k8s

 

其實性能上,go語言應該是比JAVA遜色不少,發展歷史沒有JAVA長,GC功能沒有JAVA的完善

 

至於在運維領域,其實go語言的性能比python是要強,畢竟是靜態語言,而且可以利用多核優勢,沒有python的GIL鎖問題

但是在運維領域,更注重的是運維生態,而不是性能,我們開發的運維工具和運管平臺其實都不需要很高性能

如果沒有運維生態支持,運維將會非常難做,例如,現在每種數據庫基本都有python驅動(mongodb,DB2,oracle,mssql,mysql,pgsql,sqlite等等),

spark編寫作業也可以用python來編寫,openstack本來用python來開發,有很完善的python API,kvm管理也有很完善的python API,

Linux內置python,Windows安裝python也比較簡單

python有相應的庫可以編寫Windows服務,國內公有云廠商基本都有python API等等,幾乎每種工具、系統、軟件都支持python

 

而這種運維生態,go語言是沒有的,原因是go語言是2009年誕生,到現在才10年時間,而python到現在已經有30年曆史

所以python纔會有這種運維生態,所以纔會有每種工具、系統、軟件都支持python

而且目前互聯網大廠用go語言來寫的開源數據庫運維工具和腳本非常少

當然,如果對python有幾年經驗並且很紮實了,那麼可以用空餘時間學學go語言

還有一個提醒:據我所知,go語言最流行的web框架beego問題比較多,沒有python的django框架那麼完善

如果要用go語言來開發運維管理平臺,要注意這個坑

 

 

最後總結一句:對於運維或DB運維,個人覺得真沒有必要學go語言,畢竟go語言是靜態語言,門檻相對比較高,而且go語言沒有運維生態

 

目前本人負責運維:MongoDB,MSSQL,MySQL,PGSQL

用到的語言有:JavaScript,SQL,Python,簡單的command bat,bash shell

 

 

如有不對的地方,歡迎大家拍磚o(∩_∩)o 

本文版權歸作者所有,未經作者同意不得轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章