从PaaS的前车之鉴看CaaS(容器服务)

编者按:根据三种云服务的定义,相较于更底层的IaaS和更上层的SaaS,PaaS应该是最适用于应用开发者的服务。但由于PaaS供应商之间标准不一,反而限制了企业的应用。

一直以来,PaaS和容器技术都有着长期的共栖关系,许多PaaS供应商的底层技术中都可以看到容器技术的身影。比如,现在最流行的Docker技术,就是Docker公司的前身dotCloud公司的核心技术。容器技术让PaaS成为了可能,也在重新定义PaaS,因为它给企业带来了选择最佳工具和服务去组合自己平台的自由。以下为译文:

 

2009年,美国国家标准技术研究所(NIST,National Institute of Standards and Technology)起草了一项对云计算的定义的草案。NIST的定义是为了方便政府采购云服务,笼统地将云计算服务分为三种:

  • IaaS(Infrastructure as a Service),由服务商提供需求的计算,网络和存储;
  • PaaS(Platform as a Service),服务商提供应用开发框架和部署工具;
  • SaaS(Software as a Service),服务商来提供所有的应用。

IaaS和SaaS很容易被理解,用户用得也比较多,PaaS则落后很多。但是我相信在未来几年,能看到有大量的用户开始采用PaaS。

为何PaaS应用并不广泛

技术变化很快,软件架构需要能跟上这种变化。设想和需求都会变化;用户在进化,使用模式也在变化;业务目标和市场需求也在变化。过去一个问题的最佳解决方案,今天就过时了。一个能够长期适用的架构系统,应该是模块化的,系统组件的更新不会影响整个系统。

NIST的定义可以让我们对云计算有一个整体认识,但是,云计算产品和相关的技术在这个定义之后发生了很大的变化,尤其是在PaaS方面。

像Heroku这种早期的PaaS解决方案,都是为三层Web应用设计的,提供了数据库,前端Web服务,以及其它部署和运维web应用的通用服务。有了PaaS,开发者可以仅关注自己的应用层。

早期的平台解决方案,对底层的资源进行了完全的抽象和管理,意在为开发者屏蔽云技术设施的复杂性,提供了声明和消化应用代码的方式,在构建和预生产阶段之后,还会在平台提供的定制容器中运行这些代码。比如,Cloudfoundry在一个名为Warden(最近改名为Garden)的Linux容器中部署代码。

但是每个PaaS服务商都提供了自己的标准,限制了开发者和运维的选择。标准化有自身的优势,但是在初始化平台解决方案中缺乏控制和可见性,会迅速变成一大限制。

之后,随着像数据库和信息这种基础设施服务和软件服务的迅速发展,使得任何结构化平台解决方案都很难跟得上。应用架构也在发展,从单体分层应用到微服务架构这种一个应用被分成几个相互独立但协作关系的服务。微服务需要不同的后端服务,比如服务注册和服务发现,而为三层应用设计的PaaS解决方案是没有提供的。

有哪些变化?

大多数PaaS解决方案都用容器来定义应用单元,隔离和管理应用运行时。但是,在一个传统的PaaS中,应用容器是被平台控制的,对用户是不可见的。一个叫dotCloud的PaaS服务商认识到用户对底层的容器技术更感兴趣,于是在2013年,将其容器技术开源,就是后来的Docker,dotCloud也抛弃了自己的PaaS产品,变成了Docker公司。

将应用容器的控制权从平台服务商,交到用户手中,是一个明智的选择。现在应用容器可以被用做一个可插拔的应用交付和运维单元。企业的DevOps团队也不再被锁定到一家平台上了。

容器服务(CaaS)

企业DevOps团队需要选择最合适的语言,服务和技术来开发应用。为了实现这个自由,将管理应用生命周期的平台服务,从应用,数据管理,安全和其它通用的应用功能所使用的服务中分离出来,是非常有意义的。

这个平台可以被分为以下独立又协作的两层:

  1. 容器服务(CaaS)用来管理任何基础设施上的应用生命周期;
  2. 共享服务(比如数据库,消息服务等)由企业内部的DevOps团队选择;

企业可以通过为每一层选择最佳服务,来组合自己的应用平台。由于用户可以控制自己的应用容器,给平台带来了可移植性和灵活性,也让企业能够使用更多云服务商服务。

容器技术对开发语言,工具和服务方面没有任何限制,企业可以使用开放的工具来打包应用代码到可移植的容器镜像中,这些镜像可以被容器服务层执行。这有助于构建微服务类型的应用架构,而微服务架构可以提高小型DevOps团队的自动化。

应用DevOps团队可以选择自己的共享服务和标准,这些共享服务可能跑在相同的容器服务(CaaS)中,某些情况下使用纯SaaS的服务。如果应用开发的语言或服务发生变化,也不会影响整个平台或平台上的其它应用。

IT管理员对基础设施服务保留了所有的控制权和查看的权利。容器服务层可以帮助将基础设施资源的提供自动化,通过集成基础设施服务,无需在基础设施层添加额外的抽象。这样一来,企业可以选择任何云服务商,以进行最优的安全和基础设施管理实践。

容器服务(CaaS)是应用平台的颠覆者,保留了传统PaaS的所有优势,却没有任何妥协。企业团队现在可以选择一个或多个云服务商,容器技术和共享服务,来组合成自己的平台。

原文链接:http://www.infoworld.com/article/3041633/paas/learning-from-the-paas.html