在创业公司,不懂运维的程序员如何兼顾公司的运维工作
我是一名創(chuàng)業(yè)公司的Java開(kāi)發(fā)工程師,公司沒(méi)有運(yùn)維團(tuán)隊(duì),由程序員負(fù)責(zé)代運(yùn)維。
公司的產(chǎn)品幾乎都是部署在阿里云上,項(xiàng)目存在需要頻繁改動(dòng)并經(jīng)常上線發(fā)布的情況。但通過(guò)Jenkins本地構(gòu)建然后再發(fā)布到阿里云的ECS上的流程已經(jīng)不太適用于當(dāng)前的業(yè)務(wù)場(chǎng)景,再加上整個(gè)項(xiàng)目的IT架構(gòu)已經(jīng)升級(jí)改造為Spring Cloud微服務(wù)體系,在這套微服務(wù)架構(gòu)中,原本很多服務(wù)都被打散,對(duì)應(yīng)用的發(fā)布就顯得更加復(fù)雜和容易出錯(cuò),這時(shí)候需要一套更加健全和可靠的線上發(fā)布流程。
業(yè)務(wù)挑戰(zhàn)
由于業(yè)務(wù)不太穩(wěn)定,存在大面積的老業(yè)務(wù)下線和新業(yè)務(wù)上線的情況,每一次發(fā)布項(xiàng)目都需要整站暫停訪問(wèn)來(lái)發(fā)布新的內(nèi)容上線,這對(duì)用戶來(lái)說(shuō)很不友好。我們需要在不停機(jī)的情況下,發(fā)布項(xiàng)目快速注冊(cè),并立即實(shí)現(xiàn)注冊(cè)中心可以對(duì)外提供服務(wù)訪問(wèn),以及必要時(shí)進(jìn)行灰度發(fā)布,但這些都是當(dāng)前所欠缺的。
測(cè)試環(huán)境因項(xiàng)目進(jìn)行拆分,微服務(wù)項(xiàng)目數(shù)量已達(dá)30個(gè)。每一次有新的需求過(guò)來(lái),都是在項(xiàng)目的新建分支上進(jìn)行開(kāi)發(fā),這樣前面的流程還沒(méi)有測(cè)試完畢,測(cè)試人員就會(huì)被開(kāi)發(fā)人員提交到測(cè)試環(huán)境的自動(dòng)構(gòu)建的新代碼給被迫暫停,等待構(gòu)建完畢以后,由于改動(dòng)了代碼相關(guān)的功能,測(cè)試人員又需要進(jìn)行重新測(cè)試,導(dǎo)致沒(méi)有一個(gè)完整的環(huán)境來(lái)交付給測(cè)試團(tuán)隊(duì)進(jìn)行持續(xù)測(cè)試。我們希望一旦出現(xiàn)新的改動(dòng),可以快速拉起來(lái)一套新的測(cè)試環(huán)境,以便測(cè)試團(tuán)隊(duì)完成全流程測(cè)試以后再釋放資源,從而降低測(cè)試的工作量以及服務(wù)器資源的成本。
在對(duì)比多個(gè)解決方案后,我們選用了阿里云企業(yè)級(jí)分布式應(yīng)用管理服務(wù)EDAS,EDAS包含的功能,以及能夠?qū)崿F(xiàn)的效果很符合公司目前的需求,并帶來(lái)一些我們之前敢想,但是又不敢去實(shí)現(xiàn)的功能,大大降低了公司技術(shù)團(tuán)隊(duì)運(yùn)維方面的壓力,以及線上的各種監(jiān)控指標(biāo),還能提高基礎(chǔ)服務(wù)的穩(wěn)定性。
以下是我對(duì)阿里云EDAS的測(cè)評(píng),希望對(duì)那些在創(chuàng)業(yè)公司做業(yè)務(wù)開(kāi)發(fā)的同時(shí)還需要兼顧運(yùn)維的程序員有所幫助。
EDAS Serverless 操作體驗(yàn)
首先從控制臺(tái)進(jìn)入EDAS,在選擇命名空間里,管理控制臺(tái)右方出現(xiàn)了地區(qū)的切換以及選擇,這個(gè)時(shí)候選擇切換至華北2(北京)地區(qū),這個(gè)時(shí)候,看到管理控制臺(tái)下方的企業(yè)級(jí)分布式應(yīng)用服務(wù)出現(xiàn)了一個(gè)小箭頭,點(diǎn)擊后選擇企業(yè)級(jí)分布式應(yīng)用服務(wù) - Serverless ,進(jìn)入本次測(cè)評(píng)。
這個(gè)進(jìn)入服務(wù)的操作流程以及切換稍顯復(fù)雜,建議在進(jìn)入EDAS服務(wù)中默認(rèn)是進(jìn)入概述,是否能在出現(xiàn)概述的時(shí)候就增加出現(xiàn)地區(qū)的切換以及選擇,這樣可以少操作一步來(lái)快速進(jìn)入想操作的地區(qū)。
接下來(lái)進(jìn)入到了EDAS Serverless服務(wù)的頁(yè)面如下圖:
進(jìn)行一個(gè)應(yīng)用創(chuàng)建,界面如下圖:
在整個(gè)頁(yè)面上看來(lái),所需要填寫(xiě)的內(nèi)容都還是很清晰和容易理解的,關(guān)于當(dāng)前你免費(fèi)體驗(yàn)公測(cè)版Serverless應(yīng)用的剩余額度為 9 Core 9GiB 這段提示這里,我的剩余額度比剛開(kāi)通進(jìn)入該服務(wù)的小伙伴要多,這個(gè)是因?yàn)檫M(jìn)行了工單申請(qǐng)然后通過(guò)審核后給予我這邊提升了資源數(shù)量,在這里額外點(diǎn)贊一下工單系統(tǒng),是一個(gè)相當(dāng)優(yōu)秀的功能,已經(jīng)處理過(guò)我們這種運(yùn)維門(mén)外漢的相當(dāng)多的問(wèn)題,而且回答的內(nèi)容都很細(xì)致和認(rèn)真,都是從用戶的角度出發(fā)和考慮來(lái)解決問(wèn)題的。
接下來(lái)開(kāi)始進(jìn)行創(chuàng)建應(yīng)用,我這邊填上對(duì)應(yīng)的參數(shù)如下圖:
在這里提一句VPC因?yàn)槲覜](méi)有提前在北京區(qū)域創(chuàng)建過(guò),在這個(gè)頁(yè)面看到提示創(chuàng)建VPC,創(chuàng)建VPC大概僅需1分鐘。
點(diǎn)擊下一步,應(yīng)用部署配置出現(xiàn)如下圖:
因?yàn)樵陂_(kāi)頭提到過(guò),公司沒(méi)有運(yùn)維團(tuán)隊(duì),所以對(duì)于Docker以及K8S都是出于0的狀態(tài),所以本次部署方式不采用鏡像的形式,而是沿用目前的Jar包部署方式。
現(xiàn)在本地Jar包部署的方式通過(guò)了腳本來(lái)操作并且在啟動(dòng)時(shí)注入了一些參數(shù)例如:--spring.profiles.active=prod通過(guò)這些參數(shù)來(lái)區(qū)分一些不同環(huán)境對(duì)于的不同配置文件,但是在本次進(jìn)行測(cè)評(píng)的EDAS Serverless發(fā)布的版本中,暫時(shí)還不支持Jar包部署方式的自定義啟動(dòng)參數(shù),所以將本地項(xiàng)目進(jìn)行了一下修改和調(diào)整增加了一份application.properties這樣的配置文件用來(lái)配合Jar包部署方式。Jar包部署方式頁(yè)面填寫(xiě)參數(shù)具體內(nèi)容如下圖:
選擇Java環(huán)境完畢以后,再接著上傳所需要部署的Jar包,這整個(gè)過(guò)程是很簡(jiǎn)單和容易理解的。準(zhǔn)備完畢以后點(diǎn)擊確認(rèn)創(chuàng)建按鈕,完成創(chuàng)建。確認(rèn)創(chuàng)建完畢如下圖:
根據(jù)提示點(diǎn)擊應(yīng)用詳情頁(yè)跳轉(zhuǎn)至我們剛剛創(chuàng)建發(fā)布的項(xiàng)目詳細(xì)信息中,如下圖:
在本頁(yè)面等待1-2分鐘以后進(jìn)入側(cè)邊的實(shí)時(shí)日志查看一下當(dāng)前項(xiàng)目的情況,如下圖:
就可以看到項(xiàng)目的運(yùn)行和啟動(dòng)情況了,接著點(diǎn)擊側(cè)邊的基本信息欄回到基本信息進(jìn)行公網(wǎng)訪問(wèn)地址的添加,測(cè)試一下公網(wǎng)是否能夠訪問(wèn)當(dāng)前項(xiàng)目,如下圖:
因?yàn)槲耶?dāng)前的項(xiàng)目是80端口,所以對(duì)應(yīng)也映射80端口,這個(gè)添加公網(wǎng)SLB訪問(wèn)配置起來(lái)是非常簡(jiǎn)化的,不用自己去新建一個(gè)SLB實(shí)例然后在進(jìn)行配置了,直接在這里配置雙向的端口點(diǎn)擊確定就完成了一整套的創(chuàng)建,使用起來(lái)是相當(dāng)方便的,點(diǎn)擊確定后等待1分鐘刷新出現(xiàn)的內(nèi)容,如下圖:
這樣一個(gè)對(duì)公網(wǎng)的映射就已經(jīng)完成了,接下來(lái)嘗試一下進(jìn)行訪問(wèn),檢測(cè)服務(wù)是否正常如下圖:
測(cè)試是能進(jìn)行訪問(wèn)的,以及我們的服務(wù)也是正常部署。下面嘗試一下應(yīng)用擴(kuò)縮功能,在基本信息頁(yè)面,右上角有一個(gè)應(yīng)用擴(kuò)縮的按鈕點(diǎn)擊后出現(xiàn),如下圖:
我們嘗試調(diào)整為4個(gè)實(shí)例數(shù),在這里有一點(diǎn)小建議,不知道后續(xù)版本如何,但是這個(gè)地方應(yīng)該變更為彈性伸縮,讓用戶自定義擴(kuò)容參數(shù)和條件,以及縮容參數(shù)和條件,這樣更加實(shí)用以及貼合實(shí)際生產(chǎn)環(huán)境的需求。設(shè)置為4,點(diǎn)擊確定按鈕后,如下圖:
在當(dāng)前頁(yè)面的數(shù)據(jù)會(huì)每5秒刷新一次,這個(gè)時(shí)候就可以實(shí)時(shí)看到自己擴(kuò)容的實(shí)例的狀態(tài),等待了1分鐘左右所有的擴(kuò)容實(shí)例運(yùn)行狀態(tài)都變?yōu)?Running 了這個(gè)時(shí)候在訪問(wèn)剛才設(shè)置的公網(wǎng)訪問(wèn)地址:39.97.9.248:80,多次刷新測(cè)試以后發(fā)現(xiàn)剛才的四個(gè)實(shí)例都已經(jīng)通過(guò)這個(gè)地址進(jìn)行負(fù)載均衡了,新手不太懂底層的原理,原本以為創(chuàng)建完畢以后還需要自己手動(dòng)設(shè)置一下負(fù)載均衡,測(cè)試以后發(fā)現(xiàn)已經(jīng)自動(dòng)實(shí)現(xiàn)了,這個(gè)是一個(gè)很舒服的點(diǎn)。
基于Jar包方式部署的內(nèi)容到這里基本上就已經(jīng)測(cè)試完畢了,從整體流程體驗(yàn)下來(lái)是相當(dāng)容易上手和理解的,而且?guī)缀跞潭疾恍枰榭磶椭臋n,簡(jiǎn)單的理解一下頁(yè)面上的字面意思即可完成一套服務(wù)的發(fā)布以及部署,是相當(dāng)適合我們這種完全0知識(shí)基礎(chǔ)的小白用戶的,讓用戶簡(jiǎn)單上手達(dá)到需要的目標(biāo),并且體驗(yàn)過(guò)程中沒(méi)有出現(xiàn)難以理解和明白的地方,這個(gè)方面是處理的相當(dāng)?shù)轿坏?#xff0c;化簡(jiǎn)為繁簡(jiǎn)單易用。
支持原生Dubbo和Spring Cloud
基于阿里云官方給出的兩個(gè)案例,增加了一個(gè)gateway-zuul項(xiàng)目進(jìn)行Spring Cloud的操作體驗(yàn)。按照官方操作文檔,配置alibaba.edas.access-key 和 alibaba.edas.secret-key。完成配置后,就可以放到EDAS Serverless里面去創(chuàng)建一個(gè)應(yīng)用進(jìn)行部署了,下載以后只需要改動(dòng)配置文件里面的id ,ac key ,se key ,end這幾個(gè)參數(shù)即可,這些參數(shù)可以在如下圖:
命名空間中,找到然后鼠標(biāo)移動(dòng)到Key上面然后出現(xiàn)復(fù)制為properties格式,這樣操作一下然后在配置到案例中即可,這里操作配置完畢以后,創(chuàng)建了三個(gè)新的應(yīng)用如下圖:
一個(gè)服務(wù)發(fā)布者,一個(gè)服務(wù)消費(fèi)者,一個(gè)zuul網(wǎng)關(guān)。然后根據(jù)案例中寫(xiě)的接口進(jìn)行消費(fèi)者請(qǐng)求測(cè)試,結(jié)果如下圖:
都是正常OK的,沒(méi)有出現(xiàn)任何問(wèn)題,然后在進(jìn)行網(wǎng)關(guān)的請(qǐng)求和測(cè)試如下圖:
因?yàn)檗D(zhuǎn)發(fā)的匹配規(guī)則是api-consumer,所以請(qǐng)求網(wǎng)關(guān)的地址后面跟上了這一段參數(shù),測(cè)試下來(lái)也是能成功轉(zhuǎn)發(fā)并且正常請(qǐng)求到對(duì)應(yīng)的項(xiàng)目。
這樣本地基于Spirng Cloud的項(xiàng)目,只需要修改相關(guān)的POM依賴文件,即可進(jìn)行無(wú)縫接入了,項(xiàng)目中使用到的Feign,也都不需要進(jìn)行更改和重新編碼,這個(gè)為接入EDAS項(xiàng)目省下來(lái)了很多力氣,這方面的體驗(yàn)很好。當(dāng)然在接入的時(shí)候發(fā)現(xiàn)對(duì)應(yīng)的EDAS的一些功能目前暫時(shí)還不支持,比如全鏈路的鷹眼,以及日志,相信這些功能都會(huì)在后續(xù)的版本陸陸續(xù)續(xù)加上并且支持。
總結(jié)下來(lái)支持原生Spring Cloud操作體驗(yàn):是相當(dāng)流暢的,幾乎就是出于無(wú)縫接入的情況,僅需要稍稍的修改一些依賴和配置,就能輕松遷移到EDAS Serverless中,包括這樣一套完善穩(wěn)定可靠的基礎(chǔ)服務(wù),以及額外擴(kuò)展功能,比自己搭建一套Spring Cloud基礎(chǔ)服務(wù)要輕松方便太多,大大提升了開(kāi)發(fā)者的開(kāi)發(fā)效率,專注業(yè)務(wù)層,至于基礎(chǔ)層面的東西就完全放心的交給阿里云來(lái)處理無(wú)需任何的擔(dān)心,以及接入過(guò)程中遇到問(wèn)題,在釘釘群中大家的相互配合使得一切問(wèn)題都不是問(wèn)題。
與其他運(yùn)維工具對(duì)比的優(yōu)劣勢(shì)
因?yàn)楸救瞬皇菍iT(mén)的運(yùn)維出生,目前僅使用過(guò)Jenkins + GitLab進(jìn)行CI/CD,本地的流程是Dev環(huán)境和Test環(huán)境,根據(jù)開(kāi)發(fā)人員提交或者合并代碼到對(duì)應(yīng)的Dev和Test分支,GitLab就會(huì)調(diào)用對(duì)應(yīng)Jenkins項(xiàng)目進(jìn)行自動(dòng)構(gòu)建,然后開(kāi)始完成代碼提交,再執(zhí)行構(gòu)建更新發(fā)布操作,這樣的情況下對(duì)于開(kāi)發(fā)測(cè)試都不是很友好,流程不完善和健全,線上環(huán)境是在Test環(huán)境全部測(cè)試OK后,手動(dòng)點(diǎn)擊所需要發(fā)布的項(xiàng)目進(jìn)行構(gòu)建再發(fā)布,如果是所有項(xiàng)目進(jìn)行發(fā)布的話,則需要一個(gè)個(gè)進(jìn)行點(diǎn)擊,而且整一個(gè)發(fā)布時(shí)間達(dá)20分鐘左右,在這20分鐘內(nèi)整個(gè)網(wǎng)站的訪問(wèn)都是不正常的。
目前,因?yàn)镋DAS Serverless還有一些EDAS中的功能暫未接入,以及云效還未支持,但是從案例和自己測(cè)試體驗(yàn)下來(lái)看,接入這樣一套大環(huán)境以后,開(kāi)發(fā)測(cè)試環(huán)境以后的健壯性將得到更多的保障,以及代碼提交完畢以后的自動(dòng)化,代碼審計(jì),單元測(cè)試,這些都將得到補(bǔ)充,基礎(chǔ)設(shè)施的管理將更加完善和安全。此外,線上環(huán)境的發(fā)布和部署,也不會(huì)再耗費(fèi)這么多的時(shí)間,出現(xiàn)任何問(wèn)題都支持快速回滾,后續(xù)還需要支持灰度發(fā)布,這些都是接入EDAS+云效以后能夠帶來(lái)的。價(jià)格方面,EDAS Serverless版本相比EDAS,節(jié)省了不少ECS計(jì)算資源上的成本,對(duì)于創(chuàng)業(yè)企業(yè)來(lái)講,是非常有吸引力的。
對(duì)EDAS的整體認(rèn)知,以及優(yōu)化方向
我們是互聯(lián)網(wǎng)金融創(chuàng)業(yè)企業(yè),做的是電子承兌票相關(guān)的業(yè)務(wù),和銀行進(jìn)行對(duì)接支付,用戶群體是企業(yè)財(cái)務(wù)人員以及業(yè)務(wù)人員,對(duì)安全性和穩(wěn)定性要求高。團(tuán)隊(duì)目前的測(cè)試環(huán)境不夠完善,30個(gè)項(xiàng)目只有一個(gè)測(cè)試環(huán)境,當(dāng)來(lái)了新的需求和功能的時(shí)候,都需要在新分支開(kāi)發(fā),開(kāi)發(fā)完畢后再合并到test環(huán)境,或者不合并直接在test環(huán)境構(gòu)建對(duì)應(yīng)分支,這樣對(duì)測(cè)試環(huán)境來(lái)說(shuō)是極大的不方便,需要一套能夠快速一鍵跑起來(lái)的測(cè)試環(huán)境,這樣便于測(cè)試針對(duì)各種不同的特性進(jìn)行相應(yīng)的測(cè)試。
公司目前沒(méi)有專職運(yùn)維團(tuán)隊(duì),并且中短期內(nèi)暫無(wú)配置計(jì)劃,線上的穩(wěn)定性非常依賴EDAS,希望EDAS未來(lái)可以提供更加簡(jiǎn)單的操作體驗(yàn),進(jìn)一步提高我們的工作效率。例如,一次引導(dǎo)用戶配置使用后,便可實(shí)現(xiàn)全自動(dòng)化,資源自動(dòng)整合達(dá)到用戶所想要的效果,包括一鍵拉起完整測(cè)試環(huán)境,一鍵搭建一主一備的異地多活架構(gòu)等。
總結(jié)
以上是生活随笔為你收集整理的在创业公司,不懂运维的程序员如何兼顾公司的运维工作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用Python将Excel中的数据导入
- 下一篇: [Cinder] 存储 Qos