數(shù)據(jù)庫:架構(gòu)師眼中的MySQL開發(fā)模式
51CTO 發(fā)表于:12年11月13日 10:00 [轉(zhuǎn)載] 51CTO
五年時(shí)光匆匆而過,時(shí)至今日我們使用的是被稱為“里程碑”(Milestone)的發(fā)布模式,并已經(jīng)開始以此為基礎(chǔ)努力打造第二個(gè)GA版本。
新舊兩套開發(fā)模式間的不同之處
現(xiàn)在我們來聊聊新舊兩種開發(fā)模式之間的幾項(xiàng)主要差異。
我認(rèn)為目前我們所使用的開發(fā)模式,其最重要的特性就是整個(gè)開發(fā)流程以2到4個(gè)月為周期始終處于隨時(shí)可發(fā)布狀態(tài),并且能夠穩(wěn)定地按照每6個(gè)月推出新 GA版本的進(jìn)度進(jìn)行運(yùn)作。對于可發(fā)布狀態(tài),我們的定義為:產(chǎn)品質(zhì)量嚴(yán)格符合候選發(fā)布版的相關(guān)標(biāo)準(zhǔn)。在過去的開發(fā)模式中,我們的標(biāo)準(zhǔn)相對比較寬松,所謂可發(fā)布狀態(tài)是指當(dāng)前版本到達(dá)候選發(fā)布要求——但由于在測試階段仍然可能有新功能不斷被添加進(jìn)來,因此整個(gè)發(fā)布流程周期常常長達(dá)兩年,而不是現(xiàn)在的2到4個(gè)月。
新模式給MySQL新代碼帶來的影響
那么這種新模式會給我們的MySQL新代碼開發(fā)工作帶來哪些影響呢?在我看來,這意味著新代碼必須以小規(guī)模模塊的形式添加到產(chǎn)品中來,換句話說新代碼中不能混雜過多舊代碼,因?yàn)檫@可能會帶來新的未知沖突及不穩(wěn)定因素?傊,如果需要向MySQL Server中某個(gè)復(fù)雜程度較高的區(qū)域添加新功能,我們會首先對該區(qū)域進(jìn)行重新設(shè)計(jì),然后才著手實(shí)施功能添加工作。如此一來,我們就在某種程度上保持了開發(fā)流程的穩(wěn)定性始終擁有最高優(yōu)先級。而在過去,我們向MySQL Server中添加新功能時(shí)往往會造成系統(tǒng)穩(wěn)定性優(yōu)先級別的下降,這對于一款開發(fā)模式而言當(dāng)然不是什么好事。
有趣的是,隨著穩(wěn)定性在開發(fā)流程中的重要性得到進(jìn)一步增強(qiáng),我們反而獲得了放手處理新功能的廣闊空間!不過有時(shí)候我們未必能按照自己的預(yù)期快速開發(fā)出特定的新功能。如果一項(xiàng)新功能會對MySQL Server中復(fù)雜性較高的某些代碼造成干擾,那么為了系統(tǒng)穩(wěn)定性的考量,我們會事先進(jìn)行一系列準(zhǔn)備工作及測試流程,這是此類新功能出臺的必要前提。但是對于大部分與MySQL Server復(fù)雜區(qū)域不相關(guān)的邊緣新功能來說,整個(gè)添加過程則更加順暢同時(shí)輕松愉快。
新模式下的主要功能開發(fā)流程
接下來要談的是如何在這套模式中處理主要功能的添加工作,其中最需要注意的因素在于如何保證新代碼擁有良好的排布結(jié)構(gòu)。也就是說在添加新功能時(shí),我們不能簡單地從編寫代碼著手,而應(yīng)該首先思考現(xiàn)有代碼結(jié)構(gòu)能否與正在開始的新功能緊密契合。舉例來說,我們在MySQL 5.6版本中添加了眾多新功能,而LOCK_open正是其中之一。如果按照以往傳統(tǒng)的MySQL Server開發(fā)模式,我們會直接將新功能添加進(jìn)來,然后檢測它會與哪些現(xiàn)有MySQL Server功能組件發(fā)生沖突,并確保所有已經(jīng)確定的新問題在新的GA版本發(fā)布之前得到解決。但現(xiàn)在我們的思路更先進(jìn)、處理方式也完全不同。首先我們會建立一系列重新設(shè)計(jì)項(xiàng)目,將LOCK_open主功能完全隔離起來,這樣就保護(hù)了運(yùn)行中的元數(shù)據(jù)免遭破壞、同時(shí)也為連接中的元數(shù)據(jù)提供了緩沖措施。在以上步驟的執(zhí)行過程中,我們可以繼續(xù)進(jìn)行手頭的其它MySQL 5.6開發(fā)工作,而且原本非常重要的LOCK_open功能更新能夠以小補(bǔ)丁的形式添加進(jìn)主系統(tǒng)當(dāng)中,同時(shí)也讓功能升級變得更加安全。
新開發(fā)模式的靈感來源
我們之所以選擇這種全新的開發(fā)模式,其靈感顯然源自以Linux內(nèi)核為代表的其它幾個(gè)典型開源項(xiàng)目。它們的成功為我們的新思路提供了指導(dǎo)與借鑒。
從舊模式向新模式的轉(zhuǎn)換
盡管新模式的優(yōu)勢如此明顯,但從舊模式轉(zhuǎn)換為新模式的道路卻并不平坦。在決定發(fā)起變革之后,我們制定了新的開發(fā)流程,并在其中添加了多項(xiàng)意義重大的新功能。然而流程的出臺并不意味著實(shí)際工作的順利進(jìn)行,概念與可發(fā)布狀態(tài)之間仍然相隔十萬八千里,因此我們做出了“一個(gè)艱難的決定”——以MySQL 5.1開發(fā)流程為基礎(chǔ)將一切過去推倒重來。這套新流程是我們首次在開發(fā)過程中使用“里程碑”模式的嘗試,但原先的模式中同樣包含很多意義重大的理想方案,因此我們需要一步步將遺留資源與新規(guī)劃加以整合。整個(gè)過程持續(xù)了數(shù)年之久,由于新的開發(fā)流程對于新功能的運(yùn)作效果及穩(wěn)定性要求極高,因此進(jìn)度不快也在情理之中。不過現(xiàn)在我們終于大功告成,所有有價(jià)值的功能都已經(jīng)被遷移到新模式當(dāng)中,其它的則要么直接棄用、要么利用其它方式加以替代。
對于未來MySQL開發(fā)的影響
那么新模式的引入到底會在當(dāng)下與未來給MySQL開發(fā)工作帶來哪些影響呢?首先要強(qiáng)調(diào)的是,我們在MySQL 5.6中添加了200項(xiàng)新功能,這表明新的開發(fā)模式確實(shí)能為我們的用戶及消費(fèi)者帶來大量激動人心的革命性升級與改進(jìn)。希望這套開發(fā)模式能夠繼續(xù)指引開發(fā)工作順利開展,我們也會繼續(xù)努力為MySQL技術(shù)社區(qū)帶來更多更具吸引力的功能。作為一位架構(gòu)師,我非常自豪地關(guān)注著MySQL技術(shù)團(tuán)隊(duì)的一舉一動,也為他們針對MySQL架構(gòu)做出的改善而深感驕傲。相信隨著新模式的逐漸完善與新功能的持續(xù)加入,MySQL會為全世界使用者帶來更加光彩奪目的特性。
公司簡介 | 媒體優(yōu)勢 | 廣告服務(wù) | 客戶寄語 | DOIT歷程 | 誠聘英才 | 聯(lián)系我們 | 會員注冊 | 訂閱中心
Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技術(shù)有限公司 版權(quán)所有.