28.1 平台即服务方案
PaaS(Platform as a Service,平台即服务)是希望提供一个统一的操作系统平台环境,让所有软件直接运行在它上面,而无需复杂配置。Docker天生的应用封装特性为实现PaaS提供了某种便利。这里介绍几个基于Docker相关技术的PaaS项目。
28.1.1 Deis
Deis项目官方网站为http://deis.io,代码在https://github.com/deis/deis维护。
Deis是开源的PaaS项目,基于Go语言实现,遵循Apache 2.0协议。由OpDemand公司在2013年7月发起,目前还处于开发阶段。OpDemand公司提供对Deis的商业服务支持。
Deis试图提供轻量级的PaaS实现,为用户提供简单的应用管理和部署。Deis基于Docker项目和CoreOS项目,通过简单的git push命令即可部署应用,加速集成和部署过程,还支持对应用容器通过单条命令进行扩展。
在架构设计上,Deis整合了一系列Docker容器,可以部署到公有云、私有云,以及本地环境中,并提供了完整的测试、诊断的工具。
28.1.2 Flynn
Flynn项目官方网站为http://flynn.io,代码在https://github.com/flynn/flynn维护。
Flynn项目由一个创业团队在2013年7月发起,基于Go语言开发,目前还处于beta版阶段。Flynn项目的发起也是由于一些部署实践问题:在部署SOA(Service Oriented Architecture,是大规模分布式系统常采用的架构风格,需要功能组件之间的松耦合)产品至公有云的过程中,往往需要人工部署和维护大量不同功能部件。
Flynn基于Heroku项目[1]。它受到Omege概念(来自剑桥大学、加州伯克利大学和Google公司合作的《Omega:flexible,scalable schedulers for large compute clusters》论文)的启发,Flynn不仅能完成简单可控的部署,还能进行自由的扩展,并提供数据库管理等功能。Flynn可以方便的实现一套比较理想的PaaS方案。
在设计上,Flynn项目尽量保持API驱动和模块化,以便模块支持不同的实现方案。底层(layer 0)实现一套支持服务发现的资源管理框架,上层(layer 1)实现适合部署和维护的应用组件。
目前,Flynn项目已经获得了Shopify等公司的支持。
[1] Heroku是一个支持多种编程语言(包括Ruby、Java、Node.js、Scala、Clojure、Python以及PHP和Perl等)的云平台即服务实现。在2010年被Salesforce.com收购。
