作為后端程序員 Linux 應該掌握到什么程度?
作為后端程序員如果你只覺得只要把業務代碼寫完,功能實現,項目上線后就萬事大吉,后期的運維完全不用關心那你就大錯特錯了。高級的后端程序員不僅要能高效的開發,還要會高效的運維,在遇到線上問題的時候能快速響應并定位修復。
后端程序員不管在什么公司,基本上都是以下三種情況中的一種:
- 開發加自主運維:公司沒有專門的項目運維人員,后端程序員既做開發,又做運維;
- 開發加協助運維:公司有專門的項目運維人員,后端程序員以開發為主,日常協助運維;
- 開發加自助運維:公司有專門的自助運維工具,后端程序員兼顧開發和項目運維;
開發加自主運維
這三種情況一般也對應了不同的互聯網公司,第一種是創業型的小公司,在創業型的小公司沒有專門的運維人員,所以項目的開發上線完全由后端程序員自己上手,也包括后期服務的運維,往往創業型公司相關的工具和制度都不會特別完善,也不會有什么發布集成工具,基本上都是人為的手動拷貝 war 包或者 jar 上傳到服務器上面進行,完全人工運維。
針對這種情況如果作為一個后端程序員不會 Linux 命令那基本上是無法勝任工作的,雖說常用的簡單的命令大家可能都知道,但是當真正遇到線上問題的時候,往往時間就是金錢,能最早定位到問題就能最快的進行止血降低損失,所以對于 Linux 命令是越熟悉越好,掌握的越多越好。
另外往往在這種情況如果業務能快速增長還是會很鍛煉人的,因為隨著業務的增長,對項目開發和運維的要求都會越來越高,所以對后端程序員的要求也越來越高,促進了彼此的成長。但是反過來,如果業務沒什么增長的話,線上的環境就會相對簡單,導致個人的成長就會相對較慢。但是不管怎么樣,掌握好該掌握的知識,才能應對復雜的情況。
開發加協助運維
第二種情況對應中型的互聯網公司,當業務增長到一定的程度過后,公司的工具和制度就會相對完善,這個時候往往會要求術業有專攻,開發崗位和運維崗位分的就稍微會清楚一點,但是崗位分的清楚不代表開發人員就不需要關心服務的運維情況。
這個時候對開發人員的要求也只會越來越高,運維知識也是少不了的,對于 Linux 的知識自然也是要掌握的。很多時候項目開發之初就要考慮到架構要如何設計,服務要如何部署,資源要如何分配等等問題,畢竟這個時候線上業務的穩定是最重要的,項目開發之初就要考慮到可能遇到的各種情況以及應對策略。
雖然說是協助運維,但是畢竟開發人員才是對系統最熟悉的人, 特別是當下微服務架構,服務眾多,每個服務之前的前后調用關系,集群資源情況,日志存儲情況都特別的繁多,如果開發人員對線上微服務的部署不清楚,在遇到問題的時候就很難協助運維人員定位和處理。
雖然說很多時候可能不需要開發人員上機動手敲命令,但是如果不知道 Linux 服務器的相關知識和常用的命令,那基本上也是不合格的。
開發加自助運維
最后一種情況一般會出現在一些互聯網大廠,因為互聯網大廠開發人員眾多,沒辦法配備很多的運維人員,所以要求開發人員自助的進行項目服務的運維。同時大廠的自助運維工具會特別的多和全,服務器一般也是虛擬化的,都是通過集成工具來實現完全自助的運維,以及無人化運維。
既然是自助運維,那開發人員就必須要了解服務器的相關知識和 Linux 的常用命令操作,其實這也是為什么都說大廠面試造火箭,工作擰螺絲,雖然平常的工作中用到的不多,但是關鍵時刻還是要能上的。
不知道看到這里有沒有小伙伴遇到過面試大廠的時候,被問到服務運維相關的知識,但是因為自己并不了解被拒的。
可能會有很多小伙伴有疑問,那在小公司自主運維跟在大廠自助運維有什么區別?這兩者的區別就像是原始社會和現代社會一樣。在小公司自主運維,完全靠人工,基本上談不上效率和安全;但是在大廠的自助運維,效率和安全都是有保障的。有了工具效率自然不用說,關于安全方便,一般危險的命令在大廠服務器上面是執行不了了,很大程度上避免了刪庫跑路的情況。
當然這里說的只是方式的差別,但是對應具體的問題排查方式和命令使用技巧,大家都是一樣的,畢竟大廠的服務也是跑在類 Linux 上的,所以 Linux 的命令也還是完全適用的。
總結
總的來說就是,作為一個后端程序員,不管是在小公司還是大公司,除了會寫后端代碼之外,我們還需要掌握 Linux 的常用命令和服務器的相關知識,才能更好地發展。好了話不多說,下面是福利時間。