CloudSpace是一个平台即服务(PaaS),它提供给开发者自由的去选择云平台、开发框架和应用服务,使得开发者能够更快更容易的开发、测试、部署和扩展应用,让开发人员专注于编写应用程序,而无需为中间件和基础设施分心。团队在使用自助式高生产力的框架和应用服务的同时,开发人员可以快速在自己的环境上开发和测试自己的下一代应用,并能部署到云上而无需做任何更改,大大提升持续快速,高质量地交付价值的能力。
一、 PaaS解决了什么问题?
PaaS为开发者提供应用全生命周期的服务能力,主要有两方面:
-
是提供了资源资源和服务集成的平台,如 存储、数据库、缓存和搜索等;
-
是服务端应用程序的运行环境,如 Web应用和Work应用等;
PaaS架构设计要提供多租户的应用平台,多租户间的隔离机制(Nodes、Network、IO、Runtime、Services等)非常重要,对于隔离要关注以下方面:
-
资源隔离和约束
指应用间的容器配额cpu、io、内存等资源要相互不受影响。
-
访问控制
包括应用间的网络访问控制和本地IO访问控制。
-
数据和数据服务
Container只挂在归属应用自身的UnionFS
OVS针对服务实例实施白名单策略
类似S3等块存储天然隔离
PaaS平台主要支持了通用应用架构和应用运维两方面能力:
-
支持应用架构能力
随着应用架构迭代,平台最终将应用抽象为两种类型web和work。区分两种类型, 就是看应用提供的是http能力,还是socket能力。对于通用应用架构,与框架无关,具有无状态、分布式、通用性三个特性。
-
对于无状态
一个应用通常有多个实例集,单实例失去服务能力不影响应用的服务。应用开发时,不要将状态与实例耦合,通常采用实例之外通用存储来保证状态一致性。
-
对于分布式
一个应用通常要进行集群部署,而不是单个应用部署。具体这样的特性,必须在应用开发时,注意扩展性,不要将配置与实例耦合,通常采用实例之外通用配置中心来保证应用独立性。
-
对于通用性
更多是从应用和服务角度来做定义,对于应用来讲,从调用关系来看,可分为对外或对内调用,应用间通信抽象为同步(常用Http)或异步(常用Message);对于服务来讲,从中间件角度来看,都应该具有分布式能力(分布式cache、分布式db等),并且提供数据的安全访问机制,屏蔽应用交互差异,做到通用模型。
2. 支持应用运维的能力
运维通常划分为基础运维和应用运维。对于基础运维,主要负责物理设备及网络等基础建设,更偏底层。对于应用维护,主要围绕应用构建全方位服务,如 虚拟资源,网络规划,软件预装、应用,安全、日志等管理服务,一直以来都在推动运维工作的自动化、规范化和简约化,但仍然面对不同应用团队个性化的挑战,这些都应该有PaaS平台统一解决。
二、PaaS架构设计