面向微服務(wù)架構(gòu)的 DevOps
許曉斌是 AliExpress 高級(jí)技術(shù)專家,目前在 AliExpress 從事微服務(wù)實(shí)施、研發(fā)效率提升等相關(guān)工作 AliExpress 在業(yè)務(wù)擴(kuò)張和團(tuán)隊(duì)壯大之后,仍然能保持研發(fā)團(tuán)隊(duì)高效快速響應(yīng)用戶需求,而這背后的技術(shù)力量,就是許曉彬老師所講解的 AliExpress 微服務(wù)架構(gòu)及核心基礎(chǔ)設(shè)施,DevOps 文化及工具鏈,以及 SRE(Site Reliability Engieering)方法。
介紹一下背景,AliExpress 是阿?里巴巴旗下的 2C 跨境電商網(wǎng)站,其后臺(tái)語言100%是用 Java 代碼編寫的;最早的代碼來自 Alibaba B2B,已有10年以上的歷史了;數(shù)百位工程師推崇 DevOps;且已有數(shù)百可獨(dú)?發(fā)布的應(yīng)用,這個(gè)數(shù)字還在不斷增?。
微服務(wù)的優(yōu)勢(shì)是:1.每個(gè)服務(wù)足夠簡單,降低學(xué)習(xí)維護(hù)成本;2.獨(dú)?立測(cè)試和部署;3. 獨(dú)?立擴(kuò)容、性能優(yōu)化更簡單;4. 使?用新框架新技術(shù)變得更簡單;5. 更容易適配團(tuán)隊(duì)組織架構(gòu)。首先,許曉斌說,做微服務(wù)就一定要確保通信協(xié)議是標(biāo)準(zhǔn)的,AliExpress 是多數(shù)據(jù)中心的,其服務(wù)不僅分布在中國各地,在美國、俄羅斯等地區(qū)都有部署。
微服務(wù)開發(fā)發(fā)布的關(guān)鍵點(diǎn)在于,一定要走發(fā)布系統(tǒng)上線,這么做的目的是標(biāo)準(zhǔn)化流程化,還對(duì)提升穩(wěn)定性非常有好處。在微服務(wù)的前提下,再來談?wù)?DevOps,寫代碼的工程師是對(duì)自己的代碼負(fù)責(zé)任,每個(gè)工程師都是微服務(wù)應(yīng)用的owner,這就是 DevOps 的核心理念。
- 發(fā)布環(huán)節(jié)需要注意事項(xiàng)包括:預(yù)發(fā)布(Staging)環(huán)境驗(yàn)證、藍(lán)綠發(fā)布、分批發(fā)布、基于用戶 Beta 發(fā)布、自動(dòng)回滾。
- 監(jiān)控和報(bào)警這一環(huán)節(jié)需要統(tǒng)一的監(jiān)控系統(tǒng)、系統(tǒng)監(jiān)控、應(yīng)用監(jiān)控和業(yè)務(wù)監(jiān)控。
- 標(biāo)準(zhǔn)化要求則需要在部署結(jié)構(gòu)、命名規(guī)范、日志規(guī)范、代碼結(jié)構(gòu)、交互協(xié)議等方面嚴(yán)格要求。
- SRE 團(tuán)隊(duì)在 DevOps 領(lǐng)域的意義也是很關(guān)鍵的,每個(gè)工程師對(duì)自己的應(yīng)用負(fù)責(zé),包括對(duì)應(yīng)用的功能、性能、可用性等方面時(shí)刻關(guān)注;同時(shí),SRE 團(tuán)隊(duì)對(duì)網(wǎng)站整體可用性負(fù)責(zé),具備應(yīng)急故障處理能力,深入掌握容災(zāi)演習(xí),容災(zāi)切換等技術(shù);熟悉穩(wěn)定性治理技術(shù)。
最后,許曉斌引用了 AWS 對(duì) DevOps 的定義:DevOps 集文化理念、實(shí)踐和工具于一身,可以提高組織高速交付應(yīng)用程序和服務(wù)的能力,與使用傳統(tǒng)軟件開發(fā)和基礎(chǔ)設(shè)施管理流程相比,能夠幫助組織更快地發(fā)展和改進(jìn)產(chǎn)品。這種速度使組織能夠更好地服務(wù)其客戶,并在市場(chǎng)上更高效地參與競爭。
持續(xù)集成與持續(xù)交付實(shí)踐之路
魯小川是阿里巴巴B2B事業(yè)群高級(jí)專家,主要負(fù)責(zé)阿里巴巴云效平臺(tái)解決方案服務(wù)輸出。目前互聯(lián)網(wǎng)電商、金融等公司業(yè)務(wù)蓬勃發(fā)展,技術(shù)團(tuán)隊(duì)規(guī)模和應(yīng)用規(guī)模也在快速擴(kuò)大、測(cè)試環(huán)境日益復(fù)雜,但是測(cè)試力量依然薄弱、應(yīng)用驗(yàn)證成本不斷提升。在這種情況下,傳統(tǒng)企業(yè)的項(xiàng)目集成及交付軟件已經(jīng)不能滿足需求。隨即,這些公司硬件及中間件基礎(chǔ)設(shè)施陸續(xù)搬到云上,企業(yè)對(duì)基于云端提升效率的持續(xù)集成持續(xù)交付的平臺(tái)需求也日益迫切。魯小川基于這樣的背景,結(jié)合案例分析,講解了如何幫助云端企業(yè)實(shí)現(xiàn)持續(xù)集成持續(xù)交付。
持續(xù)交付并不是指軟件每一個(gè)改動(dòng)都要盡快的部署到產(chǎn)品環(huán)境中,而是指任何的修改都被證明可以在任何時(shí)候?qū)嵤┎渴?。持續(xù)交付(Continuous Delivery)是一系列的開發(fā)實(shí)踐方法,用來確保讓代碼能夠快速、安全的部署到產(chǎn)品環(huán)境中,它通過將每一次改動(dòng)都提交到一個(gè)模擬產(chǎn)品環(huán)境中,使用嚴(yán)格的自動(dòng)化測(cè)試,確保業(yè)務(wù)應(yīng)用和服務(wù)能符合預(yù)期。因?yàn)槭褂猛耆淖詣?dòng)化過程來把每個(gè)變更自動(dòng)的提交到測(cè)試環(huán)境中,所以當(dāng)業(yè)務(wù)開發(fā)完成時(shí),你有信心只需要按一次按鈕就能將應(yīng)用安全的部署到產(chǎn)品環(huán)境中。
大型系統(tǒng)持續(xù)集成持續(xù)交付難點(diǎn)