吳珊珊珊
運(yùn)維工程師:Linux運(yùn)維是現(xiàn)在互聯(lián)網(wǎng)行業(yè)不能夠缺少的崗位,對(duì)于大公司來(lái)說(shuō)Linux運(yùn)維是非常重要的,不但要Linux方面的知識(shí),還需懂基本的語(yǔ)言,對(duì)于小公司來(lái)說(shuō)技術(shù)要求相對(duì)于低一點(diǎn),基本用不到什么太多開發(fā)的知識(shí)。
百拜嘟嘟
目前Linux內(nèi)核和驅(qū)動(dòng)開發(fā)工程師的發(fā)展前景主要有以下幾點(diǎn):從事嵌入式開發(fā)是當(dāng)下比較熱門的一個(gè)領(lǐng)域,做職業(yè)規(guī)劃的時(shí)候,比較清晰的是有三條路可以走:C1、嵌入式軟件開發(fā)工程師C2、嵌入式硬件開發(fā)工程師C3、嵌入式驅(qū)動(dòng)開發(fā)工程師。其中C1是計(jì)算機(jī)相關(guān)專業(yè)的同學(xué)可以選擇的,因?yàn)閷W(xué)習(xí)的課程相對(duì)偏軟,平時(shí)在PC上編程比較多,做軟件開發(fā)會(huì)相對(duì)輕松。C2是學(xué)習(xí)電子電路的同學(xué)可以考慮,對(duì)模擬電路比較熟悉,可以設(shè)計(jì)出質(zhì)量好的電路板。C3的難度比較大,需要同時(shí)熟悉軟件和硬件,真正的做到軟、硬相結(jié)合,搭建軟件和硬件互通的橋梁,當(dāng)然了在業(yè)界的待遇也是相對(duì)來(lái)說(shuō)比較高的。我們可以去一些招聘網(wǎng)站查看相關(guān)企業(yè)的崗位要求,這樣學(xué)習(xí)的時(shí)候就有了一個(gè)比較明確的目標(biāo)。今天看到一位前輩的博文,談究竟應(yīng)該如何成為優(yōu)秀的驅(qū)動(dòng)開發(fā)工程師,很受鼓舞,在此與大家分享共勉。何謂優(yōu)秀的驅(qū)動(dòng)開發(fā)工程師首先要定義,我所認(rèn)為的一個(gè)優(yōu)秀的驅(qū)動(dòng)開發(fā)工程師,應(yīng)該具備什么樣的能力,這里列一下按照從易到難的順序,個(gè)人認(rèn)為應(yīng)該會(huì)有幾個(gè)方面的要求吧:能夠獨(dú)立完成驅(qū)動(dòng)的功能開發(fā)任務(wù)能夠分析和優(yōu)化驅(qū)動(dòng)的性能,針對(duì)特定硬件揚(yáng)長(zhǎng)避短能夠充分了解模塊相關(guān)軟硬件能力、發(fā)展方向,輔助應(yīng)用工程師最大化利用硬件能力能夠輔助硬件工程師規(guī)劃硬件設(shè)計(jì),預(yù)防問(wèn)題,謀求功能模塊的最佳方案能夠協(xié)助定義系統(tǒng)架構(gòu),合理規(guī)劃軟硬件,謀求產(chǎn)品實(shí)現(xiàn)的最佳方案作為一個(gè)驅(qū)動(dòng)工程師,很多時(shí)候不是完全從頭開發(fā)一個(gè)完整的子系統(tǒng),而是針對(duì)特定硬件和平臺(tái)移植驅(qū)動(dòng),增加功能,解決Bug等等,如果從這方面外在的表現(xiàn)來(lái)看:解決問(wèn)題的境界,大概會(huì)有這么幾個(gè)階段:不知道哪里存在BUG不知道如何解決BUG知道如何解決BUG知道如何發(fā)現(xiàn)BUG知道如何規(guī)劃BUG知道如何發(fā)現(xiàn)BUG(而不是撞上BUG)其實(shí)并不簡(jiǎn)單,需要你對(duì)系統(tǒng)有足夠的了解,能夠察覺(jué)可能出問(wèn)題的地方。 而規(guī)劃Bug更難,需要你能對(duì)問(wèn)題的輕重緩急做出準(zhǔn)確的判斷。沒(méi)有的完美的世界,只有適當(dāng)?shù)娜∩?,?guī)避和預(yù)防。而從解決問(wèn)題過(guò)程的角度來(lái)看,我認(rèn)可以分為幾個(gè)階段:BUG發(fā)生 -> 大量跟蹤調(diào)試代碼 -> 終于發(fā)現(xiàn)并解決BUGBUG發(fā)生 -> 理論推測(cè)可能原因 -> 迅速定位并解決BUG閱讀代碼 -> 預(yù)測(cè)可能出現(xiàn)的BUG -> 證實(shí)并解決BUG應(yīng)該具備怎樣的素質(zhì)那么要達(dá)到上訴最佳境界,需要具備和發(fā)展哪些素質(zhì)和能力呢?一、足夠的硬件知識(shí)能看簡(jiǎn)單的原理圖,能夠分析硬件異常的可能原因,能夠使用常見(jiàn)的硬件調(diào)試工具,我想這是做為優(yōu)秀的驅(qū)動(dòng)工程師,區(qū)別與其它軟件工程師,所不可避免、必須具備的專業(yè)素質(zhì)。當(dāng)然取決于你具體從事的工作,對(duì)這方面的要求不盡相同。對(duì)于驅(qū)動(dòng)開發(fā)者來(lái)說(shuō),不了解所開發(fā)驅(qū)動(dòng)外設(shè)的硬件原理和相關(guān)背景知識(shí),也許很多時(shí)候,也能夠完成一些移植,修補(bǔ)的工作任務(wù),但這就好比無(wú)源之水,無(wú)根之木,我相信是很難走遠(yuǎn)的。二、多多益善的操作系統(tǒng)知識(shí)做驅(qū)動(dòng)開發(fā),特別是純粹的外設(shè)的驅(qū)動(dòng)移植工作,剛開始的時(shí)候,也許你并不需要了解很多操作系統(tǒng)本身的知識(shí)(像內(nèi)存管理,進(jìn)程調(diào)度,鎖,各種內(nèi)核子系統(tǒng)的原理框架等等),也能順利完成手頭的一些工作。但是,如果一但需要優(yōu)化驅(qū)動(dòng),需要完善軟件框架,或者是遇上疑難問(wèn)題需要跟蹤解決,對(duì)操作系統(tǒng),內(nèi)核本身的了解,就體現(xiàn)出它的價(jià)值了。對(duì)于Linux內(nèi)核驅(qū)動(dòng)開發(fā)者,尤其如此,首先,代碼是完全開源的,你有條件去了解背后的運(yùn)行機(jī)制,其次,Linux內(nèi)核和各個(gè)組成子系統(tǒng)總是在迅速的進(jìn)化發(fā)展中,不進(jìn)則退,你也有必要跟上時(shí)代發(fā)展的腳步。三、強(qiáng)烈的好奇心,持續(xù)的熱情如果驅(qū)動(dòng)開發(fā)不僅僅是你的愛(ài)好,更是你養(yǎng)家糊口的途徑,我想,很多時(shí)候,你大概不會(huì)有機(jī)會(huì)專注于一兩個(gè)你最有經(jīng)驗(yàn)的模塊的開發(fā)和維護(hù)。隨著能力的成長(zhǎng),勢(shì)必會(huì)要求你接觸和掌握越來(lái)越多的各式各樣的驅(qū)動(dòng)模塊的開發(fā)。對(duì)于這件事,包括我自己,有時(shí)候大概都會(huì)有如下幾種反應(yīng):哇,原來(lái)的工作做太久了,太乏味了,很高興能做不同的工作。啊?又要做別的模塊啊?我手頭的工作已經(jīng)太多了!這個(gè)模塊沒(méi)意思,我不想做。相信多數(shù)有志青年們都是第一種表現(xiàn)了,不過(guò),有些時(shí)候,我發(fā)覺(jué),很多人的這種熱情其實(shí)并不持久,一個(gè)新的模塊沒(méi)做多久,就再次厭倦了,是已經(jīng)爐火純青了么,未必,或許只是修改了幾個(gè)BUG以后不甚其煩。很多時(shí)候,我面試前來(lái)求職的工程師時(shí),發(fā)現(xiàn)簡(jiǎn)歷上這個(gè)也做過(guò),那個(gè)也做過(guò),但是一旦問(wèn)到解決了什么問(wèn)題,所做過(guò)的驅(qū)動(dòng),框架、流程、原理之類的問(wèn)題的時(shí)候,就一問(wèn)三不知了。我覺(jué)得如果自己的目標(biāo)是優(yōu)秀,那么最起碼的標(biāo)準(zhǔn)應(yīng)該是對(duì)具體驅(qū)動(dòng)模塊相關(guān)的子系統(tǒng)的整體工作流程,框架,具備足夠的好奇心,樂(lè)于去了解和學(xué)習(xí),而不僅僅是為了完成任務(wù)而工作,否則的話,很難積累下扎實(shí)的經(jīng)驗(yàn)和技術(shù)。四、清晰的邏輯思維能力這一點(diǎn),也許是個(gè)軟件開發(fā)人員都應(yīng)該具備吧,不過(guò),做為驅(qū)動(dòng)開發(fā)工程師來(lái)說(shuō),有時(shí)候,大多數(shù)情況下,工作的硬件環(huán)境并不是完美的,遇到問(wèn)題需要分析判斷錯(cuò)誤的原因是硬件問(wèn)題還是驅(qū)動(dòng)Bug,這時(shí)候,清晰的邏輯思維能力尤其重要。五、良好的工作習(xí)慣大多數(shù)人都不是天才,要成為優(yōu)秀的開發(fā)工程師,其一需要持續(xù)努力,其二需要時(shí)間積累經(jīng)驗(yàn),而這過(guò)程中,很重要的一點(diǎn),就是要有良好的工作習(xí)慣。譬如,注意設(shè)計(jì)文檔的維護(hù),對(duì)工作中遇到的問(wèn)題的記錄,過(guò)往經(jīng)驗(yàn)的及時(shí)記錄,適當(dāng)?shù)能浖_發(fā)流程等等。文檔工作,可能很多人很不愿意去做,它的確很花費(fèi)時(shí)間。不過(guò),唉。。。老啦,好記性不如爛筆頭啊 。當(dāng)然,其實(shí)設(shè)計(jì)文檔更多的是為你提供思考的機(jī)會(huì),而過(guò)往經(jīng)驗(yàn)的總結(jié),也可以起到和大家交流技術(shù),共同進(jìn)步的目的。六、英語(yǔ)這個(gè)也是必須的啦,沒(méi)有辦法,郵件列表,技術(shù)文檔,社區(qū),精通英語(yǔ)肯定是很大的優(yōu)勢(shì),做開源項(xiàng)目尤其如此。閱讀各種Spec標(biāo)準(zhǔn)文檔之類的速度還是很重要的。閱讀無(wú)障礙是一回事,能和母語(yǔ)一樣一目十行,那才爽呀,唉,人生苦短,效率啊!光讀文檔,就不知道要比老外多花多少時(shí)間。
Dark大先生
職業(yè)發(fā)展方向:Linux運(yùn)維工程師、系統(tǒng)架構(gòu)師、數(shù)據(jù)庫(kù)工程師、運(yùn)維開發(fā)工程師、系統(tǒng)網(wǎng)絡(luò)安全工程師、運(yùn)維經(jīng)理、運(yùn)維總監(jiān);1) Linux運(yùn)維崗位及工作內(nèi)容互聯(lián)網(wǎng)Linux運(yùn)維工程師是一個(gè)融合多學(xué)科(網(wǎng)絡(luò)、系統(tǒng)、開發(fā)、數(shù)據(jù)庫(kù)、安全、存儲(chǔ)等)的綜合性技術(shù)崗位,甚至還需要溝通、為人處世、培訓(xùn)、銷售、管理等非技術(shù)能力,這給運(yùn)維工程師提供了一個(gè)廣闊的發(fā)展空間。2) Linux運(yùn)維工程師崗位職責(zé)一般從企業(yè)入門到中級(jí)Linux運(yùn)維工程師的工作大致有:挑選IDC機(jī)房及帶寬、購(gòu)買物理服務(wù)器或云服務(wù)、購(gòu)買及使用CDN服務(wù)、搭建部署程序開發(fā)及用戶的訪問(wèn)系統(tǒng)環(huán)境(例如:網(wǎng)站運(yùn)行環(huán)境)、對(duì)數(shù)據(jù)進(jìn)行備份及恢復(fù)、處理網(wǎng)站運(yùn)行中的各種故障(例如:硬件故障、軟件故障、服務(wù)故障、數(shù)據(jù)損壞及丟失等)、對(duì)網(wǎng)站的故障進(jìn)行監(jiān)控、解決網(wǎng)站運(yùn)行的潛在安全問(wèn)題、開發(fā)自動(dòng)化腳本程序提高工作效率、規(guī)劃網(wǎng)站架構(gòu)、程序發(fā)布流程和規(guī)范,制定運(yùn)維工作制度和規(guī)范、配合開發(fā)人員部署及調(diào)試產(chǎn)品研發(fā)需要的測(cè)試環(huán)境、代碼發(fā)布等工作需求,公司如果較小可能還會(huì)兼職網(wǎng)管、網(wǎng)絡(luò)工程師、數(shù)據(jù)庫(kù)管理員、安全工程師、技術(shù)支持等職責(zé)。涉及到的Linux平臺(tái)上的運(yùn)維工具有:Linux系統(tǒng),Linux基礎(chǔ)命令,Nginx,Apache,MySQL,PHP,Tomcat,Lvs,Keepalived,SSH,Ansible,Rsync,NFS,Inotify,Sersync,Drbd,PPTP,OpenVPN,NTP,Kickstart/Cobbler,KVM,OpenStack,Docker,,K8S,Mongodb,Redis,Memcached,Iptables,SVN,GIT,Jenkins,網(wǎng)絡(luò)基礎(chǔ),Shell/Python開發(fā)基礎(chǔ)等,除此之外還可能涉及到交換機(jī)、路由器、存儲(chǔ)、安全、開發(fā)等知識(shí)。運(yùn)維工程師還包括一些低端的崗位,例:網(wǎng)絡(luò)管理員、監(jiān)控運(yùn)維、IDC運(yùn)維,值班運(yùn)維3) Linux中級(jí)運(yùn)維工程師應(yīng)用軟件階段。Linux系統(tǒng),Linux基礎(chǔ)命令,Nginx,Apache,MySQL,PHP,Tomcat,Lvs,Keepalived,SSH,Ansible,Rsync,NFS,Inotify,Sersync,Drbd,PPTP,OpenVPN,NTP,Kickstart/Cobbler,KVM,OpenStack,Docker,Mongodb,Redis,Memcached,Iptables,SVN,GIT,Jenkins,網(wǎng)絡(luò)基礎(chǔ),Shell/Python開發(fā)基礎(chǔ)4)Linux運(yùn)維架構(gòu)師崗位職責(zé)運(yùn)維架構(gòu)師是運(yùn)維工程師的高級(jí)階段,并沒(méi)有明確的崗位界限區(qū)分,運(yùn)維架構(gòu)師一般來(lái)說(shuō)是除了對(duì)運(yùn)維工程師應(yīng)用的開源工具熟練掌握之外,更多的是用思想來(lái)運(yùn)維了,即DevOps的落地,各種企業(yè)運(yùn)行過(guò)程中的解決方案提出和執(zhí)行,例如:根據(jù)公司的現(xiàn)狀可以設(shè)計(jì)各類運(yùn)維解決方案的能力:1、自動(dòng)化代碼上線(SVN/GIT+Jenkins+MVN)解決方案;2、云計(jì)算部署架構(gòu)及Docker微服務(wù)架構(gòu)方案;3、服務(wù)自動(dòng)化擴(kuò)容方案(KVM/OpenStack/Docker+Ansible+Zabbix);4、10萬(wàn)并發(fā)的網(wǎng)站架構(gòu)、秒殺系統(tǒng)的架構(gòu)及解決發(fā)你個(gè)案;5、多IDC機(jī)房互聯(lián)方案、全網(wǎng)數(shù)據(jù)備份解決方案、賬號(hào)統(tǒng)一認(rèn)證方案;6、數(shù)據(jù)庫(kù)、存儲(chǔ)及各重要服務(wù)節(jié)點(diǎn)的集群和高可用方案。7、各網(wǎng)絡(luò)服務(wù)的極端優(yōu)化方案、服務(wù)解耦/拆分。8、運(yùn)維流程、制度、規(guī)范等的建設(shè)和推行。9、溝通能力、培訓(xùn)能力、項(xiàng)目管理、業(yè)務(wù)需求分析及落地執(zhí)行力等。這里僅舉幾個(gè)例子,實(shí)際工作中會(huì)有更多,運(yùn)維架構(gòu)師的工作,其實(shí)就是解決企業(yè)中的用戶訪問(wèn)量不斷增大帶來(lái)的痛點(diǎn),最終達(dá)到高效、優(yōu)質(zhì)的為客戶提供網(wǎng)站及業(yè)務(wù)服務(wù)??偟膩?lái)說(shuō):Linux運(yùn)維架構(gòu)師更多的是根據(jù)企業(yè)日益增長(zhǎng)的訪問(wèn)量需求,利用若干運(yùn)維工具組合加上經(jīng)驗(yàn)思想,形成解決業(yè)務(wù)需求方案的階段,當(dāng)然也不排除對(duì)運(yùn)維工具進(jìn)行二次開發(fā)以及可視化展示運(yùn)維數(shù)據(jù)的階段(開發(fā)軟件平臺(tái)),這個(gè)階段涉及的工具會(huì)非常多,幾乎市面好用的開源工具都在備選之列,在一線城市互聯(lián)網(wǎng)公司的薪資范圍15000-50000/月。職業(yè)方向:高級(jí)數(shù)據(jù)庫(kù)工程師、運(yùn)維開發(fā)工程師、運(yùn)維經(jīng)理、運(yùn)維總監(jiān)、技術(shù)總監(jiān)運(yùn)維架構(gòu)師:將多個(gè)工具組合,加上思想經(jīng)驗(yàn),形成方案,用思想和經(jīng)驗(yàn)賺錢的階段。技術(shù)的提升僅是量的積累,思想的提升才是質(zhì)的飛躍!——老男孩5)數(shù)據(jù)庫(kù)運(yùn)維工程師眾所周知,數(shù)據(jù)幾乎是所有企業(yè)的生命線,所以數(shù)據(jù)庫(kù)工程師的地位和薪水一般會(huì)比普通運(yùn)維工程師高一些,主要工作內(nèi)容就是保證數(shù)據(jù)庫(kù)數(shù)據(jù)的安全以及高效地為用戶提供各種服務(wù)。工作內(nèi)容主要有:數(shù)據(jù)庫(kù)環(huán)境搭建、數(shù)據(jù)庫(kù)優(yōu)化、數(shù)據(jù)庫(kù);
優(yōu)質(zhì)工程師考試問(wèn)答知識(shí)庫(kù)