老司機告訴你,如何同時運營更新 150 款 App? | 寶寶巴士 CTO 蔡瀘煒

演講 | 蔡瀘煒(寶寶巴士CTO)程序員

活動 | 又拍雲 Tech Minds NO.08 福州場django

整理 | 西北 編程

又拍雲主辦的 Tech Minds NO.08 福州場,寶寶巴士 CTO 蔡瀘煒做爲嘉賓帶來《寶寶巴士的工做流程和自動化》的分享,揭開寶寶巴士同時運營 150 款 App 的祕密。微信

蔡瀘煒,寶寶巴士 CTO,資深系統架構師。主導並開發大型對日系統,2D 網遊引擎,自動化模擬/測試引擎等,最先敏捷開發的推動者,崇尚開源、自動化及極簡主義。擁有豐富的團隊管理經驗與紮實的研發技能的開發者。架構

alt

寶寶巴士CTO蔡瀘煒框架

國內早教行業的先驅

寶寶巴士是一家提供智能早教產品的互聯網公司,目前已成功出品 150 款 App 、近 600 款兒歌和 50 集的動畫片。運維

App Store 流量排行榜

App Store 流量排行榜 iphone

2016 年 8 月 App Store 的全球公司流量排行榜,寶寶巴士僅次於騰訊、百度和阿里巴巴。編輯器

通過三年穩健發展,寶寶巴士每款產品支持 17 種語言,已覆蓋全球超過 50 個國家,在東南亞、俄羅斯、美國、日本、阿拉伯地區都受到諸多小朋友們的喜好。分佈式

alt

寶寶海外市場發展狀況

海外市場印尼發展最好,阿拉伯和阿聯酋佔有率也很高。

週週有新品,月月有升級

寶寶巴士擁有一系列用戶體量巨大的產品,須要咱們開發一套通用的標準化生產流程解決方案,支撐起龐大數量的產品維護和創新。

alt

寶寶巴士研發SOP

寶寶巴士的工做流程包括選題、開發、用戶驗證、測試和發佈上線。其中最重要的一點是:保證選題質量,後面總體的開發、測試和快速迭代才能高度適配。

如何選題?

首先由策劃選定項目,產品體驗組與策劃 PK,選題是否符合問卷調查的結果,是否知足孩子和家長的實際需求等,通過嚴格的篩選,保證選題質量。

經歷兩輪敏捷開發升級後,咱們如今的開發過程是策劃先行,接着美工設計,最後程序員開發。這種方式能夠保證程序員介入時,可以立刻運做,而且和美工高效配合。

開發完成以後,簽出版本,進行自動化測試,包括簡單的 Monkeying 測試和閃退性測試,保證程序不出現大的異常,再將測試出來的產品,讓美工、技術一塊兒和幼兒園的孩子體驗改進。咱們對測試比較嚴格,從生產開發到測試,會限定三輪測試,一旦超過三輪,這款產品必須上線或者打回。

alt

寶寶巴士產品結構圖

從支撐產品的技術結構來講,「框架支撐」是 App 研發環節較爲重要的一環,框架會開發通用的SDK 套件如自媒體廣告,遊戲特效,同時聯動工具組、自動化組進行配合,提供自動化測試、打包服務,造成一套標準的流水線。

寶寶巴士已開發了 200 多款產品,可是因爲蘋果不容許同時在市場上存在大量產品,咱們如今市場上有 150 款產品,在高峯的時候包含 iOS、安卓、TV、桌面端( Window 和 Mac ),還有第三方遊戲機等 40 多個渠道。

早期咱們須要將產品分發到不一樣的渠道上進行下載,獲取來源,判斷哪一個渠道效果最好。當時總共的渠道數有 40 個,語言數有 11 個,意味着寶寶巴士要出大概 60000 多個安裝包。 這時就須要合併部分長尾渠道,重點抓量大的前 15 名。同時語種進行優化,最小化差別包,只剩下阿拉伯包(文字左右字顛倒)和通用包的狀況。後面,經過公式的進一步優化,優化的安裝包在 150x20x(2~3) 個。

咱們是如何完成周周有新品和月月有更這兩件事情的呢?必需要有一個穩定,擴展性好,定製化強,能夠支撐服務各類需求、多引擎,App 和渠道的工做流程。

咱們會分兩條開發線,一條新功能嘗試線,一條全線升級線。首先,新功能嘗試線會嘗試某個新功能,並進行快速上線驗證,並經過 A/BTest 觀察發佈出去的產品效果,若是穩定運行而且效果正向,那麼咱們再合併到真正的全線升級當中去。其次,全線升級線徹底進行每個月穩定開發、上線,保證市場版單的活躍。因此其實是的兩條路徑並行,達到快速配合。同時技術團隊要求每一年技術實力、工做效率提高 20% 以上,快到讓別人根本沒有辦法追上咱們。

合理的人員分配

alt

寶寶巴士團隊架構

寶寶巴士的技術團隊分紅遊戲團隊、應用團隊和服務團隊三個。

遊戲團隊分紅 2D 和 3D 團隊,下面有四個組,第一個是新品組,只負責持續開發新品,後面的操做由其餘的組完成,如:產品加國際化語種,產品再更新等。第二個是框架組,負責聯動其餘部門,進行接下來的測試、發佈等。第三個是插件部門,負責下一版本內容集成,相似於新功能組或者效果組。第四個綜合組負責這三件之外的事情,好比說打包和更新。

應用團隊即家長線團隊,包括應用產品組和微信組。應用產品組主要服務於家長羣體,製做寶寶巴士大全產品,微信組負責輔助帳號的創建和家長用戶的溝通。

服務團隊分爲服務端團隊和工具團隊,工具組包含了四大塊業務,第一是基礎工具的研發,經過流程定製生成工具;第二插件組負責如 IDE、 3Dmax、Eclipse、Sublime 等插件;第三數據組負責數據統計,並結合第三方數據統計平臺進行整合分析,推導出有效結論。第四自動化組負責自動化開發、自動化測試、自動化發佈、自動化運維、自動化模擬。

歷史演進

寶寶巴士製做流程經歷了三代,第一代是在 2013 年以前,處於市場紅利期,咱們推出的產品,在移動早教行業是比較高端的,市場會主動幫你推薦給用戶,帶來流量。但2013年之前iOS和 Android 是獨立開發的,且 Android 使用微雲引擎開發成本高昂,因此團隊基本上只有開發和策劃。當時就已實現週週有新品,咱們須要考慮加速整個產品線流程。

咱們的作法是:策劃八款產品,iOS 和 Android 兩個部門同時接單各接四款產品,同時開發。三個月以後,兩組將開發出來的產品交叉,iOS 去翻譯 Android,Android 去翻譯 iOS,以保證最快的開發速度。

咱們應該算是比較早使用 Lua 的,大概 2011 年下半年,咱們已經開始用 cocos2d- iphone 作遊戲,嘗試整合 Lua 並製做,只不過當時的遊戲是網遊。第二階段,從 2014 年開始,咱們 iOS和 Android 作平臺合併,同時邀請專家給全團隊進行敏捷開發培訓,並定製專屬於寶寶巴士的敏捷開發流程。

第三個階段,咱們正在進行多維孵化式開發。咱們並無所謂的真正的組,一個程序員他既可能屬於技術部,也可能屬於某個孵化項目組的成員。一個階段可能我做爲程序員要和美工、策劃一塊兒完成工做,下一個階段位置就變了,我立刻要和另外的程序、美工完成工做,依造團隊的需求來調整工做。在進行快速孵化的同時,敏捷開發也進行了全面升級。寶寶巴士會開發供策劃使用的 UI 定製編輯器,程序員能夠同步和美工寫代碼。當美工畫出線框圖以後,程序員假想,這是熊貓或者其餘動物,再寫入邏輯,後期美術程序進行迭代和整合,造成真正呈現給你們的產品。

人員培養

框架組構建出整個框架體系以及一整套流程以後,寶寶巴士 2D 的開發人員只要懂得一門開發語言,如 Java,通過三天就能夠上手進行遊戲開發。複雜如 Unity3D,大概通過十五天培訓也能夠進行開發。這其中咱們會經過一對1、結對編程、視頻教程、自動化開發工具的使用進行人員培養。

這裏須要強調最小化編程思想,程序員僅僅須要去作實際業務開發,不須要關注其餘事情。作安卓開發如啓動、出錯定位和打包緩慢,調試麻煩,不少時候老的機器運行效率極低。寶寶巴士有本身高度定製的模擬器,能保證快速的開發,不用對修改的產品代碼進行再編譯,再打包,刷新 1 秒內馬上功能就出來了。

部門流程

alt

U3D的總體流程

以 U3D 開發爲例,在完成策劃內容後,咱們會邀請體驗組和一位具備決策權的產品經理啓動判斷策劃內容是否優質。

若是策劃經過,會進入到美工的簡單設計和 Demo 的製做。Demo 製做完會去驗證,若是驗證經過,則進行詳細的功能開發。待開發到大致完成,進行內測,以後會同步加入音頻、上線文案、美宣等。2D 的業務流程也相似。

全線升級是最複雜的,在開發完成後,會產生五六千甚至七八千個包。全線升級團隊會使用自動化工具進行出包,而且實現隔夜出包(自動化測試在白天完成,晚上可以把經過的安裝包所有打出來,次日交由測試組進行人爲的功能性測試)。綜合組即全線升級的後期負責團隊,將打包工做交給機器完成,配合市場進行產品對接。

alt

全線升級工做流程

家長線只有一款重頭產品-寶寶巴士大全,因此家長線這塊咱們會直接採用 AB 組同時進行,增長工做效率。同時每週爲產品迭代週期的快速迭代,持續集成。

alt

家長線開發流程

高效率的自動化生產工具

因爲遊戲的第三方框架研發速度不夠快,且早期它不支持物理引擎、骨骼動畫、高低清圖智能處理、圖像壓縮、音視頻壓縮等功能,且不一樣設備的支持也不完備。咱們就獨立的對基於QuickCocos2d-X 2.1.4 的版本進行封裝,編寫寶寶巴士須要的邏輯內容,改寫底層業務,造成了寶寶巴士獨有的一套 1.0 的遊戲引擎。

要實如今屏幕上渲染一個居於屏幕正中央可以對點擊產生反應的精靈,咱們採用極簡標籤化設計及鏈式設計方式以後,可以將採用傳統編程方式 cocos2d-x 須要的 15~20 行代碼精簡成 1 行代碼。

2.0 的架構的升級,從前者如此簡易升級到後者,iOS 也是相似的。

alt

構架升級前

alt

構架升級後

自動化工具

自動化打包是自動化發佈的一個環節,寶寶巴士如今每月要發佈幾千個安裝包,咱們使用App-admin 的產品後臺,自動同步產品後臺中的產品信息進打包配置環境,根據需求選擇打包引擎、渠道,配置插件。

在打包時,它根據遊戲框架版本會有既定的模板,進行模板的快速複製,修改,完成打包。而且打包機制已經實現了分佈式接單,能夠自由配置物理機器,如:1 臺 Mac Pro,1 臺 Mac Mini,再加上幾個 Windows。
自動打包特色:
1.打包人員一鍵點擊打包;
2.打包完成還能夠一鍵上傳到共享方便與測試的溝通
3.統一打包模板和易於找到出包位置,調試方便

分佈式接單特色:
1.有機器就能夠介入接單打包
2.打包機器自由競爭,任何一臺電腦出了問題不會影響其餘電腦繼續打包
3.接單電腦拔插式,減緩負荷
4.方便調試,不影響正常出包

使用 django xadmin 製做的界面,在打包的時候出現的錯誤均可以捕獲,而且顯示在對應的文件和運行界面當中。

alt

打包日誌頁面

產品的基礎配置須要怎樣的插件能夠經過下圖所示界面進行選擇,好比百度渠道要有百度廣告的插件。若是這款遊戲支持相冊、攝象頭,也會在這邊進行配置。配置完成以後,就能夠出包。如今安卓的打包速度平均值是 25 秒,極限出包雖然速度快但它存在不穩定因素,因此咱們取消了極限出包。iOS 的打包速度咱們會控制在 60 秒左右。

alt

打包配置

關於Tech Minds

Tech Minds 是又拍雲主辦的高端技術領導人私享會系列活動,每月在全國不一樣城市巡迴舉辦。爲了保障私享會的分享效果,參會人數控制在 15 人左右,邀請國內優秀互聯網企業的 CTO、技術 VP、運維總監及有技術背景的 CEO 等技術領導者齊聚一堂,彼此交流與分享,共同打造一場圍繞技術話題的交流與學習的全乾貨的社交聚會。

相關文章
相關標籤/搜索