Author:放翁(文初)
Blog: http://blog.csdn.net/cenwenchu79/
围脖:t.sina.com.cn/fangweng
其实在去参加JavaOne之前的晚上就想写关于程序员看开放平台的文章,其实每年年底和年初的工作总结其实多少都有对一年的工作总结。业界也有很多公司开始大张旗鼓的搞开放,自己兄弟公司也又重新把开放搬上台面,心里其实觉得有很多想说的,从技术层面或者从平台产品层面,在9月初的时候看到有人就针对现在遍地开放谈对于ISV来说究竟是陷阱还是机遇,这个问题其实需要时间来证明。(先说明一下,下面提到的一些观点和想法或者行动也许不成熟或者不同环境不适用,这里仅仅是提出和分享,而不是指导)
2007底年一句承诺让我开始了开放平台的路,当时人还在阿软做SAAS平台,当时SOA火热,自己在阿软也通过写SCA的框架来实现利用WebService的服务互通(也就是那个年代的服务开放),在跨平台和安全,性能,易用性上都走了很多弯路(当然也促成了成长)。经过这些磨砺以后,在淘宝提出想要开放的情况下,和淘宝的老大敲板说,给我两周,搞出原型,07年的时候做开放可以参考的唯一只有Yahoo,其他现在看起来很火爆的Google,Facebook只有雏形。1条半枪就开始搞开放平台,两周搞出一个现在可能看起来很不起眼的原型,但是那时候确实是走出了第一步。淘宝放弃自己做开放的想法,阿里软件做平台,淘宝提供服务。后面要说的是一路走来的一些感触,也许今天开放的人将来一样会面对同样的问题,也许有些问题在开放初期就应该做好审视,因为开放不是一个简单的技术问题……
生态圈
不论是阿里软件当年的服务集成平台或者是淘宝的开放平台,在产品化的目标中,第一点就是希望能够构建出电子商务生态圈。其实简单来说,就是希望良性循环,产生多赢的局面。那么在这个生态圈里面角色有谁?ISV(软件服务提供商),ISP(对于开放平台来说就是淘宝),用户(根据软件不同可能是卖家或者买家或者是SNS的粉丝)。对于发起开放这件事情的ISP来说无非就是两点最求“名”(提高自身知名度,吸引更多的潜在客户,开拓更广的业务领域)或“利”(与ISV在长尾上分一杯羹)。对于ISV来说更加简单就是“利”,当然如果要“名”就可能与ISP产生一定的冲突(后面会谈到)。而对于用户来说,可以得到更个性化的用户体验,更物廉价美的服务(服务软件的同质竞争)。因此在需求方面看起来是可以达成共识的,但在看看各自的保留点。隐私:这个是用户最为关注的,也是ISP需要保证的,但是在ISV来说却是希望越开放越好。核心竞争资源:记得我和几个朋友提过一个公司是否需要去做开放的基本鉴别方式,如果你是数据为王的,则不要考虑去开放了,因为开放这把双刃剑首先会砍伤自己,因为开放的第一阶段就是数据型的开放。当然这也是促使网站考虑如何走出自己画的圈圈的第一步,不走出这一步,那始终就是“等着悟空送饭回来给师傅吃”。
那从ISP角度来说生态圈,其实在这个生态圈里面并不是鸡生蛋和蛋生鸡的情况,最早要扶植的就是ISV,因此在开放尺度允许的情况下(ISP可以不考虑利益,但要守住底线:用户利益不能牺牲),需要为ISV提供一整套的开放规划,从服务使用,软件产品化,软件推广,管理维护成本等等角度都需要去考虑,因为任何一个环节出了问题,都会导致ISV的投入付诸东流。(这也是很多ISV说开放初期听了太多美好的远景,结果都是肥皂泡,一碰就破,细节决定生态圈的第一步是否能走起来),其实有很多人说进入阿里就被洗脑,有一点从进入阿里到现在我一直都很认同的:做平台就是需要考虑如何为平台上的人成功,而不是考虑平台如何成功,阿里巴巴b2b起家是这样,淘宝起家也是这样,今天开放平台如果想要起来也是这样。
从ISV角度看生态圈,有淘宝以前的出去的老员工或者现在在TOP平台上做应用的ISV都会问我如何做一些成功的应用。其实我是个伪ISV(早年还玩国外各家API做Demo),但由于自己的前端技术真的不怎么样,因此多半就尝试一下,产品化的思路远不及专业的这些ISV,但是看了那么多,其实自己也给出自己的建议。ISV要做成功的产品,不同的开放平台策略也许都不相同,但是抛开平台服务个性化的特质来说,有几点是共通的:1.做有渠道的。很多人看到现在团购网风起云涌,但是在杭州都市快报的团购是我看到的做的很不错的,原因是什么?渠道,推广渠道(传统媒体),客户渠道(众多趋之若鹜的商家)。2.做有技术门槛的。很多人都在做手机或者传统媒体终端的应用,大家都看到了这些领域的庞大空间,其实在我进阿里的时候就替人做过手机端的多人游戏,知道这终端的水有多深,因此类似于这样的技术领域门槛也是很好的一层应用生存保障。3.做个性化的。在安全团队有一句话觉得搬出来在任何地方都适用:“是否需要去做安全措施,除了考虑它的重要性以外,很大程度上需要去考虑投入产出比,80%的安全投入才能够有20%的效果,那么这种安全投入其实是失败的”。网站也是一样,大部分网站大部分功能都是满足6-70%的用户需求,剩下的需求也许在稳定性,性能等方面需要投入更多的资源,但是收效甚微。因此作行业化差异性较强的软件,一方面需要领域专家,一方面也会防止和ISP产生利益冲突,也是一种规避风险的方式。总的来说,找到你自己的强项来做应用是最重要的,永远不要以为创意可以搞定一切,今天的互联网应用在开放模式下拷贝的成本将会更低,因为面包皮,生菜,色拉,肉饼都已经做好了,你的汉堡仅仅只是把他们叠起来。
开放与网站
其实在去美国参加JavaOne顺便与Facebook的朋友交流以前,对这个问题一直是没有太关注的,或者说自己一直都是想当然的,包括今天和虚拟组的同学做交流的时候,有同学依然和我们过去有着一样的想法。我当时问了Facebook负责开放平台的朋友一个问题:“你们网站的PV和API的调用量比例大概是多少?”得到的回答是“not care about it.”我提到了Twitter的一些PV和API的数据比例,他们就很明确的和我说,Twitter是做平台的,而他们是做网站的。同时我也问了他们是否会将一些核心内容交给第三方ISV自己去做,得到的回答是否定的,网站核心内容还是网站做。
其实,这也是让我重新审视当初对于开放的一些想法是否已经有所改变。今天,Twitter的流量已经成为公认的第一,但是如何盈利,竞争力在什么地方都是他们很困惑的,而使用他们的API的一些客户端却早早的找到了很多生财之道。今天的Facebook很多东西捏在手里,其实看看开放尺度也是很有限的,但是却做的有声有色。这并不是说开放目标是做平台一定没前途,做网站一定是目标。其实这就是我前面谈到的度,Twitter天生就是平台型的网站,他没得选(不过你会发现twitter现在已经在慢慢的将自己的网站打造的更加强大,包括各种终端的客户端及自己网站的用户体验)。一开始就把开放的目标定位为平台,希望将来自己无形于世,其实就是一种理想化的做法,需要面对的是开放这把剑在安全,用户利益,网站利益的各种挑战,而将非重要的资源大面积铺开,重要资源点对点铺开,也许是摸索开放最好的方式,也是在找到双赢前最实在的合作模式。今天的淘宝开放平台是否是以前想象的电厂已经不再重要,重要的是我们能看到现在怎么走,将来可能的方向。
开放与安全
我常开玩笑,自从做了开放平台,安全部门找事情最多的就是我们,原因很简单,这个桶原来规则都是自己定的,现在交给别人去做,但是还是打着淘宝的品牌。这时候会发现做很多平台的Feature都会受到安全的约束,然后PD和我们及安全就会Call个meeting来做平衡,最后往往做一个折中的方案,有时候我会说其实这个事情做到最后是PD不满意,安全不满意,我们平台也不满意。长此以往对于一个产品来说会走的很别扭。
这点上我没有太多很好的方案,首先就还是要定位我们的开放边界(边界不是固定的,而是随着时间和网站核心发展方向而变得),其次就是在开放方式上做更多样化的选择,有时候底层数据服务粒度过细也会带来数据安全问题,在数据服务上层做一些封装来忽略中间过程从安全的角度或者易用的角度就会得到多赢。
简单说来,做开放平台如果总是在纠结和折中就很难长期发展下去。对于开发在完美角度提出的一些安全和稳定的建议时,需要有人站出来权衡投入和产出,及假想和现实的区别,过去举个例子就是:从来没见因为刀可以杀人,就把刀全没收了,因为大部分时候大家拿刀都是做有益的事情,出了问题再去惩戒,在某种意义上更有益于生态圈的初期发展。
合作
淘宝开放平台曾经有过很多好的想法的产品,也去尝试推广,但是后来都发现有点不对劲,我们有自己的运营团队,但是一个平台需要运营自己平台之上的产品么。其实,今天看来,平台最不需要的就是可运营的产品,最需要的是教别人(或者是其他团队)如何去构建成功的产品。这其实和我最前面谈到生态圈中一点是一致的:帮助别人在平台成长,证明平台的价值,这才是平台需要做的,而平台团队做出来的东西永远只是Demo,只是为了帮助别人更好的使用平台。因此开放平台的人应该懂得如何去合作,这点是教训,也是基本的思维方式。
团队成长与技术的演进
来到淘宝是为了继续能够实现把开放平台做成产品的理想。在技术的角度,希望追求更多的创新和突破,在产品角度希望找到更多的商业价值亮点推广给ISV。在淘宝技术大学学员可以自选团队的时候,我去讲开放平台总是会得到不少同学的认可,有一点其实是蛮吸引人的,就是在平台这个团队,任何一个层次的人都有,这里层次值得是技术应用的层次,你可以是对业界前端技术很敏感的人,你也可以是对底层大数据高并发体系很热衷的人,也可以是迫切希望了解淘宝电子商务体系架构的人,因为这个大团队就分成了这些层,来满足从上到下,从内到外,从外部开发者体验到后端服务接入体验的各种需求。但其实事事未必如此。
在开放平台技术发展来说,有两条“腿”:技术驱动(指的是从平台角度来满足一些非业务性的需求,例如稳定性,可用性,性能等),产品驱动(指的是在商业上的应用场景需求来向平台提出功能增强)。在平台构建初期,产品驱动会占60%甚至更高。而到了平台中期(其实可以看作第二阶段),产品驱动会降至30%甚至更低。但不论怎么说,两种驱动长期一方占优势都会导致平台走偏,产品驱动长期占主导,那么平台长远发展及平台化特性就会被削弱,技术驱动长期占主导,那么可能就会让平台偏离需求,远离开发者。对于开放平台的研发团队需要的是在商业模式的肯定下找到技术创新,因此如何去让每个不同层次的团队去了解平台整体的发展是很重要的。
在管理者的角度来说,研发团队的精细化是很有必要的,但是对于平台来说,小团队有时候会成为整体发展的瓶颈。当时进淘宝开放平台是挂在基础平台组,老大目的也是希望能够抓住重要的一群人,抓住重要的核心应用,但是上半年经过老大认可,在小团队里面抽出了部分人组成了虚拟小组,在关注和驱动整体平台发展,经过快半年的运作逐渐进入状态,这里的人不在仅仅停留在小团队的需求上,更多的是去了解全局的目标。这样最重要的一点就是防止技术驱动导致的技术狂热爱好者做出一些空想的设计和实现,挫伤自己也挫伤团队。我也时不时的会脑子发热,但是当我看到自己的目标,平台产品化的方向,有些事情就会去考虑的更多,因为技术创新不仅仅是浸淫在技术技巧或者语言技巧上,更多地是在已有的知识基础上去运用和挖掘。这种思想需要在每个开放平台的开发同事脑子里都有个概念,这样才能够将技术发挥到极致,也是我觉得做产品和去做实验品最大的区别。创业不一定要走出去自己搞,通过产品或者平台改变公司未来的发展那也是一种创业。
参考与照搬
今天在Facebook不认为是问题的,在淘宝可能都是问题,原因很简单,开放的内容不同,面对的用户和开发者不同,问题自然不同。很多人会说开放平台认证一定要用OAuth,然后URL设计要符合REST等等,其实这些都是表象。很多时候,标准是为了开发者更便利,可以看看很多时候所谓的标准都沦为了附属品(额,我们支持xxx)。
记得在淘宝技术大学和同学交流开放平台的时候谈到淘宝要做开放平台的另一个目的就是做标准,这个标准不是定出来的,而是被“骂”出来的,用的不爽就说,说了就改,你说你是电子商务行业标准,关键是任何领域要用起来都很简单,很方便(包括与传统体系对接)。在安全上SNS认为的安全和淘宝认为的安全完全是不同的,流程开放,多角色的涉及等等都是电子商务所特有的,因此很多时候这些就是开放平台人的价值所在。
当然今天我们还会去学习国外的架构体系,安全设计,同时也需要去不断创新。今天客户看起来平台什么都没做,但是满足客户需求了,那就是成功了,因为平台就是要对开发者透明,简化,做的很深奥,用起来很复杂那就是很挫的一个平台。(做异步化分享的时候谈到很多人喜欢画那些复杂的架构图,其实如果要做到稳定可靠高效,需要的就是看的清楚的几条线)。
扯远了,总的来说,现在国外或者国内都有很多开放平台,有很多值得借鉴的地方,但是作深了,其实是要根据业务来定制化开放平台。
零零散散的写了这么多,按我以前语文老师的说法就是“脚踩西瓜皮,滑到哪里算哪里”,其实就是想说一下开放中各个角色将会面对的一些问题,包括开发者,包括平台研发团队,包括服务提供者(多半是自己网站),有些事情想清楚了会找到自己的目标,而不是盲目跟风,伤害了自己,也伤害了开发者。良好的生态圈需要更多的关注细节,关注目标。