□陳嘉
近五年來,移動互聯(lián)網(wǎng)全面取代PC互聯(lián)網(wǎng),手機全面取代電腦,成為主流的媒體終端。城市電視臺的新媒體業(yè)務(wù),主陣地也從PC網(wǎng)站轉(zhuǎn)移到了手機客戶端。CUTV城市聯(lián)合網(wǎng)絡(luò)電視臺從2014年開始進入移動互聯(lián)網(wǎng),先后為16個聯(lián)盟電視臺合作開發(fā)建設(shè)客戶端,積累了不少經(jīng)驗。在這個過程中,互聯(lián)網(wǎng)技術(shù)的應(yīng)用,極大地提高了項目執(zhí)行的效率,降低技術(shù)成本,有效地推進業(yè)務(wù)的快速發(fā)展。
國內(nèi)電視臺為國企,技術(shù)系統(tǒng)的建設(shè)參照國企的規(guī)范流程,融合媒體客戶端一般要經(jīng)過需求收集、調(diào)研、規(guī)劃、立項、招標采購、實施、驗收、上線等幾個階段。整體建設(shè)周期長,往往從有需求到客戶端上線,時間跨度要超過一年。這當(dāng)中耗費的人力、物力,特別是時間成本比較高,而移動互聯(lián)網(wǎng)是分秒必爭的競爭型市場。
在長周期的客戶端建設(shè)項目中,往往會出現(xiàn)各種變化:從內(nèi)部來講,一開始規(guī)劃的業(yè)務(wù)需求,經(jīng)過一段時間之后,需求已隨著業(yè)務(wù)的深入不斷變更,與最初設(shè)想的模樣可能大不相同;從外部來講,移動互聯(lián)網(wǎng)業(yè)務(wù)風(fēng)向變化極快,規(guī)劃時還處于風(fēng)口浪尖上的業(yè)務(wù),半年一年后風(fēng)口一過,便成雞肋。
進入移動互聯(lián)網(wǎng)這個領(lǐng)域,電視臺與民營的、資本化運作的互聯(lián)網(wǎng)公司直接競爭,按照原有國企的步調(diào)難以適應(yīng),如若適當(dāng)引入互聯(lián)網(wǎng)技術(shù)及管理手段,則能有效提高競爭力。
近年來,互聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)技術(shù)大放異彩。選擇合適的技術(shù)支撐城市臺融合媒體客戶端,能有效地降低技術(shù)成本提高業(yè)務(wù)效率。
傳統(tǒng)廣電技術(shù)系統(tǒng)為了確保安全做好隔離,每臺服務(wù)器只安裝一個系統(tǒng),跑一兩個應(yīng)用。而在城市電視臺客戶端這類區(qū)域性業(yè)務(wù)上,服務(wù)器的負載往往不高,導(dǎo)致服務(wù)器的計算資源、內(nèi)存資源、硬盤資源、用電及空間等閑置浪費。而通過虛擬化技術(shù)可以在一臺計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統(tǒng),并且應(yīng)用程序都可以在相互獨立的空間內(nèi)運行而互不影響。CUTV三年前轉(zhuǎn)向虛擬化方向后,采購的都是高密度的服務(wù)器,一臺服務(wù)器可以虛擬出幾十臺邏輯服務(wù)器,大大減少了機柜空間、能耗等基礎(chǔ)資源消耗,并有效提高了資源利用率,再通過負載調(diào)度手段做好設(shè)備的物理冗余,在安全保障上也得到提升。設(shè)備的減少跟統(tǒng)一,讓運維的難度大大降低。
近三年,整個互聯(lián)網(wǎng)行業(yè)已轉(zhuǎn)向云服務(wù)承載。電視臺大多屬于國企,采購服務(wù)器作為硬件資產(chǎn)理所當(dāng)然,但隨之而來的問題就是采購周期長、資產(chǎn)成本重、擴容不靈活,這對于城市臺融合客戶端業(yè)務(wù)無疑是一大障礙。而大膽采用云服務(wù),能有效降低項目啟動成本,按需求、按業(yè)務(wù)使用情況付費,并能跟隨著業(yè)務(wù)的發(fā)展快速擴容。CUTV建設(shè)的私有云加公有云的廣電混合云平臺,將生產(chǎn)、發(fā)布管理等對安全性要求高的業(yè)務(wù)放在私有云上,將支撐互聯(lián)網(wǎng)用戶并發(fā)訪問的業(yè)務(wù)放在伸縮靈活的公有云上,兩相結(jié)合,達到很好的互補效果。
容器化可以稱為輕量級虛擬化技術(shù),與傳統(tǒng)的VM相比,它更輕量,啟動速度更快,單臺硬件上可以同時跑成百上千個容器,非常適合在業(yè)務(wù)高峰期通過啟用大量容器進行橫向擴展;容器也是可移植的,可以在各種主流Linux發(fā)行版或者OS X以及Windows上使用,可以稱為“構(gòu)建一次,在各平臺上運行”。容器技術(shù)重新定義了軟件開發(fā)、測試、交付和部署的流程,交付的東西不再是代碼、配置文件、數(shù)據(jù)庫定義等,而是整個應(yīng)用程序的運行環(huán)境。無論是測試、運維、開發(fā),都在同一個環(huán)境下,可以與其他服務(wù)集成,進行開發(fā)流程的自動化。CUTV采用容器化技術(shù),除了進一步提高資源利用率,另一大好處就是大大提高業(yè)務(wù)部署的效率:過去部署一個環(huán)境,從上架服務(wù)器、安裝系統(tǒng)、安裝驅(qū)動、逐一安裝LNMP環(huán)境大概要半天時間,通過容器化幾分鐘就可以完成一個LNMP環(huán)境的部署并提供給研發(fā)、測試使用,還可以批量自動化部署。
城市臺客戶端一般包括圖文資訊發(fā)布、視音頻流媒體播放、用戶數(shù)據(jù)管理、表單交互互動等較為獨立的后臺支撐系統(tǒng),如采購第三方軟件,這些軟件大多都是各種獨立系統(tǒng)的堆砌,隨著系統(tǒng)規(guī)模的擴大,復(fù)雜性逐漸變高,技術(shù)債務(wù)逐漸上升,部署速度逐漸變慢,會阻礙技術(shù)創(chuàng)新并且無法按需伸縮。如果研發(fā)時這些后臺系統(tǒng)采用微服務(wù)架構(gòu),就能有效地拆分應(yīng)用,實現(xiàn)敏捷開發(fā)和部署。因為每個微服務(wù)相當(dāng)于一個模塊項目,開發(fā)這個模塊就只需關(guān)心這個模塊的邏輯即可,代碼量和邏輯復(fù)雜度都會降低,從而易于開發(fā)和維護,局部修改也容易部署。在開發(fā)中發(fā)現(xiàn)了一個問題,如果是單體架構(gòu)的話,就需要重新發(fā)布并啟動整個項目,非常耗時間,但是微服務(wù)則不同,哪個模塊出現(xiàn)了bug,只需要單獨解決并重啟該模塊服務(wù)即可。同時技術(shù)棧不受限,可以有Java編寫的服務(wù),也可以有Python編寫的服務(wù),他們是靠Restful架構(gòu)風(fēng)格統(tǒng)一成一個系統(tǒng)的。所以微服務(wù)本身與具體技術(shù)實現(xiàn)無關(guān),擴展性強。微服務(wù)之間只要定義好明確的接口,采用輕量級通信,每個服務(wù)達到服務(wù)自治,就可以配合敏捷開發(fā),達到快速迭代的目的,大大提高后臺開發(fā)效率。
城市臺融合媒體客戶端的強互動、高并發(fā)、功能快速迭代等業(yè)務(wù)形態(tài),只有引入并用好互聯(lián)網(wǎng)技術(shù),才能高效支撐業(yè)務(wù)部門開展融合媒體的綜合運營工作,甚至能開發(fā)出創(chuàng)新型功能。有了以上的技術(shù)基礎(chǔ),CUTV在汕頭橄欖臺項目上,才能實現(xiàn)三年150萬用戶的增長,才能實現(xiàn)1秒15萬互動并發(fā)的承載,才能實現(xiàn)每月小迭代、每年大迭代的不斷更替,支撐汕頭橄欖臺超越傳統(tǒng)電視成為粵東第一媒體。
在開展融合媒體客戶端的項目開發(fā)過程中,掌握好互聯(lián)網(wǎng)化的技術(shù)管理手段、管理工具,能使開發(fā)業(yè)務(wù)事半功倍。
傳統(tǒng)計算機軟件開發(fā),普遍采用瀑布式開發(fā)管理辦法。瀑布模型式是最典型的預(yù)見性的方法,嚴格遵循預(yù)先計劃的需求、分析、設(shè)計、編碼、測試的步驟順序進行。CUTV在大型業(yè)務(wù)系統(tǒng)如城市電視臺統(tǒng)一融合媒資系統(tǒng)的開發(fā)上,采用瀑布式方法,該系統(tǒng)需求明確,功能模塊之間邏輯嚴密。但瀑布式方法在需求不明確并且在項目進行過程中可能變化的情況下基本是不可行的。所以對于處于不斷探索演進,并且要跟隨業(yè)務(wù)經(jīng)營隨時迭代的融合媒體客戶端項目,敏捷開發(fā)管理更加適用。
敏捷開發(fā)以業(yè)務(wù)的需求進化為核心,采用迭代、循序漸進的方法進行軟件開發(fā)。在敏捷開發(fā)中,軟件項目在構(gòu)建初期被切分成多個相互聯(lián)系但也可獨立運行的小項目并分別完成,在此過程中軟件一直處于可使用狀態(tài)。CUTV在壹深圳APP上采用敏捷開發(fā)模式,將項目開發(fā)分為兩個階段,第一個階段完成新聞發(fā)布、壹深圳訂閱號、廣播模塊、視頻模塊、記者幫模塊、個人中心等主要功能模塊的開發(fā),在三個月內(nèi)達到可運行狀態(tài),發(fā)布上線;第二個階段,在上線后,采用每月一個版本迭代的方式,增加廣播回聽、發(fā)現(xiàn)版塊、壹視頻、VR功能、智能推薦、搖一搖互動、視頻彈幕、新聞地圖、積分兌換等功能。期間根據(jù)用戶反饋和業(yè)務(wù)運營部門的需求,隨時調(diào)整功能規(guī)劃,快速響應(yīng),不斷變更及優(yōu)化APP功能。如采用傳統(tǒng)瀑布式開發(fā)模型,從規(guī)劃、開發(fā)到上線,至少半年時間。按互聯(lián)網(wǎng)的節(jié)奏,可能半年風(fēng)口已過,天翻地覆。而采用敏捷開發(fā),能在以周為單位的時間內(nèi)響應(yīng)變化,快速上線業(yè)務(wù),并根據(jù)上線后的運營情況持續(xù)迭代優(yōu)化,真正做到伴隨式開發(fā)。壹深圳改版上線后,業(yè)務(wù)部門在用戶需求不明確、不詳細但又需要不斷探索發(fā)展的情況下,以敏捷開發(fā)管理解決實際問題,近半年新增用戶近百萬。
在客戶端項目的開發(fā)過程中,經(jīng)常會遇到前端后臺多個團隊、多個模塊的協(xié)同開發(fā),并且往往團隊人數(shù)眾多,還常常不在同一地點辦公。如何提高協(xié)同開發(fā)的效率,降低團隊交互過程中的各種規(guī)范化、流程化及溝通障礙問題,是項目能否高效、高質(zhì)量推進的核心問題。針對這些問題,CUTV引入了互聯(lián)網(wǎng)化的管理工具,成效明顯。
比如在流程管理上,采用禪道之類的研發(fā)管理平臺,將產(chǎn)品管理、項目管理、質(zhì)量管理、文檔管理、組織管理等工作放到平臺上,每一個項目參與人員在平臺上發(fā)布、接收自己的工作任務(wù),并共享項目相關(guān)文檔,令標準統(tǒng)一、流程規(guī)范、工作透明、業(yè)務(wù)可追溯,使得整個研發(fā)工作可視化,便于管理與統(tǒng)計,甚至作為KPI考核、獎勵激勵等研發(fā)團隊管理的重要參考工具。
在代碼管理上,采用GitHub平臺,作為云端的代碼托管平臺。采用GitHub的好處,是可以跨終端、跨平臺,隨時隨地接入下載或更新代碼。GitHub發(fā)展至今由于注冊用戶眾多,其托管版本數(shù)量也非常多,是一個專門為程序員量身打造的代碼開源共享及私有軟件項目的托管平臺。它有許多非常貼心、實用的功能,能非常方便地進行代碼的合并及版本控制。CUTV考慮到安全性及軟件資產(chǎn)問題,一開始采用私有化部署的SVM平臺,但客戶端的源碼處于不斷的迭代更新過程中,三個月到半年,經(jīng)過幾個版本迭代,舊源碼的價值已不用太過重視。GitHub作為一個大型的平臺,相應(yīng)的安全保護措施也比較成熟,在客戶端代碼托管上,使用云端平臺利大于弊,也是互聯(lián)網(wǎng)移動化、輕量化、云化的必然趨勢。
在Bug管理上,由于需要業(yè)務(wù)部門、運營部門的同事參與,太過于專業(yè)化的平臺對非開發(fā)人員來說不夠友好,于是CUTV引入bugclose系統(tǒng),方便非開發(fā)人員參與到客戶端優(yōu)化的工作中來。通過這個更輕量化、更簡潔易用的平臺,測試人員及非技術(shù)人員可以隨時反饋bug,再由項目經(jīng)理指派給具體研發(fā)人員,通過微信就能可視化地全程跟蹤問題解決的進展。
產(chǎn)品質(zhì)量管控是客戶端研發(fā)的一個難題,難在兩個方面:一是兼容性問題,市面上手機型號眾多,系統(tǒng)版本眾多,特別是安卓手機,以及手機廠商的各種深度定制化系統(tǒng)眾多,如果買齊各種手機作為測試用機,投資巨大;二是嚴密性問題,測試工作嚴謹而繁瑣,重復(fù)且枯燥,人工測試百密難免一疏。CUTV在這一塊踩過不少坑,現(xiàn)采用兩種類型的工具,較為有效地解決了品控難題。
一是在完成開發(fā)交付測試的環(huán)節(jié),除了人工用例測試,還引入互聯(lián)網(wǎng)云化測試平臺,將安裝包傳到云平臺,通過云平臺上千臺真機進行測試,通過這個手段能有效解決崩潰、閃退等嚴重的兼容性問題,可多家公司同測,針對測試出來的問題有針對性地進行優(yōu)化。
二是采用APM工具,在APP里埋點,嵌入探測SDK,監(jiān)測客戶端的運行狀態(tài)。在APP上線后,通過APM系統(tǒng)實時監(jiān)控APP的運行狀態(tài)。目前CUTV采用的APM工具,能實時采集到所有用戶使用APP各個功能時的大數(shù)據(jù),能匯總導(dǎo)致崩潰的具體代碼,以及網(wǎng)絡(luò)延時、服務(wù)端響應(yīng)時間等重要的運行質(zhì)量數(shù)據(jù)。通過這些數(shù)據(jù)反饋,能及時發(fā)現(xiàn)問題,再通過前后端代碼、網(wǎng)絡(luò)、服務(wù)器的優(yōu)化,逐一解決問題,確保客戶端處于一個良好的運行狀態(tài),達到上線后的良好品控。