日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

程序員生存之道,誰開發(fā)誰運(yùn)行誰監(jiān)控,不懂監(jiān)控不是一個(gè)好程序員

 美好生活谷 2019-05-18

誰開發(fā)

開發(fā)很好理解,程序員的主要本質(zhì)工作,通過代碼的方式去實(shí)現(xiàn)業(yè)務(wù)需求。開發(fā)過程中也是很有講究的,選用什么語言,java、python、還是go,需要根據(jù)實(shí)際的情況,選擇一個(gè)最適合的。比如一個(gè)團(tuán)隊(duì)5個(gè)人,只有1個(gè)人會使用go,5個(gè)人都會java,如果go和java都能實(shí)現(xiàn)業(yè)務(wù)需求,這時(shí)候使用java開發(fā)會是一個(gè)比較好的選擇,因?yàn)槭褂胓o,維護(hù)成本會比較高,需要其他成員去學(xué)習(xí)相關(guān)語言。

語言確定好之后,需要對業(yè)務(wù)分析和設(shè)計(jì),又可以分為數(shù)據(jù)驅(qū)動設(shè)計(jì)和領(lǐng)域驅(qū)動設(shè)計(jì),數(shù)據(jù)驅(qū)動設(shè)計(jì)是指,根據(jù)具體的功能,第一想到的是如何設(shè)計(jì)表結(jié)構(gòu),要存哪些數(shù)據(jù),有哪些model類,每個(gè)model類中有很多的set、get方法,大多數(shù)程序員采用的是數(shù)據(jù)驅(qū)動的設(shè)計(jì)方式。另外一種領(lǐng)域驅(qū)動設(shè)計(jì),需要?jiǎng)澐诸I(lǐng)域,確定限界上下文、以及他們之間的關(guān)系,確定哪些是聚合根、哪些是值對象等等,也就是所謂的戰(zhàn)略和戰(zhàn)術(shù)的設(shè)計(jì)。

設(shè)計(jì)好之后,下一個(gè)步驟就是開發(fā)階段了,開發(fā)階段也面臨著不同的選擇,如何存儲數(shù)據(jù),mysql、redis、mongo等等。mysql一般適合存儲結(jié)構(gòu)性相對穩(wěn)定的數(shù)據(jù),redis適合那些經(jīng)常被訪問又不經(jīng)常變化的數(shù)據(jù),因?yàn)閿?shù)據(jù)存放內(nèi)存中,讀取速度快,有助于性能的提升。mongo適合數(shù)據(jù)結(jié)構(gòu)復(fù)雜,如商品屬性,每個(gè)商品的屬性個(gè)數(shù)是不一樣的。寫代碼過程中,可能還需要使用一些設(shè)計(jì)模式,提高代碼的復(fù)用性、擴(kuò)展性。同時(shí)需要遵循一些原則,如開閉原則、單一職責(zé)原則等。代碼編寫過程中也需要遵循一些代碼規(guī)范,包名小寫,變量名使用名詞,方法名使用動詞等等,推薦使用阿里的一個(gè)代碼規(guī)范插件。如果不符合規(guī)范會給出響應(yīng)的提示,點(diǎn)擊更多還給出了相應(yīng)的示例。

開發(fā)過程中,經(jīng)常涉及一個(gè)博弈的過程,一方面是項(xiàng)目進(jìn)度,一方面是代碼質(zhì)量。以前我覺得項(xiàng)目進(jìn)度的重要程度高于代碼質(zhì)量,隨著時(shí)間的推移,系統(tǒng)越來越復(fù)雜,代碼質(zhì)量的問題越來越明顯,可以通過代碼review來改善這個(gè)問題,代碼review有以下好處。杜絕不好的代碼,將好的代碼“發(fā)揚(yáng)光大”,提高團(tuán)隊(duì)的整體水平,改善代碼水平參差不齊的情況,最重要的是降低維護(hù)成本。當(dāng)然也有不好的地方,code review比較耗時(shí),但我相信磨刀不誤砍柴工。

以上只是開發(fā)的一小部分,還有很多需要注意的地方,需要合理的做出取舍。

誰運(yùn)行

大部分公司都有運(yùn)維,開發(fā)人員開發(fā)完程序之后,就通過郵件或者釘釘?shù)绕渌绞剑ㄖ\(yùn)維,需要部署哪個(gè)應(yīng)用服務(wù),開發(fā)人員不需要關(guān)心發(fā)布部署的具體細(xì)節(jié)。其實(shí)作為開發(fā)人員有必要了解一下運(yùn)維部署相關(guān)的工作,應(yīng)用程序如何部署,是通過tomcat還是jar的方式啟動,如果使用tomcat啟動,如何設(shè)置參數(shù)。這些都是手動部署的方式,還有一些自動化的部署方式,通過jenkins+腳本,jenkins提供了很多很棒的功能,比如jenkins可以配合git,只要有代碼有push,通過webhook自動觸發(fā)jenkins的部署。

kubenets和docker部署,讓應(yīng)用部署更便捷,但是相對來說比較復(fù)雜,需要安裝相應(yīng)的環(huán)境,還需要編寫對應(yīng)的docker file,門檻相對比較高。但這個(gè)肯定是趨勢,隨著技術(shù)的進(jìn)步,不斷的完善,以后可能會越來越簡單,就像人工智能一樣,現(xiàn)在也越來越多的機(jī)器學(xué)習(xí)相關(guān)的框架,對算法內(nèi)部實(shí)現(xiàn)進(jìn)行了封裝,使用算法,就像方法調(diào)用一樣簡單,降低了門檻。

誰監(jiān)控

程序開發(fā)完、部署好之后,還需要對應(yīng)用進(jìn)行監(jiān)控,很大部分程序員會覺得監(jiān)控是運(yùn)維的工作,開發(fā)人員不需要關(guān)心監(jiān)控。其實(shí)開發(fā)、部署只是開始,監(jiān)控是至關(guān)重要的部分,監(jiān)控能幫助我們發(fā)現(xiàn)問題,定位問題,改善問題。

監(jiān)控的內(nèi)容,主要分為機(jī)器的監(jiān)控,調(diào)用鏈監(jiān)控、jvm的監(jiān)控、業(yè)務(wù)指標(biāo)的監(jiān)控。機(jī)器監(jiān)控主要包括cpu、內(nèi)存、磁盤等。調(diào)用鏈監(jiān)控,在微服務(wù)的時(shí)代,調(diào)用鏈監(jiān)控是非常重要的,通過分析調(diào)用鏈可以知道服務(wù)之間的調(diào)用關(guān)系,方便定位是否存在互相調(diào)用,或者調(diào)用不合理的情況,一般原則是下游依賴上游的接口,上游不能直接調(diào)用下游的方法。調(diào)用鏈還有一個(gè)最大的好處是能分析每個(gè)接口方法,調(diào)用了哪些方法,每個(gè)方法消耗了多長時(shí)間,方便對接口進(jìn)行優(yōu)化。接口優(yōu)化的原則最好找那些經(jīng)常調(diào)用,并且調(diào)用時(shí)間比較長的方法進(jìn)行優(yōu)化,這樣的性價(jià)比最高。性能優(yōu)化是一個(gè)長期的過程,不斷的優(yōu)化,給用戶更好的體驗(yàn)。

程序員生存之道,誰開發(fā)誰運(yùn)行誰監(jiān)控,不懂監(jiān)控不是一個(gè)好程序員
程序員生存之道,誰開發(fā)誰運(yùn)行誰監(jiān)控,不懂監(jiān)控不是一個(gè)好程序員

jvm監(jiān)控,主要監(jiān)控應(yīng)用程序,堆棧、垃圾回收等情況,一個(gè)應(yīng)用程序如果經(jīng)常發(fā)生gc,因?yàn)椤皊top the world”導(dǎo)致性能的損耗,遇到這種情況需要排查定位問題,確定是YGC還是FGC,調(diào)整jvm參數(shù),改善虛擬機(jī)的垃圾回收垃圾回收,提高應(yīng)用的性能。

程序員生存之道,誰開發(fā)誰運(yùn)行誰監(jiān)控,不懂監(jiān)控不是一個(gè)好程序員
程序員生存之道,誰開發(fā)誰運(yùn)行誰監(jiān)控,不懂監(jiān)控不是一個(gè)好程序員

業(yè)務(wù)指標(biāo)的監(jiān)控,比如說接口請求次數(shù),pv、uv等業(yè)務(wù)相關(guān)指標(biāo),可以通過相應(yīng)的埋碼,通過一些時(shí)間序列工具,如prometheus,進(jìn)行收集和處理。關(guān)于prometheus的使用后續(xù)文章會做相應(yīng)的講解,這里先不做展開。

程序員生存之道,誰開發(fā)誰運(yùn)行誰監(jiān)控,不懂監(jiān)控不是一個(gè)好程序員
程序員生存之道,誰開發(fā)誰運(yùn)行誰監(jiān)控,不懂監(jiān)控不是一個(gè)好程序員

推薦閱讀

java設(shè)計(jì)模式之訪問者模式,“見人說人話,見鬼說鬼話”

java設(shè)計(jì)模式之原型模式,本故事純屬虛構(gòu),如有雷同,純屬巧合

java設(shè)計(jì)模式之橋接模式,策略模式旗艦版,世界沒有免費(fèi)的午餐

java設(shè)計(jì)模式之代理模式,看我72變

java設(shè)計(jì)模式之構(gòu)建模式,私人訂制自己的創(chuàng)意

java設(shè)計(jì)模式之狀態(tài)模式,策略模式的孿生兄弟

java設(shè)計(jì)模式之迭代器模式,顧客永遠(yuǎn)的上帝

java設(shè)計(jì)模式之模板模式,站在巨人的肩膀上成功

java設(shè)計(jì)模式之適配器模式,大丈夫能屈能伸

Head First 設(shè)計(jì)模式之命令模式,各司其職提高效率

Head First 設(shè)計(jì)模式之裝飾器模式,因?yàn)閰⑴c,所以認(rèn)同

Head First 設(shè)計(jì)模式之單例模式,每個(gè)人都是唯一

Head First 設(shè)計(jì)模式之觀察者模式,你我都是發(fā)布者和訂閱者

Head first 設(shè)計(jì)模式之策略模式,來源于生活,用之于生活

做互聯(lián)網(wǎng)行業(yè)薪資高是很正常的,多年編程經(jīng)驗(yàn),今年1月整理了一批2019年最新WEB前端教學(xué)視頻,不論是零基礎(chǔ)想要學(xué)習(xí)前端還是學(xué)完在工作想要提升自己,這些資料都會給你帶來幫助,從HTML到各種框架,幫助所有想要學(xué)好前端的同學(xué),學(xué)習(xí)規(guī)劃、學(xué)習(xí)路線、學(xué)習(xí)資料、問題解答。只要關(guān)注我,后臺私信我【前端】兩個(gè)字,即可免費(fèi)獲取,學(xué)習(xí)不怕從零開始,就怕從不開始。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多