人人網(wǎng)開放平臺(tái)之父李福松:安全開放才會(huì)健康長(zhǎng)久
原創(chuàng)【51CTO獨(dú)家特稿】在其他開放平臺(tái)剛剛萌芽的時(shí)候,人人網(wǎng)開放平臺(tái)就已經(jīng)風(fēng)生水起了。人人網(wǎng)早在2008年7月8日就正式對(duì)外發(fā)布了開放平臺(tái)戰(zhàn)略,從此全面拉開了中國互聯(lián)網(wǎng)的開放平臺(tái)時(shí)代。開放平臺(tái)成為創(chuàng)新者和創(chuàng)業(yè)者的樂土,各種開發(fā)團(tuán)體、個(gè)人、開發(fā)公司都進(jìn)駐開放平臺(tái),各種應(yīng)用產(chǎn)品五花八門,極大地滿足了用戶的需求,涌現(xiàn)出了很多優(yōu)秀的應(yīng)用產(chǎn)品。像風(fēng)靡世界的開心農(nóng)場(chǎng)就是從人人網(wǎng)開放平臺(tái)率先推出并迅速受到廣大用戶喜愛,一時(shí)間全民挖菜,場(chǎng)面蔚為壯觀。國際上頗具影響力的著名IT科技雜志《連線》評(píng)選出了“過去十年最具影響力的15款游戲”,開心農(nóng)場(chǎng)排名十四。在收獲優(yōu)秀應(yīng)用產(chǎn)品的同時(shí),開放平臺(tái)也幫助眾多開發(fā)者迅速創(chuàng)業(yè)成功。
人人網(wǎng)開放平臺(tái)官網(wǎng):http://dev.renren.com/
嘉賓介紹
李福松 人人網(wǎng)開放平臺(tái)之父 高級(jí)產(chǎn)品&技術(shù)經(jīng)理
下面是51CTO對(duì)人人網(wǎng)李福松先生的采訪實(shí)錄
1. 人人網(wǎng)開放平臺(tái)對(duì)比其他開放平臺(tái)在技術(shù)上有哪些獨(dú)特優(yōu)勢(shì)?對(duì)于中國眾多的開放平臺(tái),您覺得會(huì)有怎樣的發(fā)展?
開放必須安全的開放才能保持長(zhǎng)久健康的開放狀態(tài),因此對(duì)于安全驗(yàn)證及授權(quán)這塊就尤為重要,人人網(wǎng)開放平臺(tái)率先在國內(nèi)采用了OAuth2.0的驗(yàn)收與授權(quán)解決方案,同時(shí)首先翻譯了OAuth2.0的中文版貢獻(xiàn)給國內(nèi)社區(qū),目前OAuth2.0支持多種的驗(yàn)證流程,在人人網(wǎng)開放平臺(tái)接入應(yīng)用方面發(fā)揮重要作用。
用戶隱私是人人網(wǎng)一直非常看重的,而人人網(wǎng)的用戶模型與其他網(wǎng)站有很大不同,因此我們?cè)跈?quán)限的粒度設(shè)計(jì)上充分照顧到用戶的不同隱私需求,將權(quán)限的范圍進(jìn)行了詳細(xì)的劃分。
我們構(gòu)建自己的通用開放平臺(tái)(Common Programming Platform,簡(jiǎn)稱CPP),目的在于增強(qiáng)人人網(wǎng)開放平臺(tái)的開放性和標(biāo)準(zhǔn)化,從而使第三方與人人網(wǎng)的集成更加容易和多樣化,進(jìn)一步推動(dòng)開放平臺(tái)領(lǐng)域的社會(huì)分工,為產(chǎn)生各種開發(fā)SDK創(chuàng)造必要條件。
人人網(wǎng)開放平臺(tái)在對(duì)外公布REST API的基礎(chǔ)上,又對(duì)外發(fā)布了我們的Widget API,將可視化的組件也通過API的定義方式對(duì)外發(fā)布,充實(shí)了我們對(duì)API的理解,這樣的設(shè)計(jì)是我們?cè)跇?biāo)準(zhǔn)化的努力實(shí)踐。
人人網(wǎng)開放平臺(tái)努力封裝各種語言的SDK,以及為Discuz等開源社區(qū)封裝組件,就是力圖降低開發(fā)者的接入門檻,同時(shí)SDK上不僅僅是簡(jiǎn)單的接口封裝,也逐漸將業(yè)務(wù)功能進(jìn)行整合封裝到SDK中。
2. 人人網(wǎng)開放平臺(tái)的開放策略是怎樣設(shè)定的?如果我是用戶,為人人網(wǎng)開放平臺(tái)開發(fā)第三方應(yīng)用會(huì)獲得怎樣的扶植策略?
開放平臺(tái)一直秉承開放共贏的理念為客戶服務(wù),不為開發(fā)者設(shè)置過多門檻,同時(shí)為了平臺(tái)的健康發(fā)展以及開發(fā)者群體的整體利益對(duì)于應(yīng)用接入的產(chǎn)品質(zhì)量嚴(yán)格把關(guān),努力將精品推送給人人網(wǎng)用戶。任何一個(gè)組織或個(gè)人,都可以自由的制作人人網(wǎng)應(yīng)用,我們有專門的營運(yùn)團(tuán)隊(duì)為開發(fā)者解答業(yè)務(wù)層面的問題,我們也有專門的技術(shù)咨詢與支持團(tuán)隊(duì)為開發(fā)者進(jìn)行技術(shù)支持,同時(shí)我們平臺(tái)的運(yùn)維部門還為那些優(yōu)秀但缺少服務(wù)器的應(yīng)用準(zhǔn)備了一些服務(wù)器供開發(fā)者使用,目前這種服務(wù)器及帶寬的租賃是免費(fèi)的。同時(shí)我們?cè)诰W(wǎng)站也有不同的資源對(duì)應(yīng)用進(jìn)行推廣。
3. 蘋果APP STORE開發(fā)人員分得七成收益的模式讓大家津津樂道,那么人人網(wǎng)平臺(tái)的利潤分成是怎樣設(shè)置的?如何保證開發(fā)人的合理利益?
目前我們?cè)趫?zhí)行的分成策略是,在扣除人人網(wǎng)渠道成本后的部分進(jìn)行4:6分成,開發(fā)者占6成。同時(shí)開放平臺(tái)也正在積極研究新的更加優(yōu)惠的分成策略,讓開發(fā)者得到更多利潤用以鼓勵(lì)開發(fā)者在人人網(wǎng)研發(fā)更多新的產(chǎn)品。
分成策略只是我們吸引開發(fā)者入駐的因素之一,我們通過與開發(fā)者廣泛溝通發(fā)現(xiàn)能夠給其帶來大量流量,提升品牌價(jià)值才是開發(fā)者最為看重的,目前的開發(fā)者們更看重的是其團(tuán)隊(duì)的長(zhǎng)遠(yuǎn)發(fā)展及品牌目標(biāo),因此在這方面人人網(wǎng)擁有得天獨(dú)厚的優(yōu)勢(shì)可以幫助開發(fā)者們實(shí)現(xiàn)這一目標(biāo)。
除了分成策略,我們?cè)谧灾鷱V告的投放也向開發(fā)者的應(yīng)用傾斜,我們?cè)谶\(yùn)維資源的支持上也有相對(duì)靈活與寬松的政策,很多開發(fā)者得到了我們大量服務(wù)器及帶寬的免費(fèi)支持。這些都從不同側(cè)面保證開發(fā)者的合理利益得到保障。
4. 中國目前的版權(quán)保護(hù)機(jī)制還很不完善,人人網(wǎng)開放平臺(tái)的授權(quán)機(jī)制是如何運(yùn)作的?開發(fā)者以什么方式可以得到授權(quán)?請(qǐng)介紹下人人網(wǎng)開放平臺(tái)的技術(shù)架構(gòu)或者服務(wù)器部署架構(gòu)。這樣的架構(gòu)對(duì)比其他平臺(tái)在性能上會(huì)有怎樣的優(yōu)勢(shì)(可不說明參照對(duì)比的是哪個(gè)平臺(tái))?
通過OAuth 2.0的發(fā)布,我們?cè)?ldquo;用戶授權(quán)”這一部分,將平臺(tái)提供的服務(wù)(Service)進(jìn)行了標(biāo)準(zhǔn)化(同時(shí)也是行業(yè)現(xiàn)成標(biāo)準(zhǔn))。這樣就使得如圖2所示的行業(yè)分工成為可能:
圖2 OAuth 2.0帶來的行業(yè)分工
在圖2中,由于OAuth 2.0帶來的標(biāo)準(zhǔn)化和實(shí)現(xiàn)的通用性,各種Connect客戶端(即SDK)就能交給開源社區(qū)來封裝。通常,這樣的開發(fā)工作只需要個(gè)人開發(fā)者就可以完成。
在這個(gè)基礎(chǔ)上更進(jìn)一步,在“用戶授權(quán)”以外的領(lǐng)域,可以將整個(gè)平臺(tái)各種服務(wù)進(jìn)行標(biāo)準(zhǔn)化,打造出一個(gè)Service層+一套相關(guān)規(guī)范(spec)。這樣的技術(shù)架構(gòu),在“用戶授權(quán)”以外的領(lǐng)域,尤其有利于widget產(chǎn)品(暫且叫這個(gè)名字)的標(biāo)準(zhǔn)化。關(guān)于這種通用widget的雛形,可以參考facebook的Platform Dialog和各種social plugin。
在圖3中,我們從平臺(tái)的各種接口中剝離出一個(gè)Service層,在Service層基礎(chǔ)上,產(chǎn)生各種SDK。這個(gè)Service層,加上相應(yīng)的一套編程規(guī)范,組成整個(gè)開放平臺(tái)的核心——通用編程平臺(tái)(CPP)。
圖3 基于通用編程平臺(tái)(CPP)的技術(shù)結(jié)構(gòu)
在圖3中,平臺(tái)的核心,通過標(biāo)準(zhǔn)化搭建起一個(gè)Service Layer。這一層的工作必須由開放平臺(tái)完成。
上層的兩個(gè)SDK層次可以由開源社區(qū)來完成。
第三方應(yīng)用開發(fā)者根據(jù)需要可以選擇使用三個(gè)層次的API。
平臺(tái)的核心——CPP包括兩部分:
(1)圖3中的CPP Service Layer,由各種endpoint組成。
(2)由文檔組成的Spec,包含endpoint需要的參數(shù)、回傳方式、顯示模式、注冊(cè)設(shè)置等規(guī)范。
Service層中的各個(gè)endpoint大部分是基于HTTP的一個(gè)服務(wù)點(diǎn),但SSO Endpoint不是。它是某些在運(yùn)行環(huán)境下進(jìn)程間通信的接收和驗(yàn)證服務(wù),其對(duì)應(yīng)的Spec中包含進(jìn)程間通信的地址、參數(shù)、安全驗(yàn)證設(shè)置等信息。
Service層中的endpoint可以分為四大類:
◆ Auth Endpoints
◆ Renren API Endpoints
◆ Widget Endpoints
◆ Single Sign-on Endpoints
帶有CPP Spec的架構(gòu)圖如下所示:
圖4 通用編程平臺(tái)(CPP)的技術(shù)結(jié)構(gòu)(加入CPP Spec)
6. 人人網(wǎng)開放平臺(tái)在數(shù)據(jù)庫方面是怎樣的一種組合?是否考慮在未來使用NoSQL數(shù)據(jù)庫?
更全面說開放平臺(tái)在數(shù)據(jù)存儲(chǔ)上采用DB+Cache(遠(yuǎn)程+本地)的組合方式。
在DataBase方面采用通用的Master/Slave 的模式,但也同時(shí)根據(jù)不同業(yè)務(wù)進(jìn)行了垂直部署與水平拆分,不同的業(yè)務(wù)會(huì)由不同的DB集群承擔(dān),一個(gè)業(yè)務(wù)中數(shù)據(jù)量過大的會(huì)進(jìn)行散表的水平拆分;
有專門的Hadoop集群用來集中處理平臺(tái)的各種Log;
有專門的Memcached集群維護(hù)業(yè)務(wù)數(shù)據(jù);
也對(duì)部份業(yè)務(wù)數(shù)據(jù)進(jìn)行了本地化緩存。
人人網(wǎng)也在研討NoSQL,開放平臺(tái)在這方面也有跟進(jìn),也在時(shí)機(jī)成熟的時(shí)候大規(guī)模引入NoSQL。
7. 平臺(tái)安全性至關(guān)重要,對(duì)于開發(fā)平臺(tái)的安全性是如何保障的?是不是存在專門的人員來規(guī)劃整個(gè)開放平臺(tái)的安全機(jī)制。
一方面我們采用安全程度高的授權(quán)與驗(yàn)證解決方案OAuth2.0。
一方面我們?cè)跇I(yè)務(wù)實(shí)現(xiàn)上盡量用簡(jiǎn)單實(shí)用的流程來降低負(fù)責(zé)度與提高安全性。
一方面我們通過多維的數(shù)據(jù)監(jiān)控及時(shí)的發(fā)現(xiàn)異常變化。
一方面我們與人人網(wǎng)安全部門緊密的合作,及時(shí)更新各種新發(fā)現(xiàn)的安全漏洞。
我們有專門的人員規(guī)劃平臺(tái)的安全機(jī)制。
【編輯推薦】