小雪尝禁果又粗又大的视频,人妻中文乱码在线网站,江苏少妇性BBB搡BBB爽爽爽,AV片在线观看免费

行業(yè)資訊

持續(xù)集成服務(wù)器部署策略-宇眾網(wǎng)絡(luò)科技服務(wù)器租用-高防服務(wù)器租用


2019年07月09日

   在軟件交付領(lǐng)域上有一個(gè)非常有用的啟發(fā)式原則:提前并頻繁地做讓你感到痛苦的事。集成通常是一個(gè)非常痛苦的過程,所以每次有人提交代碼后應(yīng)立刻進(jìn)行集成。

 馬丁福勒說:持續(xù)集成是一種軟件開發(fā)實(shí)踐,即團(tuán)隊(duì)開發(fā)成員經(jīng)常集成他們的工作,通過每個(gè)成員每天至少集成一次,也就意味著每天可能會(huì)發(fā)生多次集成。每次集成都通過自動(dòng)化的構(gòu)建(包括編譯,發(fā)布,自動(dòng)化測(cè)試)來(lái)驗(yàn)證,從而盡早地發(fā)現(xiàn)集成錯(cuò)誤。

而持續(xù)集成服務(wù)器(也稱為構(gòu)建服務(wù)器,又稱CI服務(wù)器)是一種軟件工具,它包含所有持續(xù)集成操作,并為我們構(gòu)建項(xiàng)目提供可靠和穩(wěn)定的環(huán)境。

工欲善其事,必先利其器。持續(xù)集成的重要性毋庸置疑,但是理解如何創(chuàng)建安全、高效、可伸縮的持續(xù)集成服務(wù)器將使得持續(xù)集成更加順暢。

CI服務(wù)器 - 安裝方式

CI服務(wù)器的安裝方式有四種:

  • 單機(jī)
    單機(jī)的CI服務(wù)器即安裝在一臺(tái)單個(gè)主機(jī)上,通常用于小型項(xiàng)目。

  • 托管
    托管的CI服務(wù)器由托管平臺(tái)提供,一般是根據(jù)訂閱計(jì)價(jià)。這一般被那些不想維護(hù)CI服務(wù)器的企業(yè)所采納。

  • 私有云
    一些大型企業(yè)或者想要完全掌控及安全使用他們自己的基礎(chǔ)設(shè)施的組織,通常會(huì)選擇私有云的部署方式。

  • 半托管半私有云
    這種方式是對(duì)托管部署和私有云部署的折中方案。這種部署方式通常將流水線管理,日志管理,用戶管理部分進(jìn)行托管,而將流水線運(yùn)行時(shí)環(huán)境放在私有云中。這種方式即保證了基礎(chǔ)設(shè)施安全,同時(shí)也降低了維護(hù)CI服務(wù)器的成本。

我所在的團(tuán)隊(duì)最初使用私有云的方式搭建CI服務(wù)器,但出于可維護(hù)性、成本和安全性等方面的折中考慮轉(zhuǎn)向了半托管半私有云的安裝方式。本文將主要討論在私有云和半托管半私有云安裝方式下CI服務(wù)器的部署策略。

CI服務(wù)器 - 主從架構(gòu)

主從架構(gòu)也叫主仆架構(gòu)或者M(jìn)aster-Slave架構(gòu),主從式架構(gòu)意圖提供一個(gè)可伸縮的架構(gòu),其核心是基于分而治之的思想,將一個(gè)原始任務(wù)分解為若干個(gè)子任務(wù),并由專門的工作者來(lái)執(zhí)行這些任務(wù),原始任務(wù)的結(jié)通過整合各個(gè)子任務(wù)的處理結(jié)果形成。

主從架構(gòu)看似與CI服務(wù)器毫無(wú)關(guān)系,實(shí)則聯(lián)系緊密。因?yàn)楹芏郈I服務(wù)器使用了主從架構(gòu)或者服務(wù)器/代理架構(gòu)。通過主從架構(gòu)的Master可以進(jìn)行用戶管理、流水線管理、日志管理。Master作為任務(wù)調(diào)度者,給多個(gè)主從架構(gòu)的Slave分配任務(wù),Slave會(huì)將流水線任務(wù)運(yùn)行的信息和結(jié)果發(fā)給Master。主從架構(gòu)提供了一個(gè)可伸縮的架構(gòu),所以可以動(dòng)態(tài)的添加或者刪除Slave以支持團(tuán)隊(duì)動(dòng)態(tài)變化的持續(xù)集成任務(wù)。

CI服務(wù)器 - 部署策略

通常,一個(gè)開發(fā)團(tuán)隊(duì)會(huì)有三個(gè)應(yīng)用部署環(huán)境:開發(fā)環(huán)境(Dev),類生產(chǎn)環(huán)境(Staging)和生產(chǎn)環(huán)境(Production)。當(dāng)一次修改通過持續(xù)集成后,就會(huì)被部署到開發(fā)環(huán)境,然后部署到類生產(chǎn)環(huán)境,然后部署到生產(chǎn)環(huán)境。

為此,需要CI服務(wù)器具有操作相應(yīng)部署環(huán)境的權(quán)限。如圖2,開發(fā)環(huán)境中部署了CI服務(wù)器,其中每個(gè)CI服務(wù)器都具有開發(fā)、類生產(chǎn)和生產(chǎn)環(huán)境的權(quán)限。

圖2

這種方式粗暴簡(jiǎn)單,看似藥到病除實(shí)質(zhì)上卻會(huì)引發(fā)很嚴(yán)重的安全問題。通常項(xiàng)目中對(duì)開發(fā)、類生產(chǎn)和生產(chǎn)環(huán)境權(quán)限的管控類似于金字塔,越往上權(quán)限管控越嚴(yán)格。但如果開發(fā)環(huán)境的CI服務(wù)器也具有類生產(chǎn)和生產(chǎn)環(huán)境的權(quán)限,那么這座本來(lái)堅(jiān)固的金字塔將有可能瞬間崩塌。

為了解決開發(fā)環(huán)境CI服務(wù)器具有多環(huán)境操作權(quán)限的問題,如圖3所示,可以在不同的環(huán)境獨(dú)立部署一套CI服務(wù)器,這樣部署某個(gè)環(huán)境時(shí),就可以使用相應(yīng)環(huán)境的CI服務(wù)器即可。

但隨之而來(lái)的問題是,不同的環(huán)境獨(dú)立部署一套CI服務(wù)器,會(huì)使得每個(gè)環(huán)境的CI服務(wù)器之間沒有任何關(guān)系。它們的流水線管理,日志管理,用戶管理都是獨(dú)立的。這意味著原本一個(gè)流水線完成的事情會(huì)分散的對(duì)個(gè)多個(gè)持續(xù)集成系統(tǒng)中,用戶需要在多個(gè)系統(tǒng)中來(lái)回切換。這不僅降低了使用體驗(yàn),并且增加了復(fù)雜性和維護(hù)成本。

那么有沒有什么辦法,既保證只部署一套CI服務(wù)器,同時(shí)又能保證CI服務(wù)器不能跨環(huán)境操作?如圖4所示,雖然所有的CI服務(wù)器依然部署在開發(fā)環(huán)境中,但每個(gè)CI服務(wù)器代理已經(jīng)被打上了開發(fā)環(huán)境、類生產(chǎn)和生產(chǎn)環(huán)境的標(biāo)簽,并且只具有操作相應(yīng)環(huán)境的權(quán)限。

這種部署策略看似解決了安全問題,但實(shí)際上有點(diǎn)掩耳盜鈴,因?yàn)橹灰_發(fā)環(huán)境上的用戶具有足夠的權(quán)限,他就有可能可以修改CI服務(wù)器代理的權(quán)限,從而達(dá)到操縱其他環(huán)境的目的。

既然如此,那么可不可以將CI服務(wù)器代理部署到相應(yīng)的環(huán)境中?如圖5所示,不同環(huán)境將維護(hù)相應(yīng)的CI服務(wù)器代理,通過這種部署方式,既保證只部署一套CI服務(wù)器,同時(shí)又能保證CI服務(wù)器代理不能跨環(huán)境操作。

 

 


客服