每個(gè)系統(tǒng)都會(huì)有他的生命周期,從生到死翠桦,經(jīng)歷少年臭笆、中年、老年三個(gè)階段秤掌。復(fù)雜度的管理貫穿系統(tǒng)的整個(gè)生命周期,就像進(jìn)化論的自然選擇一樣鹰霍,不停的優(yōu)化著系統(tǒng)闻鉴,不停的斷舍離,保持著系統(tǒng)的生命力茂洒。
系統(tǒng)初建的階段孟岛,主要是完成0到1的構(gòu)建,用于驗(yàn)證業(yè)務(wù)模式或者做最小的Demo產(chǎn)品督勺。這個(gè)階段優(yōu)先考慮的就是時(shí)間和成本渠羞,就是要快。因此智哀,這一階段的技術(shù)選型很重要次询,如果選擇不對(duì),就會(huì)引入不必要的復(fù)雜度瓷叫,降低研發(fā)效率屯吊。我覺(jué)得有以下兩個(gè)維度可供考慮。
第一個(gè)維度是團(tuán)隊(duì)成員對(duì)所選技術(shù)的熟悉度摹菠。項(xiàng)目初期其實(shí)能找到的人也是有限的盒卸,如果成員對(duì)某個(gè)技術(shù)非常熟悉,的確就縮短了學(xué)習(xí)的成本次氨,而且也能避免掉曾經(jīng)犯過(guò)的問(wèn)題蔽介。
第二個(gè)維度是各種技術(shù)方案的適合度和成本。我們得知道,沒(méi)有包治百病的技術(shù)方案虹蓄,所有的技術(shù)方案都有他適合的領(lǐng)域犀呼,而且每個(gè)方案成本也是不一的。下面分別說(shuō)幾個(gè)技術(shù)方案的選擇武花。
先說(shuō)一下開發(fā)語(yǔ)言的選擇吧圆凰,我無(wú)意爭(zhēng)論哪個(gè)語(yǔ)言更好,而且語(yǔ)言也是在不斷變化中体箕,只是說(shuō)明下當(dāng)下各種語(yǔ)言的適用場(chǎng)景专钉。其實(shí)各種語(yǔ)言都有他適合的地方,各家公司也都會(huì)用到不止一種語(yǔ)言累铅,來(lái)解決系統(tǒng)不同的問(wèn)題跃须。但是在系統(tǒng)初期,語(yǔ)言的選擇還是很重要的娃兽。對(duì)于安卓和IOS客戶端菇民,這個(gè)沒(méi)有選擇的余地了,選擇官方推薦的就可以投储。
后臺(tái)開發(fā)語(yǔ)言選擇面就比較廣了第练,C/C++/Java/Php/Python/.Net/nodeJs等等,眼花繚亂的玛荞,一般情況下娇掏,盡量選擇開源的語(yǔ)言平臺(tái),社區(qū)支持會(huì)好一些的勋眯,架構(gòu)相對(duì)比較成熟一些婴梧,各種疑難雜癥都可以獲得免費(fèi)的支持。我對(duì).Net并無(wú)惡意客蹋,事實(shí)上我也是從.Net開發(fā)做起的塞蹭,而且.net也已經(jīng)開源,但是時(shí)間太晚讶坯,的確業(yè)內(nèi)有不少公司番电,在業(yè)務(wù)壯大以后從.Net轉(zhuǎn)其他的語(yǔ)言。C/C++因?yàn)閷?duì)內(nèi)存的有更靈活的掌控辆琅,比較適合做高并發(fā)但邏輯簡(jiǎn)單的服務(wù)或者中間件钧舌,如果是業(yè)務(wù)邏輯復(fù)雜的系統(tǒng),初期不建議采用了涎跨;Java是目前非常廣泛使用的語(yǔ)言了洼冻,社區(qū)支持豐富,幾乎可以支撐全棧應(yīng)用隅很,同時(shí)面向?qū)ο蟮脑O(shè)計(jì)模式很適合拆解復(fù)雜業(yè)務(wù)撞牢,易于擴(kuò)展和維護(hù)率碾。但是框架選擇太多、太復(fù)雜屋彪,用好了真不容易所宰,入門有一定門檻;Php/Python/nodejs都是動(dòng)態(tài)語(yǔ)言畜挥,開發(fā)非常靈活簡(jiǎn)單仔粥,雖然也支持面向?qū)ο螅皇菑?qiáng)制蟹但,上手容易躯泰,很適合初期采用。但是一旦系統(tǒng)復(fù)雜度變高华糖,太靈活也會(huì)變成問(wèn)題麦向,就是大家開發(fā)太隨意,往往后期就要為這個(gè)隨意買單客叉;到底選擇哪種語(yǔ)言诵竭,我想見仁見智吧,沒(méi)有標(biāo)準(zhǔn)答案兼搏,工具沒(méi)有好壞卵慰,只有適合不適合。
系統(tǒng)運(yùn)維這塊佛呻,我覺(jué)得這幾年最大的變化就是云技術(shù)的興起呵燕,云的可用性已經(jīng)超過(guò)平均單個(gè)公司自己組建運(yùn)維團(tuán)隊(duì)所能做到的可用性,而且使得運(yùn)維變得足夠簡(jiǎn)單件相,初期甚至不需要運(yùn)維人員,業(yè)務(wù)規(guī)模壯大以后也可以只保留業(yè)務(wù)運(yùn)維人員氧苍,同時(shí)按需來(lái)付費(fèi)夜矗,這些都極大的縮減了運(yùn)維成本。
而且云技術(shù)已經(jīng)不單單是運(yùn)維這一方面了让虐,他通過(guò)更靈活的云端API紊撕,其實(shí)提供了各種服務(wù)能力,讓我們可以快速靈活的接入赡突,實(shí)現(xiàn)自己的業(yè)務(wù)需求对扶。比如音頻、視頻惭缰、直播浪南、文件存儲(chǔ)、數(shù)據(jù)存儲(chǔ)等等漱受,儼然是一個(gè)API的資源庫(kù)络凿。這其實(shí)從根本上改變了業(yè)務(wù)開發(fā)的模式。在業(yè)務(wù)初期,怎么借助云的力量絮记,接入現(xiàn)有的服務(wù)摔踱,快速發(fā)展業(yè)務(wù),是非常重要的怨愤,盡量不要重復(fù)造輪子派敷。
當(dāng)然,金幣總有兩面撰洗,云技術(shù)也在發(fā)展的過(guò)程中篮愉,數(shù)據(jù)安全就是一個(gè)需要關(guān)注的問(wèn)題,再就是一旦出現(xiàn)運(yùn)維事故了赵,云服務(wù)商的響應(yīng)速度也是一個(gè)考驗(yàn)潜支;另外,隨著業(yè)務(wù)的快速壯大柿汛,按需付費(fèi)的成本也會(huì)變得越來(lái)越高冗酿,直到超過(guò)自建機(jī)房的費(fèi)用;同時(shí)络断,業(yè)務(wù)所要求的可用性可能也越來(lái)越高裁替,第三方的響應(yīng)支撐是否及時(shí)也是一個(gè)問(wèn)題。這時(shí)候勢(shì)必要發(fā)展私有云貌笨,代價(jià)也是很大的弱判。當(dāng)然,系統(tǒng)建立初期锥惋,我覺(jué)得完全可以使用公有云昌腰。
總結(jié)一下,系統(tǒng)初期膀跌,技術(shù)選型非常重要遭商,一要看團(tuán)隊(duì)熟悉什么,二要看各種技術(shù)方案的優(yōu)缺點(diǎn)和成本捅伤,最后劫流,要善于借力云技術(shù),避免重復(fù)造輪子丛忆。