#database #數(shù)據(jù)庫 #back-end #后臺 #后端 #development_strategy #開發(fā)策略
本文整理翻譯自『App Development Magazine』對Swish App CTO Jeff Whelpley的采訪:
原文地址:App development strategies from Swish's CTO Jeff Whelpley
一冰沙、托管服務(wù) 還是 自構(gòu)框架:
對于一個(gè)App開發(fā)團(tuán)隊(duì)來講,初期最好盡可能多的選擇托管服務(wù)(Managed Services),因?yàn)檫€沒有成功之前奥喻,項(xiàng)目可能隨時(shí)會(huì)進(jìn)行不下去,而被扔進(jìn)垃圾桶非迹。早期需要考慮的是產(chǎn)品特性(Feature)和用戶體驗(yàn)(User experience)环鲤,等到逐漸成熟的時(shí)候再考慮升級托管服務(wù)(Premium)或重構(gòu)內(nèi)部架構(gòu)(Internal infrastructure)。
主要是以下兩方面的權(quán)衡:一是雇傭協(xié)調(diào)托管服務(wù)的工程師的價(jià)格憎兽,二是重建內(nèi)部架構(gòu)時(shí)對整個(gè)項(xiàng)目生產(chǎn)力的影響冷离。
另外一點(diǎn)值得考量 [譯者按:需要Bare in mind] 的是轉(zhuǎn)換的代價(jià)(Switch cost)是否相對較低,比較簡單的檢驗(yàn)方法是纯命,是否有信心在一個(gè)月內(nèi)將現(xiàn)有的項(xiàng)目從托管服務(wù)轉(zhuǎn)換到自構(gòu)框架西剥。
當(dāng)然對于一個(gè)較大的團(tuán)隊(duì)來講,構(gòu)建自己的研發(fā)-運(yùn)維團(tuán)隊(duì)(DevOps team)非常有價(jià)值亿汞,但是對于一些需要快速實(shí)驗(yàn)的想法或項(xiàng)目瞭空,托管服務(wù)仍然是較好的選擇,正如上文所說疗我,項(xiàng)目可能隨時(shí)流產(chǎn)令之前的努力付之一炬咆畏。
使用開源技術(shù):
開源技術(shù)可以在使用較低預(yù)算的同時(shí)提升團(tuán)隊(duì)效率,Jeff提到他們的Swish App中較多依賴的開源項(xiàng)目:
Angular: 構(gòu)建現(xiàn)代化的Web App
Ionic: 快速搭建Mobile App
二吴裤、后端相關(guān):
Swish使用的后端技術(shù)(Back-end technologies)和數(shù)據(jù)庫引擎(Database engine):
MongoDB: Our system of record 作為記錄檔案的系統(tǒng)
初期使用MongoDB旧找,并決定盡可能的多使用JavaScript,MongoDB的接口對于JavaScript比較友好麦牺,隨后開始用以下兩種技術(shù)解決一些MongoDB不能很好解決的問題:(PS: Studio 3T - IDE* for MongoDB with GUI**)
ElasticSearch: For search queries 文字的搜索查詢
Firebase: For real-time data sync 實(shí)時(shí)數(shù)據(jù)同步
選擇數(shù)據(jù)庫的一些建議:
- 性能表現(xiàn)(Performance)
- 可靠性(Reliability)
- 良好的技術(shù)支持(A great support of staff)
如上文所言钮蛛,選擇數(shù)據(jù)庫服務(wù)需要考慮轉(zhuǎn)換的代價(jià),Whelpley的經(jīng)驗(yàn)是剖膳,試用一個(gè)數(shù)據(jù)庫即服務(wù)(Database-as-a-service)供應(yīng)商一個(gè)禮拜魏颓,然后轉(zhuǎn)換到另外一個(gè)服務(wù)供應(yīng)商,用這種方式來檢驗(yàn)數(shù)據(jù)庫是否擁有較低的轉(zhuǎn)換代價(jià)(Switch cost)吱晒。
三甸饱、在項(xiàng)目開發(fā)中學(xué)到的一些教訓(xùn)/經(jīng)驗(yàn):
1. 把程序分割成模塊,并始終令它們?nèi)菀妆惶鎿Q或舍棄
在開頭構(gòu)建架構(gòu)的時(shí)候枕荞,可能會(huì)過度思考柜候,模塊可能會(huì)隨著項(xiàng)目更新迭代而被認(rèn)為不合適搞动。因此在建立模塊的時(shí)候,始終把它想象為臨時(shí)的渣刷,并且在不久的將來隨時(shí)可能被替換或者取締鹦肿。但是要保證編碼的高標(biāo)準(zhǔn)(High quality standard),盡量減少內(nèi)部相關(guān)性(Internal dependency)辅柴,讓未來去耦(Decouple)的工作更加容易進(jìn)行箩溃。
2. 精益數(shù)據(jù)分析方法 Lean analytics methodology
Jeff的團(tuán)隊(duì)在開發(fā)過程中遵循精益數(shù)據(jù)分析方法,這種方法中一個(gè)最重要的原則是碌嘀,避免過度開發(fā)(Avoid building software as much as possible)涣旨。
每當(dāng)提出一項(xiàng)能夠提升產(chǎn)品的假設(shè)時(shí),先對這項(xiàng)假設(shè)進(jìn)行檢驗(yàn)(Hypothesis testing)股冗,然后才投入生產(chǎn)霹陡。
這樣一來,每次對代碼的改變止状,都是基于目標(biāo) [譯者按:這個(gè)目標(biāo)就是通過檢驗(yàn)的假設(shè)] 產(chǎn)生的烹棉,在改變過后對其進(jìn)行測量(Measure)和評估(Evaluate),在縮短迭代周期的同時(shí)怯疤,提高團(tuán)隊(duì)效率浆洗。
從實(shí)踐層面來講,Jeff的團(tuán)隊(duì)每天推出測試版本(Daily beta releases )集峦,供一部分用戶使用并獲取反饋伏社,來檢驗(yàn)這些測試的項(xiàng)目是否正確、以及是否為用戶真正所需塔淤。
3. 轉(zhuǎn)用自建架構(gòu)改善后臺數(shù)據(jù)處理的壓力 ***此段翻譯可能有爭議
Jeff提到Swish App的大多數(shù)數(shù)據(jù)處理壓力都集中在后臺摘昌,遵循上文(第一部分)提到的關(guān)于托管服務(wù)與自建架構(gòu)的分析邏輯,近期在著力從托管服務(wù)提供商轉(zhuǎn)換利用Firebase搭建自用的系統(tǒng)以改善后臺數(shù)據(jù)的運(yùn)算凯沪。
字母縮寫:
* IDE - Independent Development Environment 集成開發(fā)環(huán)境
** GUI - Graphic User Interface 圖形用戶界面