阿里百川:全架构PaaS TAE 2.0的Docker实践

07-06 21:00:22   来源:InfoQ   评论: 点击:

随着Docker及容器技术的火热发展,PaaS进入了新时代,最近一些传统PaaS开始基于Docker及类似技术进行升级改造,也出现了一些专门提供容器托管的平台。淘宝应用引擎TAE是国内较早规模化使用Dock
随着Docker及容器技术的火热发展,PaaS进入了新时代,最近一些传统PaaS开始基于Docker及类似技术进行升级改造,也出现了一些专门提供容器托管的平台。淘宝应用引擎TAE是国内较早规模化使用Docker的PaaS平台,它最近推出了2.0版,作为阿里百川项目的一部分对外开放。 阿里百川 是阿里巴巴集团无线开放平台,为移动开发者(涵盖移动创业者)提供快速搭建APP、加速APP商业化、提升用户体验的解决方案。

InfoQ记者采访了阿里百川的技术负责人云动,探讨了TAE在Docker和容器技术方面的实践,以及在PaaS方面取得的成果。另外,在8月28日和29日举办的 CNUT全球容器技术大会 中,阿里百川的架构师张智宇还将会分享题为《 百川TAE Docker 全架构PAAS演进和实践 》的演讲,敬请关注。

受访嘉宾介绍:云动(真名:陈思淼),阿里巴巴资深技术专家,2008年加入淘宝网,参与淘宝从集中式系统到大规模分布式系统的演变过程,先后参与淘宝用户中心建立,淘宝商品体系重构,淘宝交易系统拆分,以及稳定性和性能的优化和重构,先后参与了四次双十一技术保障工作。从2011年起,负责淘宝&天猫旺铺系统,主导了店铺装修系统,店铺对外开放体系,店铺第三方插件体系等技术上改造工作。从2014年起,担任阿里百川的技术负责人。

InfoQ:请介绍一下TAE项目的开发历程?

云动:TAE最开始是服务于店铺开放业务,为了让第三方开发者参与到卖家店铺的装修和页面设计,同时要保证整体安全、性能和稳定性,孵化出淘宝应用引擎服务:TAE(Taobao App Engine),同时带有安全,受控容器的特点。2014年起,为了更好的服务到阿里百川的移动开发者,TAE基于Docker容器技术的升级,针对移动开发者团队小,迭代快的特点,推出TAE 2.0全架构PaaS,从开发者的系统构建,代码发布到系统运维管理一整套的解决方案。

InfoQ:TAE 2.0的全架构PaaS是什么意思?有哪些特性?

云动:类似GAE、SAE这样的传统PaaS服务,具备弹性伸缩,分布式,免运维等优点,但用户想要使用到这些特性,都需要对原有的系统代码做改造,所以传统PaaS的门槛比较高,并且不够灵活,开发者很难扩展自己的服务。

另外传统PaaS一般只支持Web+数据库这种两层结构,这个比较适合Web网站应用。一旦涉及到更复杂一些的架构,比如Web+消息队列+缓存+数据库+数据分析的系统架构,甚至C++或NodeJS的服务,传统PaaS很难满足。全架构的PaaS就是突破传统PaaS的这些瓶颈,让开发者的任意系统都能在TAE中搭建起来。

首先,TAE 2.0在PaaS功能上,在业界应该是最强的,从开发者系统迁移到TAE的工具化支持,到系统可视化创建,到系统可视化发布运维,以及线上系统的监控、系统性能Profile、日志、压测、慢SQL分析、数据源分析,WebIDE代码管理,定时任务,多媒体云存储和加速,能够覆盖到开发者从0到数百万DAU成长过程的技术需求。其次,基于Docker给开发者带来很好的扩展性,比如开发者可以将自己制作的镜像部署到TAE上,也可以通过我们的WebSSH或原生SSH登录到Container中像IaaS一样管理容器代码。一句话说,TAE 2.0的全架构PaaS就是兼具IaaS的灵活性和PaaS的方便易运维。

InfoQ:您提到TAE 2.0使用了Docker技术,能否讲讲TAE采用Docker的历程?

云动:TAE诞生于淘宝店铺开放业务,之前一直在服务淘系内部业务,比如优站,微淘插件,手淘开放等业务,开发者主要的使用场景就是Web+数据库的两层结构。而百川移动开发者,往往是三层结构甚至N层结构。原来的Web PaaS很难满足用户了。另外我们发现,现在的移动初创团队,团队小,迭代快,他们迫切需要有一套系统能够像PaaS一样去运维他们的生产环境,但是不希望为了使用PaaS而修改自己的代码,并且有IaaS的灵活性。基于这样的需求,所以我们比较自然的想到到了用 PaaS + Container based IaaS的方案来满足用户需求,这个正好和Docker的的特点比较吻合,所以我们选择了Docker。

TAE是从去年8月份开始尝试使用Docker技术的,经过了近1年的产品化和实际使用,目前已经比较稳定了,我们计划七月份正式对外公测。从产品和技术的应用来讲,TAE算是比较早的规模化使用Docker的PaaS平台。

InfoQ:TAE在容器方面做了哪些优化和调整?

云动:我们在容器的网络,存储,安全上都做了很大的优化和调整:

  • 在安全上,我们已经比较好的解决了Container的多租户问题,通过三层安全防护体系来保证用户的多租户安全。

  • 在网络虚拟化上,TAE底层是阿里云的ECS,为了解决Docker容器的网络互通,我们和阿里云的VPC(Virtual Private Cloud)团队做了很多网络虚拟化的共建,利用VPC来支持Docker的网络虚拟化。

  • 在存储虚拟化上,基于阿里云底层的盘古分布式存储,我们可以给Docker提供高可用的分布式磁盘产品。

另外,Docker现在发展得非常快,在存储,网络,热迁移,系统稳定性上,还有大量的问题需要解决。我们在解决Docker的网络性能,Docker Daemon的稳定性等方面,我们做了很多工作。针对不同的镜像服务我们提供了很多产品化的功能,比如Web服务的多环境发布,存储服务的主备同步和切换,配置文件的可视化管理,容器日志收集,Docker Web镜像Build环境等。

InfoQ:TAE 2.0和业界其它PaaS产品有什么不同,它的核心竞争力是什么?

云动:TAE 2.0是针对移动场景的定制化PaaS,我们除了能够支持上面提到的复杂架构的系统搭建,并且能够做到用户代码零改动,就可以享受到PaaS的服务。

具体一些:TAE支持开发者的系统构建(Build),发布(Deploy),运维管理(Management)三大块功能:

  • 系统构建:基于Docker的镜像仓库来实现的,我们官方目前支持了包括Web服务,存储服务,消息队列,负载均衡,搜索等等14个镜像。如果官方镜像无法满足需求,用户还可以将自己在线制作或者线下制作的镜像,提交到镜像仓库。用户搭建系统,通过TAE的可视化界面即可完成参数配置、实例选择、接入层设置等,发布上线。

  • 发布系统:包括打包发布,Git/SVN发布,历史版本回滚,灰度发布,Beta发布等一些列的发布功能,并且PHP还能够单文件发布,发布过程中,能够基于健康检查,按批次发布,做到随时发布对用户无影响。

  • 在运维管理方面,基于淘宝多年的系统容量规划、性能和稳定性经验,TAE提供 应用监控(QPS,RT,URI),容器监控(CPU,内存,带宽), 数据库监控等一些列的监控功能。还提供日志采集,搜索,查询,实时日志显示,监控日志告警联动,自定义监控,在线Debug,Web JStack等功能,保证能够最快的帮助用户定位到系统的问题在哪里。可以这么说,使用TAE,就可以使用淘宝内部的软件开发流程,来规范化开发和系统运维过程。

另外我们还支持在线IDE,可以在线编辑,打包发布。支持WebSSH登录Container管理容器,并且支持传统的SSH客户端登录。当然传统的弹性伸缩,故障迁移等特性也支持。

TAE 2.0的特点可以概括为:像使用PaaS一样运维管理系统,还可以像IaaS一样登录到服务器去查看管理Container。开发者不需要学习Docker,就能够将他的系统在TAE上搭建成功。如果开发者懂Docker,也可以把TAE当成是一个Container AS A Service的容器服务提供商,管理和运维他的Docker Container。

和传统PaaS或最近新的CaaS竞品相比,TAE已经成熟的服务了大量的百川开发者,并且对客户的需求和痛点,有一整套的解决方案,TAE的愿景,就是让3,5个人的小团队,能够轻松服务海量用户,这就是TAE对于开发者的核心价值,也是TAE的核心竞争力。

举个实际的例子,我们有一个做母婴社区APP的客户,30多万DAU的用户,他们的架构比较典型,既包括Java的前台和PHP的后台,也包括ActiveMQ,ZooKeeper等中间件,并且使用Dubbo提供分布式服务,用Hadoop做日志和业务数据分析,存储包括MongoDB,MySQL,Redis等开源解决方案。他们只用了半天时间,就将他们8个应用在TAE2.0上搭建成功,用一周时间,完成数据迁移和压测,将他们系统、数据、流量切换到TAE平台。迁移后,使用TAE的可视化发布,随时回滚,可视化监控和报警,日志联动,线上问题排查工具等功能做App的发布和运维工作,这是开发者用IaaS的时候不敢想的。

InfoQ:TAE在整个阿里百川里是个什么样的定位,跟ACE是什么关系,未来是否会独立向外提供服务?

云动:TAE是从淘宝业务中成长起来的一个云计算服务,同时,又在淘系业务的安全开放上,积累了很多的经验。阿里百川是阿里巴巴针对移动互联网的开放平台,TAE提供了阿里百川的云服务托管解决方案,我们希望TAE能够帮助到创业者,快速完成从零到一的初创期过程,在开发者成长期,TAE提供的运维、监控、弹性等特性,能够解决开发者的痛点。并且针对的初创团队,百川有部分云资源免费两年的策略,扶持到中小创业者。

和ACE的关系,TAE和ACE两个团队合作得非常紧密,可以说是共用一套底层阿里云的基础设施,ACE是面向公有云用户,而TAE是面向移动开发者用户,所以有不同的产品形态。

关于TAE开放给公有云用户,我们也在和阿里云计算同学在推进,希望能够基于TAE目前的产品,给公有云ECS的用户,提供Docker Container Service的服务,除了百川开发者,让更多的开发者能够TAE的功能。并且通过阿里云镜像市场,从虚拟机镜像向Docker镜像转型,形成一个技术闭环的云计算生态环境。

我们在7月16日 阿里百川无线开放大会 基于TAE 2.0也有专门的论坛探讨、届时希望各位无线的技术朋友们都能来和我们做个交流和探讨。


相关热词搜索:docker paas

上一篇:利用OpenVSwitch在多台主机上部署Docker的教程 下一篇:如何在docker容器中搭建JAVA Tomcat运行环境
分享到: 收藏