微信号:infoqchina

介绍:有内容的技术社区媒体

对话伯昊、林轩:阿里TAE的发展故事

2013-08-29 23:59 杨赛

在2013年7月的阿里技术嘉年华上,来自阿里巴巴的刘昊旻(伯昊)和侯前明(林轩)介绍了为第三方代码提供托管平台的TAE。TAE是建立在淘宝私有云T4基础上的一个第三方代码托管平台。发端于店铺系统,现在应用于淘宝U站,淘宝TMS,天猫品牌站等。TAE为第三方代码提供了和淘宝内部服务直接交互的机制。未来将作为淘宝生态系统第三方代码引入的解决方案之一,支持更多类型的业务和应用。

InfoQ编辑在现场跟伯昊与林轩沟通了有关TAE的更多细节。

InfoQ:通过你们的简介,我们知道TAE相当于是一个PaaS产品。先介绍一下TAE的发展历程吧。它是什么时候开始做的?经历过哪些发展阶段?


林轩:TAE是从11年7月底发起的,原始的需求来自淘宝店铺的装修市场。装修市场是淘宝的店铺模板交易平台。在这里第三方设计师使用PHP、HTML、CSS等编写店铺模板,为店铺提供美化和渲染;卖家订购某个模板后,淘宝的店铺系统就会按模板的代码来展现卖家的店铺。这些模板的代码存储在店铺系统内部的数据表中,所以它的扩展性是有限的,只能做一些前端展现的功能。

随着装修市场的繁荣有一些更深入的需求提出来,比如说做个性化的展示,做一些数据存储等。当时的系统结构是无法满足的,所以就发起了TAE这个项目做代码托管。这样的话,一个是功能可以更丰富一些,可以有更多复杂的业务逻辑,代码可以有层次结构,可以有自己的设计模式。这是最初的一个需求的来源。

TAE发起比较早,当时还没有T4,也没有聚石塔。我们当时做的时候,相当于在阿里系内部没有任何参考和借鉴的东西,只有一个原始的需求。所以采用小步迭代的开发模式。开始只做PHP支持,沿用了装修市场的PHP引擎。因为店铺系统本身是java写的,装修市场的php也只是一些代码片段,所以装修市场没有使用php原生执行环境,而是使用Quercus引擎在jvm之上执行php代码。TAE沿用了这个做法。一方面是便于和现有的java系统做交互,另一方面是方便做一些安全控制。

InfoQ:这个引擎是你们自己的吗?

林轩:Quercus引擎是Caucho公司(该公司的另一著名产品是Resin)一个开源的产品。TAE在其基础之上做了很多封装和改造。在JVM之上用Java执行PHP有一个很大的好处,就是要比原生的PHP要安全很多。因为PHP代码和容器本身的代码——Java代码是位于不同的层次上面。Java代码作为PHP的执行引擎,对PHP是透明的,这是一个天然的安全屏障,不需要在系统层面做太多保护。而且项目发起时我们就那么几个,也没有资源去做系统层面的安全。

所以,第一个阶段就是11年,11年主要解决的就是PHP的业务需求。到后期我们有Java的需求慢慢浮现出来的时候,就开始做Java这块系统层面的安全。因为对应Java代码托管,系统和容器本身都是Java的,这样容器的代码和第三方代码是同质的,它一旦通突破Java沙箱之后,就和系统代码具有完全相同的权限了。这个一定要通过系统层面来解决。

一直到12年末开始支持Java托管的时候,我们才开始深入到系统层面,然后也有其他内核组的专家来支持,后面Java才做起来。

InfoQ:所以总体来说,TAE是给哪些人用的?

林轩:就现在最新的这个阶段,应该是分两方面:一方面是淘系内部,一方面是聚石塔的用户,即非淘系下面的第三方应用。这两部分安全性的要求是不一样的,淘系方面安全性要求更高,聚石塔相对来说没有那么高,因为他本身就是在一个完全隔离的环境中。

伯昊:我觉得你刚才说的那两个应该都算是淘系的第三方开放的一部分。我的看法是这样:如果是分为淘宝的小二和第三方开发者,那TAE的用户至少会分为这两种;对于淘宝内部的技术小二和业务小二来说,TAE给他们提供的是一个受控的第三方开放的方案,如果他的业务想要去引入第三方来为他的这个体系增加活力,同时又要考虑他整个的安全性,那么他就可以去考虑使用我们了。这是对内部。

对外部来说,这些业务小二所开放出来的业务是谁来使用呢?就是那些第三方的开发者,就是刚才林轩说的这两部分。有一部分的安全级别要求是很高的,即顶着淘宝天猫的域名的这种应用的开发者。对他们来说,可能会感到很辛酸。为什么?因为我们安全上实在控制的太严了,所以他们用起来会真的很不爽。

比如说JS,你是不能用jQuery的,你只能用我们的Kissy。因为,你的JS写出来之后,我们会全部用Caja这个解释容器再把它编译一遍。所以,你写的JS和执行的JS完全是两码事,重新编译过的JS,估计你在浏览器里去看,你自己都看不懂。

JS的限制太多是目前开发者抱怨的焦点,目前我们也在尝试另外的办法,提升易用性。希望我们以后能够尽量不用JS白名单这样的方式去限制JS使用。目前这些探索还处于实验室阶段,希望尽快能够和各位开发者见面。

目前,TAE的用户主要还是PHP,因为相关的业务用PHP写比较方便。现在我们Java也处于试用阶段。


嘉宾简介:

伯昊,2010年加入阿里巴巴,做过dubbo、TAE。对软件复用、应用可扩展性、DevOps等话题感兴趣。也喜欢折腾各种开发板,做些自娱自乐的小东西。

林轩,2002年毕业,2009年加入淘宝。先后从事过Java中间件服务框架HSF,分布式数据层TDDL,消息中间件Notify;2011年开始专注于淘宝TAE代码托管平台。


注:原文较长,这儿为部分节选内容,请点击原文链接查看全文。


***********************************
本文来自InfoQ微信公众账号:infoqchina
1、回复“今日新闻”,查看今天更新的新闻;
2、回复“今日英文”,查看今天英文站的更新;
3、回复“文章 +关键词”,搜索关键词相关内容;
4、回复“QCon”,了解QCon大会相关信息;
5、回复“活动”,了解最近InfoQ组织的线下沙龙;
6、回复“架构师”,获取《架构师》下载地址;
7、回复“投稿”,了解投稿和加入编辑团队的流程。
***********************************

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 Android Studio 之<进阶篇:实用快捷键> python3使用PyMysql连接mysql数据库 C#读书雷达 | TW洞见 程序员为对抗雾霾可以做些什么? 徒弟第一次爆破WIFI密码成功!祝贺!!!