智囊团沈阅斌分享:云计算之PaaS
“智囊团”分享人:沈阅斌 魔泊云产品研发总监 2011年加入魔泊云负责MoPaaS产品研发和管理工作,国内较早接触cloudfoundry并从事相关开发工作
照片仅供参考,此公司与阿里无关
非常感谢云头条,我们是在11年开始涉足云平台PaaS领域,那时候PaaS还是一个新概念,接受程度还不高,跟一些潜在客户聊云计算时,他们普遍都认为云计算就是云存储和云主机。最近1,2年像Cloud Foundry 等PaaS相关技术越来越成熟,同时企业级用户的业务需求越来越靠近云平台PaaS,再加上近几年包括容器在内新的云平台技术不断涌现,有越来越多的企业和个人开始了解、接受和使用PaaS。
简单介绍下我们的业务,目前我们运营了一个公有云平台MoPaaS,主要给中小微企业和个人开发者提供服务以及打造云生态圈,我们在公有云上与第三方平台和服务提供商进行深度集成和合作,如代码托管、应用服务性能监控、云存储、人脸识别等。另外我们基于MoPaaS核心打造了MoPaaS企业版,给企业提供私有云PaaS解决方案和服务,目前我们已经为多家企业提供PaaS私有云建设,涵盖保险、园区、高校、传统IT企业等领域。
为什么选择做PaaS? 主要有以下几个原因,一是当时移动互联网应用已越来越来越普及,年轻的应用开发者越来越多,我们觉得需要一个应用开发运行平台为开发者提供服务。二是PaaS比较新,当时Heroku在美国刚推出不久便受到广泛的关注,并受到开发者的推崇。
三是那时候已经开始有一些可以用的PaaS开源技术和框架,比如CloudFoundry、Openshift等。特别是2011年Cloudfoundry的推出,我们试用后觉得不错,我们可以不必重造车轮。
另外就是PaaS这种产品类型在云计算领域里面相对轻资产,对于创业公司来说比较适合,我们就毫不犹豫地选择了PaaS作为发展方向,并基于Cloud Foundry 打造了中国首个开放的公有云PaaS服务,并且给我们的产品命名为MoPaaS, 即移动应用PaaS。当然现在的MoPaaS服务已远远超出这个范围。
PaaS的价值在哪里?
在我们接触PaaS之前,我们做开发时需要自己搭建开发环境、测试环境,上线的时候需要自己搭建生产环境以及进行各种配置,上线之后还需要进行人工运维。有时候搭建环境还是一件很麻烦的事情,比如搭建一个tomcat的集群或者是MySQL主从等。
PaaS可以提供各种标准化或非标准的环境以及各种运维管理功能,用户可以在秒级按需获取各类资源和环境。所以PaaS最大的价值在于解放开发、测试、运维人员。虽然目前还不能完全做到这个程度,但它实实在在地降低了用户对应用软件的交付成本及时间。
通常我们所说的PaaS,包括MoPaaS,主要提供应用部署和托管服务。平台服务涵盖的范围包括,应用开发部署运行环境(如应用开发测试管理/工具等),应用服务组件池和管理(数据库、消息队列、缓存等),服务应用资源管理(开发运行管理应用、弹性伸缩等)。
MoPaaS最早版本是基于CloudFoundry开发的,那时候CloudFoundry还不是很成熟,需要我们自己对CloudFoundry源码进行修改和BUG修复。比如那时候还没有引入容器进行资源隔离,只能通过对应用进程监控以及操作系统用户用户组的方式进行隔离,在这些方面我们做了很多工作。
后来Cloudfoundry V2版本的推出,在稳定性、安全性方面做了大量提升,并且引入容器Warden(CF自带的)进行资源的隔离。这时候容器技术Docker也开始兴起,Docker在某些方面确实可以弥补CF的不足,所以我们在MoPaaS后来的版本中大量使用Docker等容器技术。比如一些轻量级服务的提供,可以通过Docker实现自动化部署及资源隔离和监控。
接下去说一下我们接触到的PaaS的一些客户,也就是哪些类型的人或企业选择了PaaS,公有云的话主要还是以个人、创业团队、中小微企业为主,选择PaaS的原因主要在于可以降低应用开发成本和上线时间,开发部署变得非常简单。私有云用户主要包括一些中大型的企业,PaaS是他们对云计算整体需求的其中一部分。比如金融企业、政府部门、传统IT企业、石油行业、园区,都有一些私有云案例或是有PaaS这方面的需求。
我们对实施的私有云项目的客户的需求做了整理,主要有如下几个方面:
资源管理
IT资源整合、有效管理,提高利用率
IT资源的按需分配和可计量。
开发部署
统一的开发测试、运行平台
开发测试环境与生产环境联动
平台及应用无缝升级
自动化交互,减少人工干预
快捷部署/弹性扩展
运维管理
标准化运维体系
自动化运维功能
接下去讲一点技术,主要还是给大家介绍下CF,顺便做点小广告,12月2-3号CloudFoundry基金会组织的CloudFoundry全球峰会将在上海召开,这次峰会首次在亚洲举办,MoPaaS作为金牌赞助商参加并协同主办本次会议
CloudFoundry是一个分布式的系统,部署是一件比较麻烦的事情,后面我会讲,上图是CF V2的大部分组件。主要可以分为路由、授权、管理、运行、服务、消息、日志几类组件。
路由组件是整个平台的流量入口,负责分发所有请求到对应的组件。
授权组件用户身份认证和授权。
管理组件负责整个平台的管理。
运行组件是是应用最终运行的地方。
消息组件用于整个平台内部通讯。
日志组件采集应用和组件日志。
CloudFoundry只是一个框架,如果要给用户提供PaaS服务,我们还需要做很多的事情:
运行环境扩展,比如.NET、Python、JAVA、NodeJS、Ruby、Go、PHP等运行环境。
服务扩展,比如数据库、缓存、文件存储、消息队列等。
应用/服务监控,对应用/服务的资源使用情况进行监控,如内存、CPU、磁盘、访问量、流量等,如果需要对应用/服务性能进行更加深度的检测和分析,可以使用第三方平台如OneAPM进行监控。
弹性伸缩,可以非常方便实现应用集群规模的弹性伸缩。可以通过手动修改集群规模,秒级就可以完成集群的部署。也可以设置弹性规则,由平台根据监控数据实现弹性伸缩。
持续集成
自动化完成编译、发布、测试等
代码托管
提供如Git、SVN等代码托管服务,并可实现自动拉取代码部署至PaaS平台
操作界面
提供可视化的操作界面,使得使用PaaS服务更加简单。
前面说到CloudFoundry是一个分布式平台,部署是一件比较麻烦的事情,幸好CF提供了一个自动化部署工具BOSH,可以对分布式系统进行自动化部署。这个工具需要与底层IaaS进行交互,所以不是所有的IaaS都可以使用这个工具。像OpenStack、VMware、CloudStack等虚拟化平台可以使用这个工具,但是一些公有云就无法支持了,所以在部署这块我们也做了一些工作,比如可以在非标准化的IaaS环境下实现整个PaaS平台的部署。
Cloud Foundry 在不断地演化并不断的整合其它的技术。特别是新版 Cloud Foundry V3具有全新的 Runtime, Diego。Cloud Foundry(v3) 主要由 CC, UAA, Diego, Loggregator, Gorouter, Buildpacks, 和Services和 Bosh等组件构成。新的Cloud Foundry可以无缝地提供Docker容器服务;在原有支持 Linux 平台的基础上,也将支持 Windows应用。
在新版Cloud Foundry中Diego将取代目前的DEA 。Diego解决了原Cloud Foundry架构功能上的的一些局限,包括1)功能间的强耦合,2)DEA、HM和Cloud Controller之间的三角依赖关系,以及3)应用范围只局限于Linux平台,对Windows不原生支持。 我们也将在MoPaaS新版中采用CloudFoundry V3版本。
关于“智囊团”云计算领域讨论群,周一至周五晚8点按照入群顺序,分享行业干货,进行讨论。入群需实名制。有兴趣可以加微信:aclood