PaaS是科技基于平台即服务(PaaS)模型而开发的云平台产品,它以容器技术、分布式架构和现代开发框架为基础,将软件应用集合、中间件集合、框架等服务化,实现应用与物理层的解耦,在此基础上可以迅速构建应用的开发测试环境,实现敏捷的应用部署和维护,支持资源的弹性扩展。
PaaS可以简化现代应用程序的开发、交付和运行过程,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。
PaaS为各大企业及行业创建自己的应用管理平台提供了有力的技术支持,是传统数据中心向平台服务型转变的有效路径。
随着云计算的不断发展,用户发现光有IaaS,虽然简化了对基础设施资源的管理,但是对云计算的终端用户来说,要想开发一个软件并部署到云平台上,还需要做很多工作。包括代码的管理、持续集成、自动化测试、交付物管理、应用托管、中间件服务、自动化运维、监控报警、日志处理等等。通过PaaS一个平台就能够真正简化开发、测试、部署、运维等工作,使得企业能够真正实现开发运维化。
在接触PaaS之前,做开发时需要自己搭建各种环境,包括开发环境、测试环境,上线的时候需要搭建生产环境以及进行各种配置,上线之后还需要进行人工运维。有时候搭建环境是一件很麻烦的事情,比如搭建一个tomcat的集群或者是MySQL主从等。由于各种环境都是人工搭建,难免会出现环境的不一致,导致系统在某个环境下可以正常运行,但是部署到其他环境就无法正常运行的情况。PaaS可以提供各种标准化或非标准的环境以及各种运维管理功能,用户可以在秒级按需获取各类资源和环境。所以PaaS的价值在于解放开发、测试、运维人员。虽然目前还不能完全做到这个程度,但它实实在在地降低了用户对应用软件的交付成本及时间。
随着云计算的不断发展,用户发现光有IaaS,虽然简化了对基础设施资源的管理,但是对云计算的终端用户来说,要想开发一个软件并部署到云平台上,还乣做很多工作。包括代码的管理、持续集成、自动化测试、交付物管理、应用托管、中间件服务、自动化运维、监控报警、日志处理等等、通过PaaS一个平台就能够真正简化开发、测试、部署、运维等工作,使得企业能够真正实现开发运维化。
当开发者将一个应用发布到PaaS后,云控制器会存储应用文件,在数据库中创建应用的元数据记录,并指派容器服务器节点来打包及运行应用。云控制器同时还维护了组织、空间、服务、服务实例、用户角色等记录信息。监控应用以确认其运行状态、版本以及实例个数。云分析服务器根据运行应用的容器服务器返回的心跳及消息来更新应用的实际运行状态。
确认应用的期望运行状态、版本及实例个数。云分析服务器从云控制服务器的数据库中获取应用的期望运行状态。使应用的期望运行状态和实际运行状态一致。例如,如果实际运行的实例个数少于期望运行的实例个数,云分析服务器就会指示云控制服务器启动准确的应用实例个数并指示云控制服务器修复任何应用状态的差异。
容器服务器负责管理应用实例,跟踪已启动的应用实例,并广播其运行状态的消息。
应用存储服务器保存了应用代码、云运行时环境和镜像包(已完成打包的可直接在容器服务器上运行的应用包)。
应用往往依赖于数据库或第三方服务。当开发者需要创建一个服务实例并将其与某个应用绑定,该服务的服务接入服务器负责提供这个服务实例。
例如应用需要使用MySQL数据库服务,MySQL服务的Service Broker负责创建一个MySQL服务实例,并将该服务实例与应用绑定。
PaaS使用消息服务器进行组件间的内部通信。
消息服务器是一种轻量级的、基于发布-订阅机制的分布式队列消息系统。
计量数据收集器从各组件收集计量数据。运维人员可以使用这些信息对整个PaaS平台进行监控。
应用日志汇集器可以将应用日志输出给开发者。
虽然PaaS已经提供了PaaS平台的基础框架,但是如果我们给用户提供PaaS服务的话,还是需要我们做很多的定制化的工作,接下去介绍一下相关内容
通过修改和增加云运行时实现,我们可以对云运行时进行相关定制,包括修改中间件的版本、配置信息以及云运行时代码来实现更多的功能,比如安装APM的探针。然后将云运行时打成离线包上传到PaaS。
如需扩展.NET运行环境,可以使用一个开源的.NET插件,因为.NET跟其他运行环境不一样,需要运行在Windows操作系统上面,所以要单独安装一个Windows的容器,并且将.NET 云运行时添加至PaaS之后完成扩展。
PaaS对开发测试采用目前比较通用的方案来实现持续集成。
采用Git/SVN托管代码;采用Jenkins作为持续集成工具,通过Jenkins提供的插件,可以将代码托管、制品仓库以及PaaS平台进行集成,实现从代码提交到部署上线一整套自动化流程。