App動態(tài)化體系梳理

移動互聯(lián)網(wǎng)時代的應(yīng)用幾乎面臨著和桌面應(yīng)用一樣的問題法焰,不跨平臺秧荆、版本收斂慢、無法及時修復(fù)線上問題埃仪、需求迭代緩慢等乙濒。但移動應(yīng)用還不能完全轉(zhuǎn)成Web應(yīng)用,當(dāng)前的解決辦法就是建設(shè)App動態(tài)化體系卵蛉,本文就梳理了一下App動態(tài)化體系涉及的諸多系統(tǒng)颁股。

背景

我們知道電腦應(yīng)用經(jīng)歷了桌面應(yīng)用到web應(yīng)用的發(fā)展歷程,摩爾定律的不斷得到驗(yàn)證傻丝,讓web的劣勢逐漸被彌補(bǔ)甘有,優(yōu)勢不斷增強(qiáng),大部分應(yīng)用也從桌面應(yīng)用轉(zhuǎn)為了web應(yīng)用葡缰。

桌面應(yīng)用有哪些缺點(diǎn)呢亏掀?

  • 不跨平臺
  • 版本收斂慢
  • 缺陷修復(fù)不及時
  • 需求迭代不敏捷

桌面應(yīng)用又有哪些優(yōu)點(diǎn)呢?

  • 體驗(yàn)好
  • 能力強(qiáng)

隨著電腦性能提升泛释,瀏覽器發(fā)展和網(wǎng)速提升滤愕,web應(yīng)用已經(jīng)能滿足絕大部分人的需求了。web應(yīng)用在保證體驗(yàn)的同時完美的彌補(bǔ)了桌面應(yīng)用的缺點(diǎn)怜校,因而得以在電腦端大放異彩间影。經(jīng)歷了1.0,2.0的發(fā)展茄茁,web已經(jīng)走入尋常百姓家魂贬。

其中最重要的是蔓搞,web的三大核心能力,html,css,javascript都是有完善的標(biāo)準(zhǔn)随橘,只要實(shí)現(xiàn)了標(biāo)準(zhǔn)的平臺都可以完美運(yùn)行web應(yīng)用喂分。

現(xiàn)在互聯(lián)網(wǎng)已經(jīng)走進(jìn)了移動互聯(lián)網(wǎng)時代,可以發(fā)現(xiàn)机蔗,移動互聯(lián)網(wǎng)時代的應(yīng)用幾乎面臨著和桌面應(yīng)用一樣的問題蒲祈,但移動應(yīng)用還不能完全轉(zhuǎn)成Web應(yīng)用,解決的辦法就是構(gòu)建App動態(tài)化體系萝嘁。當(dāng)然這些體系不一定只用于動態(tài)化梆掸,但他們一定是動態(tài)化不可缺少的。

App動態(tài)化體系

現(xiàn)在絕大部分移動App都強(qiáng)依賴平臺特性牙言,大浪淘沙之后最主要的平臺包括iOS和Android酸钦。可是這兩個平臺的差異性如此之大咱枉,甚至UED都需要針對兩個平臺做分別的設(shè)計(jì)卑硫。

移動App還沒有發(fā)展到完全使用web應(yīng)用的階段,因此針對移動應(yīng)用的劣勢蚕断,需要建立一整套動態(tài)化體系來彌補(bǔ)這些缺陷欢伏。完整的動態(tài)化體系是一套多層次,全方位的動態(tài)化解決方案亿乳,搭建一個完整的動態(tài)化體系硝拧,也絕非一日之功。本文嘗試梳理App中可能需要用到的動態(tài)化技術(shù)葛假。

資源管理系統(tǒng)

動態(tài)化即意味著需要動態(tài)下發(fā)資源障陶,各式各樣的資源。將資源下發(fā)做成統(tǒng)一的系統(tǒng)聊训,即可以方便管理抱究,也可以節(jié)省資源。App動態(tài)化體系中的很多其他系統(tǒng)都需要依賴資源管理系統(tǒng)魔眨。

關(guān)鍵指標(biāo)

  • 更新率媳维。影響更新率的因素比較多,比如資源大小遏暴、資源下發(fā)方式侄刽、更新策略等等。一般來說資源管理都需要有版本控制朋凉、增量下發(fā)能力等等州丹。
  • 安全性。資源下發(fā)后一般都需要驗(yàn)簽通過之后才能使用,不能讓資源動態(tài)下發(fā)成為黑客攻擊App的手段墓毒。
  • 可擴(kuò)展性吓揪。資源的種類多種多樣,通用資源管理在設(shè)計(jì)的時候需要盡可能的考慮資源的多樣性所计,新資源接入的成本越低越好柠辞。

配置系統(tǒng)

App依賴很多配置信息來定制化功能,比如常見的開關(guān)主胧、動態(tài)文案都是配置系統(tǒng)的一部分叭首。App可以通過預(yù)埋需求實(shí)現(xiàn),結(jié)合配置系統(tǒng)來實(shí)現(xiàn)App的動態(tài)變化踪栋。

關(guān)鍵指標(biāo)

  • 性能焙格。幾個版本迭代之后,配置系統(tǒng)中的配置項(xiàng)就會變得非常多夷都,這個時候配置就可能會影響App的啟動眷唉,內(nèi)存占用等等,如何高效的更新配置囤官、盡可能降低配置對App性能的影響是配置系統(tǒng)需要解決的冬阳。
  • 及時性唇敞。如何保障配置的及時準(zhǔn)確達(dá)到是衡量配置系統(tǒng)的重要指標(biāo)跟磨。
  • 可擴(kuò)展性。配置除了簡單的布爾值外韩脑,還可能有復(fù)雜的json串劫谅,如何更好的管理配置,提升配置的可擴(kuò)展性也是非常重要的嚷掠。

補(bǔ)丁系統(tǒng)

應(yīng)用的穩(wěn)定性對于用戶是非常重要的捏检,尤其是金融,服務(wù)類應(yīng)用不皆,關(guān)鍵時刻不能掉鏈子贯城。能動態(tài)修復(fù)線上問題,是動態(tài)化體系最基本也是最重要的能力霹娄。針對移動App缺陷修復(fù)不及時的缺點(diǎn)能犯,一般App都會搭建補(bǔ)丁系統(tǒng)來彌補(bǔ)。

業(yè)界開源的補(bǔ)丁方案很多犬耻,在iOS平臺有wax踩晶,jspatch等,在Android平臺有hotfix枕磁,tinker等渡蜻,一般還需要搭建自己的補(bǔ)丁發(fā)布平臺來實(shí)現(xiàn)補(bǔ)丁的下發(fā)。

關(guān)鍵指標(biāo)

  • 能力。能修復(fù)的線上問題越多越好茸苇,覆蓋的系統(tǒng)版本越多越好排苍,代碼、資源都能修復(fù)才是王道学密。
  • 修復(fù)率淘衙。影響修復(fù)率的因素很多,除了補(bǔ)丁大小腻暮、補(bǔ)丁生效時機(jī)以及補(bǔ)丁下發(fā)策略等等彤守。
  • 及時性。補(bǔ)丁當(dāng)然是越快觸達(dá)用戶越好西壮,這里主要是補(bǔ)丁發(fā)布系統(tǒng)最好能具備定向拉和推的能力遗增,以備不時之需。
  • 性能款青。補(bǔ)丁系統(tǒng)一般都會在一定程度上影響性能做修,如何降低對原有App的性能影響是補(bǔ)丁系統(tǒng)的重要考量。
  • 易用性抡草。線上問題沒有不緊急的饰及,自然是能越快修復(fù)越好。補(bǔ)丁系統(tǒng)的易用性主要體現(xiàn)在兩個方面康震,一個是補(bǔ)丁代碼的編寫燎含,出于系統(tǒng)的限制,iOS的補(bǔ)丁一般需要動態(tài)語言來編寫腿短,比如lua屏箍、js,相比于Android的Java編寫橘忱,自然要麻煩很多赴魁,另外一個就是補(bǔ)丁發(fā)布平臺是不是設(shè)計(jì)合理,如何以最快的速度打出正確的patch包并發(fā)布是補(bǔ)丁發(fā)布平臺需要慎重考慮的钝诚。

灰度系統(tǒng)

動態(tài)化體系缺不了灰度能力 颖御,灰度能力是動態(tài)化體系的基礎(chǔ)設(shè)施,不可或缺凝颇∨斯埃灰度系統(tǒng)的幾大重要能力包括:1.選擇灰度范圍的能力 2.擴(kuò)大灰度范圍的能力 3.回滾的能力∨÷裕灰度范圍簡單的說就是一個白名單芦岂,如何決定白名單是需要根據(jù)業(yè)務(wù)調(diào)整的,這意味著灰度系統(tǒng)需要有足夠的能力各種各樣的白名單辑鲤】唬灰度系統(tǒng)一般都不是單獨(dú)存在的,可以將灰度系統(tǒng)拆成兩部分,灰度能力和白名單系統(tǒng)弛随∑昂恚灰度能力需要嵌到各個系統(tǒng)中去,讓各個系統(tǒng)根據(jù)自己的需要實(shí)現(xiàn)舀透,而白名單系統(tǒng)一般是可以單獨(dú)搭建的栓票,讓各個系統(tǒng)共用一個白名單系統(tǒng)有助于各個動態(tài)系統(tǒng)互相配合使用。

關(guān)鍵指標(biāo)

  • 能力愕够。白名單走贪、擴(kuò)大灰度、回滾能力都最基本的要求惑芭,其他特殊能力依照不同的業(yè)務(wù)會有不一樣坠狡。

AB系統(tǒng)

AB系統(tǒng)又稱A/B Test系統(tǒng),是敏捷開發(fā)的必備能力遂跟。使用線上數(shù)據(jù)對若干需求進(jìn)行灰度測試逃沿,進(jìn)而得出需求是否能滿足用戶需求結(jié)論,這對于需求迭代來說的確是最科學(xué)的方式幻锁,能有效防止拍腦袋導(dǎo)致的用戶投訴凯亮。AB系統(tǒng)相比于灰度系統(tǒng)最大的不同在于,AB系統(tǒng)關(guān)注的指標(biāo)和灰度系統(tǒng)不一樣哄尔〖傧灰度系統(tǒng)考慮更多的是系統(tǒng)的穩(wěn)定性,新版本會不會導(dǎo)致線上問題岭接,而AB系統(tǒng)一般要關(guān)注的都是業(yè)務(wù)指標(biāo)富拗,比如A需求和B需求相比較,哪個引導(dǎo)用戶購買的效果更好此類的鸣戴。因此AB系統(tǒng)的關(guān)鍵指標(biāo)和灰度系統(tǒng)有所不同媒峡。

關(guān)鍵指標(biāo)

  • 公平性。因?yàn)槭嵌鄠€需求之間相互比較葵擎,如何創(chuàng)造公平公正的環(huán)境是AB系統(tǒng)首先要考慮的。這主要涉及的是如何方便快速的選擇合理的灰度范圍半哟。
  • 易用性酬滤。每次AB測試之前都要確定指標(biāo),而每個AB測試的指標(biāo)一般都不會是一樣的寓涨,如何能夠方便的創(chuàng)建指標(biāo)對比也是衡量一個AB系統(tǒng)是否優(yōu)秀的重要標(biāo)準(zhǔn)盯串。真正優(yōu)秀的AB系統(tǒng)應(yīng)該能做到全程都不需要開發(fā)的介入,PD能通過AB系統(tǒng)獨(dú)自完成AB測試的創(chuàng)建戒良、上線和數(shù)據(jù)對比体捏。這可不是一個容易的事情。

運(yùn)營系統(tǒng)

運(yùn)營對于應(yīng)用來說是非常重要的,如何快速花式的支持運(yùn)營需求對于提升應(yīng)用的日活很關(guān)鍵几缭。構(gòu)建這樣一套平臺也是不容易的河泳,常用的運(yùn)營方式有banner,彈窗年栓,信息流等拆挥,完善的運(yùn)營平臺需要能夠統(tǒng)計(jì)曝光,點(diǎn)擊某抓,乃至轉(zhuǎn)化等纸兔,為運(yùn)營活動提供數(shù)據(jù)支撐。運(yùn)營系統(tǒng)可繁可簡否副,簡單如首頁彈個廣告汉矿,也有復(fù)雜如淘寶等重度依賴運(yùn)營的App會有一整套非常復(fù)雜的運(yùn)營系統(tǒng)。

關(guān)鍵指標(biāo)

  • 能力备禀。一個合格的運(yùn)營系統(tǒng)首先要具備能滿足App運(yùn)營需求的能力洲拇,比如是否能在特定的頁面,或者特定的場景出現(xiàn)banner或者彈窗痹届。這個能力重要的是未雨綢繆呻待,在運(yùn)營需要之前就具備這樣的能力,因此設(shè)計(jì)運(yùn)營系統(tǒng)的時候要盡量通用队腐。
  • 及時性蚕捉。一般運(yùn)營活動對時間都有嚴(yán)格的要求,什么時候開始柴淘,什么時候結(jié)束都需要非常精確迫淹。不準(zhǔn)時的運(yùn)營活動小則招致用戶投訴,大則引起公關(guān)危機(jī)就不好了为严。
  • 數(shù)據(jù)分析能力敛熬。運(yùn)營是有拉新、提升日活等目的第股,如果沒有數(shù)據(jù)分析能力应民,就無從衡量運(yùn)營活動的效果了。

Hybrid架構(gòu)

Web可以說是動態(tài)化的終極方案夕吻,Hybrid架構(gòu)就是App基于系統(tǒng)自帶的WebView增加了調(diào)用Native诲锹、離線包等能力。Hybrid的技術(shù)要點(diǎn)很多涉馅,并非一言兩語能夠覆蓋完全的归园。業(yè)界對Hybrid的研究已經(jīng)比較深入,有很多的技術(shù)文章可以參考稚矿。

從現(xiàn)在的App技術(shù)架構(gòu)來看庸诱,Hybrid幾乎是每一個App都不可或缺的捻浦,web的動態(tài)性對于App的動態(tài)化來說太重要了,而且相比于Native開發(fā)來說桥爽,web開發(fā)的效率要高不少朱灿。為App搭建一整套完善的Hybrid架構(gòu)絕對是物有所值的。

關(guān)鍵指標(biāo)

  • 性能聚谁。h5相比于native最大的缺陷就是體驗(yàn)了母剥,因此這方面是各大公司投入最大的部分,為了提升h5的性能都是不遺余力的形导。秒開率环疼、幀率、內(nèi)存占用朵耕、白屏?xí)r間等等都是非常重要的性能指標(biāo)炫隶。
  • 能力。h5因?yàn)槭盏教摂M機(jī)的限制阎曹,能調(diào)用的native能力基本沒有伪阶,業(yè)界通過給h5提供jsapi來擴(kuò)展h5的能力,jsapi越多处嫌,h5就越牛逼栅贴。

RN/Weex架構(gòu)

現(xiàn)在ReactNative、Weex等因?yàn)槟茉诒A魒eb優(yōu)秀能力的同時熏迹,還能彌補(bǔ)web在體驗(yàn)上的一些缺陷檐薯,在很多App中都得到了應(yīng)用。雖然React Native/Weex想要替代Web還是不太可能的注暗,但是在某些特定的場合充分發(fā)揮React Native/Weex的能力坛缕,能在保證體驗(yàn)的情況下,極大的提升App的動態(tài)性捆昏。舉個例子來說赚楚,在App中列表無疑是最常用的組件,非常多的需求都會展現(xiàn)在列表中骗卜。純Native的列表性能好宠页,但是不靈活,每次需求迭代都需要發(fā)版寇仓,客戶端和服務(wù)端都?xì)v史包袱沉重勇皇。純Web的列表是夠靈活,但是Web長列表性能實(shí)在是不敢恭維焚刺,尤其是在Android低端機(jī),渣的不要不要的门烂。這種場景下乳愉,ReactNative和Weex這類技術(shù)就能發(fā)揮它的長處兄淫,它能基于Native的列表搭建動態(tài)列表,既保證了動態(tài)性蔓姚,又具備靈活性捕虽。例子中舉的這個例子一般被叫做卡片系統(tǒng)。

RN/Weex架構(gòu)和Hybrid架構(gòu)的關(guān)鍵指標(biāo)基本是一致的坡脐,一般來說也都還配有資源管理系統(tǒng)泄私。也就是說Hybrid架構(gòu)和RN/Weex架構(gòu)可以共用很多基礎(chǔ)設(shè)施。

關(guān)鍵指標(biāo)

  • 性能备闲。既然對標(biāo)的是web晌端,當(dāng)然秒開率、幀率恬砂、內(nèi)存占用咧纠、白屏?xí)r間等等都是非常重要的性能指標(biāo),必須要能全面秒殺web泻骤,要不然有什么存在的意義呢漆羔?
  • 能力。RN狱掂、Weex等因?yàn)榧夹g(shù)的限制演痒,很多時候沒有web方便趋惨,而且兼容性也常常是個頭疼的問題鸟顺,而且也常常需要根據(jù)需求擴(kuò)展native的能力,這都是衡量架構(gòu)是否優(yōu)秀的因素诊沪。

總結(jié)

沒有一個App的動態(tài)化體系是一樣的昏鹃,都需要根據(jù)業(yè)務(wù)情況調(diào)整洞渤。上述整理的系統(tǒng)每一個想要做完善都是要下功夫的讯柔。當(dāng)然動態(tài)化體系遠(yuǎn)遠(yuǎn)不止這些,拋磚引玉护昧,歡迎大家各抒己見魂迄。

參考文獻(xiàn)

微信一鍵關(guān)注
微信一鍵關(guān)注
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捣炬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子绽榛,更是在濱河造成了極大的恐慌湿酸,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒜田,死亡現(xiàn)場離奇詭異稿械,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)冲粤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門美莫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人梯捕,你說我怎么就攤上這事厢呵。” “怎么了傀顾?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵襟铭,是天一觀的道長。 經(jīng)常有香客問我短曾,道長寒砖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任嫉拐,我火速辦了婚禮哩都,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘婉徘。我一直安慰自己漠嵌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布盖呼。 她就那樣靜靜地躺著儒鹿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪几晤。 梳的紋絲不亂的頭發(fā)上约炎,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機(jī)與錄音蟹瘾,去河邊找鬼章钾。 笑死墙贱,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贱傀。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼伊脓,長吁一口氣:“原來是場噩夢啊……” “哼府寒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起报腔,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤株搔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后纯蛾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纤房,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年翻诉,在試婚紗的時候發(fā)現(xiàn)自己被綠了炮姨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡碰煌,死狀恐怖舒岸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情芦圾,我是刑警寧澤蛾派,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站个少,受9級特大地震影響洪乍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜夜焦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一壳澳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧糊探,春花似錦钾埂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瞪慧,卻和暖如春髓考,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背弃酌。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工氨菇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留儡炼,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓查蓉,卻偏偏與公主長得像乌询,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子豌研,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,841評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理妹田,服務(wù)發(fā)現(xiàn),斷路器鹃共,智...
    卡卡羅2017閱讀 134,637評論 18 139
  • 2016.11.11更: 之前參加大會后視頻沒有馬上放出來鬼佣,所以今天給大家分享一下。本來以為參加會議之后視頻很快就...
    ikook閱讀 3,885評論 7 35
  • 作者:秦路 來源:人人都是產(chǎn)品經(jīng)理 數(shù)據(jù)化運(yùn)營是一個近年來興起的概念,它在運(yùn)營的基礎(chǔ)上阴孟,提出了以數(shù)據(jù)驅(qū)動決策的口號...
    Sting閱讀 3,464評論 0 34
  • “江南好晌纫,風(fēng)景舊曾諳,日出江花紅勝火温眉,春來江水綠如藍(lán)缸匪。能不億江南?” 江南类溢,一個讓人向往的地方凌蔬,也許每個人心...
    擼串串閱讀 391評論 0 3