本人就從Java角度來說,其實(shí)技術(shù)加運(yùn)維是一條非常好的上進(jìn)之路。 先來看看運(yùn)維平時(shí)的工作及需要掌握的技能。 1 監(jiān)控日志,而日志一般是部署在linux上的。如果出錯(cuò),需要告知開發(fā)來解決,如果比較上心的運(yùn)維,出了問題,更會(huì)通過linux命令來分析日志排查問題。 2 部署上線組件,比如要擴(kuò)容,或者部署redis,nacos等組件,或者需要部署云端組件。在這過程中,運(yùn)維多少會(huì)了解各種linux命令,而且了解各種組件的配置方式以及安裝方式。 3 部署監(jiān)控,比如用newrelic監(jiān)控,或者zabbix等監(jiān)控軟件來監(jiān)控,并設(shè)置告警策略。 4 應(yīng)對(duì)線上問題或高并發(fā)的挑戰(zhàn),這過程中,不僅需要了解各種集群,更有機(jī)會(huì)熟悉各種網(wǎng)關(guān)和負(fù)載均衡等的硬件。如果數(shù)據(jù)庫或服務(wù)器有問題,更得通過日志或監(jiān)控組件,分析和排查問題。 5 其實(shí)運(yùn)維還能接觸到devops的相關(guān)技能,比如pipelines,云部署,甚至是k8s和service mesh這套技術(shù)。 從Java角度來看,架構(gòu)師要做的事情有哪些? 1 根據(jù)業(yè)務(wù)場(chǎng)景,用nacos,gateway或ribbon等組件搭建業(yè)務(wù)框架,必要的話引入redis,kafka等中間件,甚至有必要的時(shí)候再搭建集群。當(dāng)然搭建好以后,相關(guān)組件有什么問題都需要解決。 2 負(fù)責(zé)項(xiàng)目上線和數(shù)據(jù)遷移這部分的工作,比如設(shè)計(jì)發(fā)布流程,編寫發(fā)布腳本,設(shè)計(jì)發(fā)布預(yù)案,設(shè)計(jì)數(shù)據(jù)遷移等的方案。 3 解決各種高并發(fā)方面的問題,比如引入各中間件,再通過壓力測(cè)試確認(rèn)系統(tǒng)的承壓能力和改進(jìn)點(diǎn),必要的時(shí)候設(shè)計(jì)限流熔斷等問題。 4 系統(tǒng)上線后,需要搭建針對(duì)系統(tǒng)的監(jiān)控系統(tǒng),有問題以后需要及時(shí)排查。 也就是說,架構(gòu)師的工作其實(shí)很大一部分是和運(yùn)維是重疊的。而當(dāng)下不少程序員做的僅僅是單機(jī)版的增刪改查,開發(fā)環(huán)境僅限于windows,而不是linux,更別提是容器,中間件這塊僅限于使用api,不涉及如何搭建中間件以及集群,解決問題層面僅限于解決業(yè)務(wù)問題,如果中間件或底層遇到問題,基本上估計(jì)連異常信息都看不懂。 這樣大的程序員不在少數(shù),有的甚至還會(huì)排斥運(yùn)維或架構(gòu)方面的技能,或者說在平時(shí)工作中僅僅做業(yè)務(wù),沒機(jī)會(huì)掌握一些運(yùn)維方面的經(jīng)驗(yàn),這也是很多程序員無法上升到架構(gòu)師的原因所在。 當(dāng)下,一些大廠在招人時(shí),除了會(huì)spring boot等框架的增刪改查經(jīng)驗(yàn)外,更得會(huì)分布式高并發(fā)的經(jīng)驗(yàn)。開發(fā)語法好學(xué),部署等經(jīng)驗(yàn)難學(xué),排查分布式高并發(fā)等線上經(jīng)驗(yàn)更難學(xué)。 所以運(yùn)維做了1,2年以后,只要稍微了解下Spring Boot等方面的語法,甚至就能直接升級(jí)到架構(gòu),而且不少運(yùn)維還不知道自己掌握的技術(shù)很值錢。當(dāng)然,如果運(yùn)維對(duì)自己定位不當(dāng),或者公司對(duì)運(yùn)維的使用不當(dāng),導(dǎo)致運(yùn)維平時(shí)只干些裝電腦裝軟件等工作,這就另當(dāng)別論了。 下面就說說本人知道的運(yùn)維高效升級(jí)到架構(gòu)的一些例子。 1 就說我自己吧,我之前在一家公司,雖然做的也是增刪改查,但由于和一些運(yùn)維也比較熟,平時(shí)也耳渲目染了一些部署和調(diào)試方面的技能,雖然沒有得到實(shí)際的操作機(jī)會(huì),但自己感覺已經(jīng)比單純做開發(fā)的程序員要好很多,不僅掌握了不少linux部署組件和排查問題的相關(guān)技能,更熟悉了一些分布式組件和集群的搭建和運(yùn)維經(jīng)驗(yàn)。后來我跳槽,這些經(jīng)驗(yàn)也幫了我很多。 2 我見過一個(gè)2年經(jīng)驗(yàn)的運(yùn)維,平時(shí)干的活很累,要維護(hù)多個(gè)項(xiàng)目是常態(tài),但當(dāng)他自己補(bǔ)了一些spring boot技能后,直接進(jìn)了一家大廠,據(jù)他自己說,大廠面試雖然會(huì)問一些高并發(fā)中間件,但他平時(shí)都實(shí)際安裝和操作過,所以基本沒問題,然后薪資翻番。 3 我見過一個(gè)專門做部署的運(yùn)維,可能業(yè)務(wù)不熟,但很熟悉devops這套,什么k8s配置部署都很熟悉,后來也進(jìn)了大廠。 所以其實(shí)可以這樣說,掌握業(yè)務(wù)技能不難,掌握單機(jī)版的增刪改查技能也不難,做熟了增刪改查工作,從使用中間件的API慢慢熟悉中間件,然后再進(jìn)一步掌握中間件的搭建以及排查問題的技巧,這其實(shí)是一條路,而如果直接從運(yùn)維角度入手,一方面熟悉lunix等操作命令,另一方面直接和中間件、集群乃至容器等打交道,這條路其實(shí)更能方便提升到架構(gòu)。 畢竟API容易學(xué)會(huì),而架構(gòu)方面的實(shí)踐機(jī)會(huì)難得,所以這方面的技能反而是更難提升。不過話說回來,如果干運(yùn)維僅限于系統(tǒng)維護(hù)和輸入?yún)?shù),這就相當(dāng)于程序員只關(guān)注增刪改查,這樣就相當(dāng)于空守著值錢的項(xiàng)目實(shí)踐機(jī)會(huì)而不提升自己,這就非??上Я?。 |
|