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

  • 徐川

2015 年 7 月 6 日

话题:架构DevOps语言 & 开发阿里云

随着 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 也有专门的论坛探讨、届时希望各位无线的技术朋友们都能来和我们做个交流和探讨。

架构DevOps语言 & 开发阿里云