程序員必知必會的幾種環(huán)境
開發(fā)環(huán)境
????????開發(fā)環(huán)境,顧名思義,就是程序員們進(jìn)行Coding的本地環(huán)境并且使用的配置文件中的服務(wù)配置為開發(fā)所用,如MySQL、Redis等數(shù)據(jù)相關(guān)服務(wù),可以任意對數(shù)據(jù)進(jìn)行操作。
? ? ? ? 如此看來開發(fā)環(huán)境配置文件相對散亂,臟數(shù)據(jù)較多,開發(fā)環(huán)境因人而異不統(tǒng)一(比如JDK,Maven等,但一般要跟線上保持一致,可以考考慮環(huán)境是否向下兼容)。
比如一個場景:一個Feature Leader 讓小徐同學(xué)去開發(fā)一個新的功能或者去修改一個Bug或升級一個協(xié)議的時候,小徐同學(xué)馬不停蹄的梳理需求,clone代碼,梳理代碼邏輯,并開始在自己的生產(chǎn)工具(就是電腦)上進(jìn)行開發(fā),Profile為測試環(huán)境配置項。當(dāng)然了我們公司強(qiáng)制要求開發(fā)完成單元測試,并且覆蓋率達(dá)到80%以上。
測試環(huán)境
當(dāng)一個Feature開發(fā)完成之后,并且在本地完成自測(我就沒有那么慶幸了,我們公司的引擎沒有可視化節(jié)點,只能開發(fā)完成之后直接放到測試環(huán)境服務(wù)器進(jìn)行測試),可以在測試環(huán)境進(jìn)行模擬線上環(huán)境進(jìn)行功能測試。測試環(huán)境是將我們開發(fā)的代碼,部署到測試環(huán)境服務(wù)器上,來測試功能,開發(fā)過程中的所有分支均可以部署到測試環(huán)境中,在Jenkins自動化部署中可以設(shè)置所有發(fā)布的分支。
一般如果測試用例比較完善的話,所有問題都是可以測試出來的,一般會看看有什么異常,以及測試時候打印的日志信息。在7.8日,我由于一個問題在測試環(huán)境沒有測試出來,導(dǎo)致了線上問題。函數(shù)參數(shù)傳入值為null,但是進(jìn)行setter的時候,實體類中的變量為int類型,導(dǎo)致了NOP(慶幸的是沒有影響線上業(yè)務(wù),百萬QPS情況下,可能幾秒中就是好幾萬的損失)。所以測試環(huán)境還是非常重要的。
????????總之:
? ? ? ? ? ?1、測試環(huán)境主要要看一下打印的日志信息;
? ? ? ? ? ?2、新開發(fā)的Feature是否可用;
? ? ? ? ? ?3、日志打印語義是否正確(warning,error,info等)。
預(yù)發(fā)布環(huán)境
預(yù)發(fā)布環(huán)境是測試環(huán)境到生產(chǎn)環(huán)境的過渡,測試環(huán)境可能會受到一些限制,可以到預(yù)發(fā)布進(jìn)行驗證,保證產(chǎn)品的上線質(zhì)量。預(yù)發(fā)布的代碼首先會保證與線上要提交的代碼要完全一致,這樣才能有效的驗證新業(yè)務(wù)代碼是否生效可用。同時一般預(yù)發(fā)布環(huán)境的訪問域名或ip跟線上不一致,但是一般會鏈接到生產(chǎn)環(huán)境數(shù)據(jù)庫,要防止產(chǎn)生臟數(shù)據(jù)。預(yù)發(fā)布也要小心呦!!
灰度測試(線上部分機(jī)器)
分布式環(huán)境下,一般業(yè)務(wù)代碼會部署到很多臺機(jī)器上,當(dāng)然這也跟公司的業(yè)務(wù)量有關(guān),有時也會根據(jù)業(yè)務(wù)量進(jìn)行服務(wù)擴(kuò)展。我們公司一個引擎服務(wù)就部署在了60多臺服務(wù)器上,所以一般上線的過程中,會針對2~3臺進(jìn)行優(yōu)先上線,驗證新的功能是否起作用,如果出現(xiàn)問題,可以及時回滾。其實恢復(fù)測試有時候就像A/B test(關(guān)于a/b test還有一個小插曲,在爬某程的時候,cookie中有abtest字段,我一致沒有研究出來是如何生成的,有興趣的同學(xué)可以研究下)測試方案,人群分為A組和B組,看那個測試對線上業(yè)務(wù)更加合適進(jìn)行判斷。不至于對大量用戶造成影響。關(guān)于在灰度環(huán)境測試什么的問題,因公司而異,我們公司是有專一的測試工具針對不同的場景可以使用。
生產(chǎn)環(huán)境(線上環(huán)境)
????????線上環(huán)境,就是用戶是使用的環(huán)境,一般到線上的feature都不會出現(xiàn)問題,哪怕存在軟件缺陷,也要后期逐漸挖掘升級。Jenkin上線,多臺實例分組上線即可。
寄語
????????喜歡或感興趣的事情,盡管去做去學(xué)就好了,不要讓我行不行可不可以這些問題,成為成長的羈絆!??!感覺有用就關(guān)注我呀
????個人公眾號:看相聲也要敲代碼