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