91av免费观看_日韩视频在线免费看_日本xxxx色视频在线观看免费_伊人222综合网图片_国产二区三区在线_91麻豆麻豆

中國專業(yè)IT外包服務(wù)

用心服務(wù)每一天
IT之道-艾銻知道

您當(dāng)前位置: 主頁 > 資訊動態(tài) > 行業(yè)資訊 >

客戶數(shù)據(jù)中心segment如何利用自動化的基礎(chǔ)設(shè)施來武裝工程師


2015-12-11 09:09 作者:admin 瀏覽量:

  發(fā)展企業(yè)是艱難的,發(fā)展一個支撐企業(yè)前行的工程團隊可以說是更加困難的。但是沒有一套穩(wěn)定的基礎(chǔ)設(shè)施,做這兩件事基本是不可能的。特別是對于高速發(fā)展的企業(yè),必須授權(quán)每一個工程師在編碼、測試和交付代碼方面具有高度的自主權(quán)。

  segment是一家客戶數(shù)據(jù)中心,致力于幫助數(shù)千家公司收集、處理數(shù)據(jù),本文主要講了segment在自動化基礎(chǔ)設(shè)施方面的實踐,主要包括同步開發(fā)環(huán)境、映射開發(fā)環(huán)境和生產(chǎn)環(huán)境、本地開發(fā)和部署到生產(chǎn)環(huán)境。

  過去的一年中,我們增加了達60個新的系統(tǒng)集成環(huán)境(總數(shù)超過160個),為合作伙伴建立了一個平臺,用以編寫他們自己的集成,發(fā)布了Redshift(紅移)集成,同時發(fā)表了幾個重大的產(chǎn)品公告。那段時間,圍繞多環(huán)境管理、部署代碼和通常的開發(fā)工作流程,我們經(jīng)歷了許多成長的煩惱。之后,我們的工程師是最幸福、最具生產(chǎn)力的,因為他們的時間都花在發(fā)布商品,打造工具和擴展服務(wù)上。開發(fā)流程和它所支持的基礎(chǔ)設(shè)施簡單易用、擴展靈活是至關(guān)重要的。

  這就是為什么我們自動化了自己的基礎(chǔ)設(shè)施的眾多方面。下面我將分享關(guān)于我們當(dāng)下的一些更加詳細的設(shè)置,主要包括這幾個領(lǐng)域:

  同步開發(fā)環(huán)境

  映射開發(fā)環(huán)境和生產(chǎn)環(huán)境

  本地開發(fā)

  部署到生產(chǎn)環(huán)境

  一起來深入的探討一下吧!

  同步開發(fā)環(huán)境

  由于代碼的復(fù)雜性的增長和工程團隊的擴大,在所有的工程師中保持開發(fā)環(huán)境的一致會變得更加困難。

  在我們現(xiàn)有解決方案出現(xiàn)之前,我們的工程師所面臨的一個大問題是同步開發(fā)環(huán)境。我們有一個Github庫,里面有一組shell腳本,所有新來的工程師執(zhí)行這些腳本,將必要的工具和身份驗證令牌裝到他們本地的機器上,這些腳本也會建立Vagrant和一個虛擬機。

  但是這個虛擬機是在每臺電腦上進行本地構(gòu)建,如果你修改了虛擬機的狀態(tài),那么為了使得讓它恢復(fù)到與其他工程師的虛擬機同樣的狀態(tài),你必須從頭構(gòu)建一切。而當(dāng)有工程師更新了虛擬機,你必須在Slack上告訴每個人,讓他們從Github VM庫中拉取代碼并重新構(gòu)建。這是一個痛苦的過程,因為 Vagrant很慢。

  對于一個竭盡全力快速前行的發(fā)展中團隊來說,上面的方法并不是一個好的解決方案。

  每次運行時,我們會通過查詢Docker Hub API來確保虛擬機是最新的。這個過程會更新工程師每天所需的包、工具等。這將耗費5秒鐘,為了確保一切運行正常,這也是必要的。

  此外,由于我們的工程師使用Mac電腦,我們從boot2dockerVirtualBox虛擬機切換到了托管于boot2docker實例的Vagrant,以便我們可以充分利用NFS的優(yōu)勢來共享主機和客戶機的volumn。在本地部署的時候,使用NFS,性能得到大大提升。最后一點,NFS允許工程師在虛擬機外部所做的改變可以即時地在虛擬機內(nèi)部反映出來。

  通過這個解決方案,我們大大減少了需要在宿主機上安裝依賴的數(shù)目。現(xiàn)在唯一需要的是Docker、Docker Compose、Go和GOPATH配置。

  映射開發(fā)環(huán)境和生產(chǎn)環(huán)境

  理想的情況是在開發(fā)環(huán)境和生產(chǎn)環(huán)境中運行相同的代碼,然而這樣分離,開發(fā)環(huán)境中的代碼可能永遠不會對生產(chǎn)環(huán)境中的代碼產(chǎn)生影響。

  之前我們將AWS狀態(tài)(由Terraform生成)存儲在Terraform的文件中,但它并不是一個完美的系統(tǒng)。例如,如果兩個人異步操作并應(yīng)用了不同的改變,狀態(tài)將會改變,最后推送代碼的人將很難搞定合并沖突。

  我們盡可能以最簡單的方式實現(xiàn)了staging和production環(huán)境的映射:

  從一個文件夾復(fù)制文件到另一個文件夾。Terraform使我們在修訂基礎(chǔ)設(shè)施、部署新服務(wù)和做出改進方面節(jié)省了大把時間。

  在應(yīng)用之前,我們通過編寫定制的構(gòu)建過程以及確保恰當(dāng)?shù)陌踩蛩匾芽紤]在內(nèi)來集成Terraform和CircleC。

  目前,我們在Github上有一個名為基礎(chǔ)設(shè)施的單一庫,其中包含了Terraform的腳本集合,用以為每一個容器配置環(huán)境變量和設(shè)置容器。

  當(dāng)我們想要改變基礎(chǔ)設(shè)施中的某些東西時,將必要的修改寫進Terraform腳本,并在新的pull請求之前運行它們以便基礎(chǔ)設(shè)施團隊中的其他成員來review它。一旦pull請求合并到主分支,CircleCI就會啟動部署進程:狀態(tài)變?yōu)閜ulled,本地被修改,并再次存入到S3。

  本地部署

  種子庫

  本地開發(fā)的時候,使用虛擬數(shù)據(jù)填充本地數(shù)據(jù)庫是很重要的,這樣會讓我們的應(yīng)用看起來更真實。所以,種子庫是配置開發(fā)環(huán)境的共同組成部分。

  我們依賴CircleCI、Docker和volumn容器來提供獲取虛擬數(shù)據(jù)的便捷途徑。volume容器是靜態(tài)數(shù)據(jù)的便攜鏡像。我們決定使用volume容器,因為數(shù)據(jù)模型和邏輯越來越松耦合而且容易維護。這樣做也是以防萬一,在我們的基礎(chǔ)設(shè)施的其他地方可以用到這些數(shù)據(jù)(比如測試等,誰知道呢)。

  當(dāng)我們在開發(fā)過程中啟動app服務(wù)器時,就會自動加載種子數(shù)據(jù)到我們的本地開發(fā)環(huán)境中。例如,當(dāng)app(我們的主應(yīng)用)容器在開發(fā)環(huán)境中啟動,app的docker-compose.yml腳本就會從Docker Hub中拉取最新的種子鏡像,并在虛擬機中掛載原生數(shù)據(jù)。

  Docker Hub中的種子鏡像產(chǎn)生自Github倉庫中的種子,作為我們導(dǎo)入到數(shù)據(jù)庫中的原生對象,它就是一組JSON文件。為了更新種子數(shù)據(jù),我們將 CircleCI配置到倉庫上,以便任何到主分支的推送都會構(gòu)建(從Docker Hun中賺錢我們的mongodb容器和redis容器)并向Docker Hub中推送新的種子鏡像,這樣我們就能在app中使用這個容器了。

  生成微服務(wù)

  由于Segment數(shù)據(jù)密集型的特性,我們的app已經(jīng)依賴幾個微服務(wù)(db,redis,nsq等)。為了使我們的工程師可以開發(fā)app,我們需要一個簡單的方法在本地構(gòu)建這些服務(wù)。

  Docker再一次使得這種工作流變的非常容易。

  類似于我們使用種子volume容器掛載數(shù)據(jù)到本地虛擬機那樣,我們以同樣方式來使用微服務(wù)。我們使用doker compose文件從Docker Hub抓取鏡像來進行本地構(gòu)建、設(shè)置地址并最終將復(fù)雜性降低到一條終端命令就可以讓一切啟動并運行。

  部署到生產(chǎn)環(huán)境

  你編寫代碼,但從不將代碼部署都生產(chǎn)環(huán)境,這種情況真的發(fā)生過嗎?

  部署代碼到生產(chǎn)環(huán)境是開發(fā)工作流程中的一個組成部分。在Segment,圍繞部署代碼到生產(chǎn)環(huán)境,我們優(yōu)先考慮難易程度和靈活性,因為這使得工程師可以快速的行動而富有成效。我們還創(chuàng)造了足夠多的工具來為處理錯誤,回滾和監(jiān)視構(gòu)建的狀態(tài)保駕護航。

  我們使用Docker、ECS、CircleCI和Terraform來盡可能地自動化持續(xù)部署。

  當(dāng)我們初次嘗試使用Docker時,我們很喜歡其在一個可復(fù)用和隔離的環(huán)境中運行代碼的能力。我們想要復(fù)用Docker的這些原則和經(jīng)驗,從而在不斷擴大的工程團隊中保持開發(fā)環(huán)境的一致。

  我們寫了一堆工具為新來的工程師配置虛擬機,從基礎(chǔ)鏡像狀態(tài)升級或是重置。當(dāng)我們的工程師初次配置虛擬機的時候,需要Github憑證和AWS令牌,然后從Docker Hub中拉取最新的鏡像并構(gòu)建。


相關(guān)文章

IT外包服務(wù)
二維碼 關(guān)閉
主站蜘蛛池模板: 国产一级毛片久久 | 欧美又大粗又黄又爽无码 | 麻豆蜜桃国产精品无码视频 | 亚洲国产精华液网站w | 色情无码www视频无码区小黄鸭 | 色一情一乱一乱一区99av | 青青爽无码视频在线观看 | 欧美日韩成人一区二区三区 | 中文字幕AV无码不卡免费 | 久久精品人人做人人妻人人玩 | 无码精品A∨在线观看十八禁 | 18禁勿入免费网站入口不卡 | 日本又色又爽又黄的视频免 | www.久久久久久久 | 又色又爽的无遮挡免费网址 | 日韩人妻无码精品专区综合网 | 久久精品国产字幕高潮 | 免费国产无遮挡又黄又爽 | 给我免费播放片高清在线观看中国 | 欧美成人片一区二区三区 | 日本免码va在线看免费最新 | 亚洲国产精品久久精品成人网站 | 99久久精品国产免费 | 国产一卡三卡四卡无卡精品 | 久久久久久久性潮 | 亚洲AV成人无码网站天堂网久久 | 色中色av| 久久精品蜜桃 | 大又大粗又爽又黄少妇毛片 | 欧美丰满大胆少妇xxxooo | 欧美日韩在线中文 | 中文字幕二三区 | 成人无码免费一区二区三区 | 久久午夜无码鲁丝片午夜精品 | 九九久久久久久 | 亚洲欧美专区 | 国产精品草逼 | 欧美亚洲综合一区 | 中文视频一区 视频二区 视频三区 | 欧美日韩在线亚洲综合国产人 | 亚洲av 无码片一区二区三区 |