FreeWheel 創(chuàng)建于 2007 年,總部位于美國硅谷,是一家專門提供互聯(lián)網(wǎng)視頻廣告投放、監(jiān)測(cè)、預(yù)測(cè)、增值等關(guān)鍵解決方案的外商獨(dú)資公司。創(chuàng)始人是 Douglas Knopper、Jon Heller 和 Diane Yu。
公司發(fā)展十年,目前約 80% 美國傳統(tǒng)電視媒體和運(yùn)營商的數(shù)字視頻廣告業(yè)務(wù)使用 FreeWheel 的服務(wù),ComScore 排名前 10 的視頻網(wǎng)站大部分是該公司的客戶或合作伙伴。2017 年開始,F(xiàn)reeWheel 將重點(diǎn)放在開拓歐洲市場(chǎng),在已經(jīng)占據(jù)約 50% 市場(chǎng)份額的基礎(chǔ)上再升級(jí)。
初識(shí) FreeWheel
在不少人眼中,F(xiàn)reeWheel 這家公司的很多做法都出乎意料:公司的業(yè)務(wù)、銷售、市場(chǎng)皆在歐美,技術(shù)研發(fā)團(tuán)隊(duì)卻以中國為主;在女性程序員如大熊貓般稀缺的IT職場(chǎng)中,F(xiàn)reeWheel 近 300 人的北京研發(fā)中心里,女性員工居然占比約四成;企業(yè)都宣傳自己求賢若渴,可像 FreeWheel 這樣為了留住心儀的工程師居然能特意為他在紐約新建一個(gè)辦公室的又有幾個(gè)?
除了 FreeWheel 這些外在的“迷之任性”吸引了眾多求職者目光之外,還有這家公司內(nèi)在的IT架構(gòu)與運(yùn)維。
FreeWheel 成立 10 年,從剛成立時(shí)全年廣告播放量累計(jì) 100 萬次,到單日廣告投放接近 10 億,運(yùn)維部門用什么來保證產(chǎn)品穩(wěn)定的應(yīng)用環(huán)境?
作為對(duì)新興技術(shù)非常敏感的高科技企業(yè),如何選擇最適合自己的技術(shù)產(chǎn)品?這家為美國 90% 主流電視媒體和運(yùn)營商所使用的跨國企業(yè),如何保證歐洲、美國、中國三地協(xié)同辦公的高效?
FreeWheel 聯(lián)合創(chuàng)始人美女 CTO Diane Yu 和運(yùn)維副總裁梁灝舜(Vito Leung),為我們解答了上述疑問,還原出一個(gè)真實(shí)的 FreeWheel。同時(shí),希望給那些正面臨IT運(yùn)維困惑的跨國企業(yè)、高科技公司以及創(chuàng)新企業(yè)提供更多參考。
工程師團(tuán)隊(duì)的打造和磨合
這家公司活力四射,既沒有歷史包袱,也不缺少代碼達(dá)人,他們對(duì)于產(chǎn)品的清晰定位,對(duì)新技術(shù)理性的判斷與嘗新,對(duì)IT規(guī)劃的預(yù)判與從容,都有非常多值得借鑒的地方。
反其道而行之的研發(fā)中心
熟悉 FreeWheel 的人都知道,這家跨國企業(yè)的研發(fā)中心從成立之初就設(shè)在北京。有些人將其原因歸結(jié)于它的 CTO Diane 是土生土長(zhǎng)的北京人,有故鄉(xiāng)情節(jié)。事實(shí)上,真相并非全部如此。
Diane 在美國工作九年,接觸了很多中國程序員,她很早就發(fā)現(xiàn),中國的工程師基本功很扎實(shí),工作勤奮能力出眾,但往往吃虧在語言上。
另外一個(gè)劣勢(shì)是中國的 IT 人才分布在不同企業(yè)不同部門,沒有成型的團(tuán)隊(duì),無法做到相互扶持相互幫助,從而難以共同提高。
當(dāng)時(shí)她就在思索,為什么不能招募中國最出色的工程師組成研發(fā)團(tuán)隊(duì)呢?后來,她遇到 FreeWheel 另外兩位創(chuàng)始人,提出了要在北京建立研發(fā)中心的想法,并很快被他們接受。
立足中國,國內(nèi)人才比肩硅谷
FreeWheel 研發(fā)中心招募的大多是清華、北大、中科院、哈工大等一流高校的高材生。在團(tuán)隊(duì)組建之初,除了語言上的劣勢(shì)比較明顯之外,中外思維方式的不同也著實(shí)磨合了一段時(shí)間,很多微小的細(xì)節(jié),Diane 之前都沒有想到過這也能造成誤會(huì)。
例如研發(fā)團(tuán)隊(duì)發(fā)郵件,關(guān)于溝通時(shí)間的書寫往往按照中文習(xí)慣“年-月-日”標(biāo)注,而美國對(duì)于時(shí)間的標(biāo)注習(xí)慣是“月-日-年”,所以往往中國這邊郵件發(fā)過去,美國的團(tuán)隊(duì)看得雨里霧里搞不清楚會(huì)議的時(shí)間。
但是很快,經(jīng)過痛苦的“磨合期”之后,中國的研發(fā)團(tuán)隊(duì)爆發(fā)了驚人的研發(fā)實(shí)力,一方面團(tuán)隊(duì)非常有想法,研發(fā)能力很強(qiáng),可以快速響應(yīng)美國產(chǎn)品部門的需求;
另外一方面 FreeWheel 研發(fā)團(tuán)隊(duì)三分之一的人力都有去美國或歐洲“坐班”輪崗的經(jīng)歷,近距離接觸產(chǎn)品應(yīng)用、客戶服務(wù),更清楚研發(fā)的重點(diǎn)和方向。
當(dāng)然,另外一個(gè)無需多言的好處就是快速的提升英語溝通能力。事實(shí)證明,她的決策是對(duì)的,現(xiàn)如今她的合作伙伴在各種場(chǎng)合都跟客戶或者投資人表示,F(xiàn)reeWheel 之所以能夠走到今天,與 Diane 把研發(fā)中心設(shè)立在北京這個(gè)決策分不開。“曾經(jīng)也有過非常忐忑的階段,但我很高興事實(shí)證明我是對(duì)的。”
運(yùn)維團(tuán)隊(duì)遇到的挑戰(zhàn)和解決方案
以最小的代價(jià)試錯(cuò)
管理運(yùn)維團(tuán)隊(duì)是運(yùn)維副總裁 Vito 的重要職責(zé)之一。FreeWheel 將 60 余人的運(yùn)維團(tuán)隊(duì)分為好幾個(gè)小團(tuán)隊(duì),有負(fù)責(zé)網(wǎng)絡(luò)的,有負(fù)責(zé)基礎(chǔ)運(yùn)維的,還有專注產(chǎn)品應(yīng)用運(yùn)維的等等不一而足。
整個(gè)運(yùn)維團(tuán)隊(duì)主要承擔(dān) 3 件事:
-
學(xué)習(xí)和借鑒外部的新興技術(shù);
-
與公司的產(chǎn)品研發(fā)保持同步,隨時(shí)支持;
-
與不同部門溝通協(xié)調(diào),滿足他們的需求。
這 3 件事說來容易,真正實(shí)踐起來并不輕松。就拿第一件事來說,Vito 需要解決 FreeWheel 在 IT 發(fā)展過程中遇到的各種挑戰(zhàn),其中就需要他以最小的試錯(cuò)代價(jià)找到最高效的解決方案。他舉了兩個(gè)例子:
數(shù)據(jù)庫的選型之路
在互聯(lián)網(wǎng)廣告行業(yè)中,基于用戶的信息和歷史興趣行為進(jìn)行精準(zhǔn)廣告投放已經(jīng)成為一個(gè)基本需求。為了滿足這一需求,需要構(gòu)建一套支持高并發(fā)、低延遲、可擴(kuò)展、高可用的用戶數(shù)據(jù)庫系統(tǒng),這是很多實(shí)時(shí)廣告系統(tǒng)面臨的一個(gè)非常大的技術(shù)挑戰(zhàn)。
FreeWheel 的用戶數(shù)據(jù)經(jīng)歷了從最初的上萬條、幾十 GB 到目前多達(dá) 6 億條、上 TB 的規(guī)模,每天更新的數(shù)據(jù)就高達(dá) 1 億條,要求達(dá)到毫秒(ms)量級(jí)的跨數(shù)據(jù)中心數(shù)據(jù)存取性能,以保證數(shù)字廣告投放的實(shí)時(shí)性。為此,F(xiàn)reeWheel 在用戶數(shù)據(jù)庫的產(chǎn)品選型、編程接口、軟件設(shè)計(jì)、運(yùn)營維護(hù)等方面做了很多嘗試、探索和改進(jìn)。
在最初的階段,數(shù)據(jù)量較小,基于訪問性能的考慮,F(xiàn)reeWheel 首先嘗試了業(yè)內(nèi)非常流行的開源軟件產(chǎn)品 Memcached,實(shí)現(xiàn)全內(nèi)存存取,取得了很好的效果。
隨著數(shù)據(jù)量的不斷增加,全內(nèi)存存儲(chǔ)無法滿足需求,接下來研發(fā)和運(yùn)維的同事開始評(píng)估 Leveldb,并根據(jù) FreeWheel 的業(yè)務(wù)需求做了一些特殊的定制化,從而實(shí)現(xiàn)了數(shù)據(jù)在磁盤的持久化存儲(chǔ),擺脫了內(nèi)存容量的限制。
但是隨后的問題和挑戰(zhàn)也接踵而來,從運(yùn)維的角度來看,很多問題無法得到很好的解決,例如難以實(shí)現(xiàn)高可用、增加節(jié)點(diǎn)的成本高、跨數(shù)據(jù)中心延遲大等等。
這時(shí),F(xiàn)reeWheel 開始更加積極地尋求、嘗試更多的軟件產(chǎn)品和解決方案,最終選擇了 Aerospike 這樣一款產(chǎn)品。
它在 API 實(shí)現(xiàn)、數(shù)據(jù)存取性能、命名空間定義、低延遲數(shù)據(jù)同步、SSD 硬盤訪問優(yōu)化、高可用實(shí)現(xiàn)、運(yùn)維友好性等方面具有突出的優(yōu)勢(shì),使得 FreeWheel 的廣告投放系統(tǒng)不僅在響應(yīng)速度上有了巨大的提升,并且跨數(shù)據(jù)中心同步平均延遲控制在毫秒級(jí)(ms)。
產(chǎn)品小貼士:
Memcached:是一個(gè)高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng),用于動(dòng)態(tài) Web 應(yīng)用以減輕數(shù)據(jù)庫負(fù)載。
Leveldb:是一個(gè) Google 實(shí)現(xiàn)的非常高效的 kv 數(shù)據(jù)庫,能夠支持 billion 級(jí)別的數(shù)據(jù)量。
Aerospike:是一個(gè)鍵-值存儲(chǔ)的高性能實(shí)時(shí) NoSQL(靈活模式)數(shù)據(jù)庫。
網(wǎng)絡(luò)文件系統(tǒng)的演進(jìn)
在 FreeWheel,運(yùn)維團(tuán)隊(duì)使用 NFS(Network FileSystem 網(wǎng)絡(luò)文件系統(tǒng))解決方案來實(shí)現(xiàn)多個(gè)系統(tǒng)、服務(wù)器之間的數(shù)據(jù)共享。
NFS 是一種 Linux/Unix 操作系統(tǒng)下被廣泛使用的、非常成熟的共享文件系統(tǒng),可以在計(jì)算機(jī)之間通過 TCP/IP 協(xié)議共享資源。在運(yùn)維團(tuán)隊(duì)的推動(dòng)下,NFS 的應(yīng)用在 FreeWheel 經(jīng)歷了幾個(gè)階段。
在最初的業(yè)務(wù)階段,他們只使用了一臺(tái) NFS 服務(wù)器給前/后端產(chǎn)品提供所有的數(shù)據(jù)共享服務(wù),數(shù)據(jù)包括廣告創(chuàng)意文件、用戶數(shù)據(jù)報(bào)告、廣告日志等等。
隨著 FreeWheel 產(chǎn)品的不斷升級(jí)和業(yè)務(wù)模式的擴(kuò)展,數(shù)據(jù)量和讀寫的吞吐量也越來越大,單臺(tái) NFS 服務(wù)器無法滿足需求了。
于是新的解決方案是按照業(yè)務(wù)邏輯拆分現(xiàn)有數(shù)據(jù)資源,并分散到多臺(tái) NFS 服務(wù)器上,并且從業(yè)務(wù)邏輯的角度進(jìn)行數(shù)據(jù)資源的隔離。同時(shí)這也需要推動(dòng)產(chǎn)品和開發(fā)部門的同事一起調(diào)整應(yīng)用設(shè)計(jì)來適應(yīng)這種改進(jìn)。
在基本解決了容量和性能的問題之后,運(yùn)維團(tuán)隊(duì)進(jìn)一步對(duì)多臺(tái) NFS 服務(wù)器的高可用和可擴(kuò)展性進(jìn)行了改進(jìn)。
經(jīng)過研究對(duì)比之后,最終選擇了 Redhat Cluster Suite 作為解決方案,實(shí)現(xiàn)了從 2 節(jié)點(diǎn)互備到 4 節(jié)點(diǎn)多對(duì)多互備,直到目前的 7 節(jié)點(diǎn)多對(duì)多互備架構(gòu),從而在共享資源的讀寫性能、服務(wù)可用級(jí)別、系統(tǒng)冗余性、橫向擴(kuò)展能力等多方面對(duì)系統(tǒng)提供了強(qiáng)大的支撐能力。
美國、歐洲、中國三地同步協(xié)作
作為一個(gè)需要全球多地協(xié)同工作的的運(yùn)維團(tuán)隊(duì),最頭疼的,并不是產(chǎn)品業(yè)務(wù)方面的問題,而是讓不同地區(qū)的運(yùn)維團(tuán)隊(duì)如何能有一致的目標(biāo)以及優(yōu)先級(jí)。
FreeWheel 在美國、歐洲、中國三地的多處辦公室有各自不同的主要職能,有的辦事處偏向于與用戶溝通,如何更快更好地處理客戶需求是重點(diǎn)關(guān)注的問題;有的辦事處偏向工程,如何更好地服務(wù)于工程師團(tuán)隊(duì)是優(yōu)先考慮的問題。因此不同辦事處的運(yùn)維團(tuán)隊(duì)面臨并且需要解決的問題就不同。
作為一個(gè)整體的全球運(yùn)維團(tuán)隊(duì),如何把各個(gè)地區(qū)的需求放到一起來決定優(yōu)先級(jí),并且作為一個(gè)整體,共享一個(gè) backlog (工作列表)就成為 FreeWheel 運(yùn)維工作的一大挑戰(zhàn)。
最后解決這一難題的方法就是建立“Global Operation Project Management”流程,簡(jiǎn)單來說,各地的運(yùn)維團(tuán)隊(duì)領(lǐng)導(dǎo)和公司的IT架構(gòu)師,需要定期交流溝通所有項(xiàng)目,并列出優(yōu)先級(jí),確保大家保持一致。
在協(xié)作方面,隨著公司的成長(zhǎng),為了提高客戶服務(wù)質(zhì)量的標(biāo)準(zhǔn),F(xiàn)reeWheel 的 SLA (服務(wù)等級(jí)協(xié)議)也越來越嚴(yán)格,流程也更加成熟,臨時(shí)的需求越來越少。取而代之的是 SOP (標(biāo)準(zhǔn)流程standardoperating procedure)、硬件需求申請(qǐng)流程,使得團(tuán)隊(duì)之間的溝通和合作越來越順暢。
FreeWheel 運(yùn)維的未來,擁抱 Devops
隨著業(yè)務(wù)需求的變化,F(xiàn)reeWheel 從只有兩個(gè)機(jī)架服務(wù)器的簡(jiǎn)單系統(tǒng)(ui↔adserver↔db),發(fā)展到了跨多個(gè)機(jī)房的上千臺(tái)服務(wù)器,并且覆蓋 cache、reporting、forecasting、nosql 等多層的復(fù)雜系統(tǒng)架構(gòu)。
在過去的幾年里,F(xiàn)reeWheel 采用的是私有云的解決方案,最近 FreeWheel 開始研究混合云的方向,同時(shí)使用公有云和私有云。
接下來 FreeWheel 的發(fā)展重點(diǎn)將放在 Devops。美國和中國的運(yùn)維在這個(gè)方面有很大的差異。
在美國,絕大部分運(yùn)維工程師既要有運(yùn)維(系統(tǒng)+網(wǎng)絡(luò))的能力,也要有開發(fā)的能力。
而在中國,傳統(tǒng)的運(yùn)維工程師還是更多的只專注于運(yùn)維。“隨著中國技術(shù)行業(yè)的進(jìn)步,運(yùn)維領(lǐng)域也開始要求運(yùn)維工程師除了運(yùn)維的思想,也要有更多的開發(fā)思維。”
如何支持越來越快速的版本迭代?這不僅是快速的問題,更重要的是能保持生產(chǎn)環(huán)境系統(tǒng)的高質(zhì)量和穩(wěn)定性。這將牽涉到技術(shù)本身以及產(chǎn)品架構(gòu)完善兩方面的研究和投入。
采訪后記
采訪完 FreeWheel,記者有很多專業(yè)之外的感受。這家公司成功的背后,有很多的必然性:嚴(yán)謹(jǐn)?shù)氖袌?chǎng)調(diào)研、理性的技術(shù)判斷、精準(zhǔn)的市場(chǎng)定位、高效的三地協(xié)同、還有對(duì)產(chǎn)品應(yīng)用與開發(fā)的足夠重視……他們很多做法看似與常規(guī)做法背道而馳,但細(xì)細(xì)想來卻又在“情理之中”。
在國內(nèi)企業(yè)走出去的大潮流下,記者也建議其他企業(yè)可以參考 FreeWheel 這種理性思考,不選最知名的,只選最適合自己的發(fā)展之路。