随着Docker的兴起,基于Docker构建适合企业内部的应用开发平台(PaaS),成为一个热门话题。去年10月份,笔者写了一篇《PaaS不是银弹》,并强调了规范和约束对于PaaS的作用。公有PaaS由于要做到通用和普适性,所以往往很难真正满足企业业务开发需求。

PaaS最终应该是解决方案,适应客户需求的解决方案,而且是需要随着业务需求的变化可以不断演变。而不是客户削足适履去适应PaaS这个工具  

私有PaaS相比公有PaaS最大的区别在于,其规范是自己根据需求来定制和实施。那么PaaS究竟有哪些规范,又如何结合企业自身需求和业务特点来制定规范?

首先,明确引入私有PaaS解决什么问题?

  • 开源中间件软件的提供,比如Tomcat、MySQL、PHP等
  • 应用部署自动化,快速升级或者回滚
  • 运维平台化和自动化,提升运维效率
  • 资源池化,共享运行,提升服务器利用率
  • 面向应用的管理,包括应用创建、监控、报表等
  • 提升DevOps水平。PaaS的特点是更加标准化和自动化

对于拥有应用开发部门的企业,需要能够将开发、测试和生产三个环境打通,更快的开发、更快的测试、更简单的部署和管理。

对于应用外包给第三方的甲方企业而言,其IT部门希望生产环境的应用更好管理,并希望在开发、测试阶段,就考虑到应用如何在生产环境的运行,避免企业的信息化建设杂乱无章。相比于拥有应用软件开发的企业,维护难度更大。因为这类企业面对的软件开发商,开发能力、开发语言和工具差异较大。

当然每个企业对PaaS的需求肯定都会有不同,上面只是一个笼统的概括。具体到案例,需要结合具体需求分析。

PaaS包含哪些规范?

开发、运维在过去都形成了很多方法论。比如ITLE流程规范、SOA面向服务的软件架构,以及最近几年流行的DevOps实践、CI持续集成、CD持续交付、甚至最近流行的微服务架构。

这些令人眼花缭乱的名词概念背后其实都是对于软件如何开发、如何交付以及如何运行维护的实践总结。

那么PaaS的规范应该包含哪些内容,又具体细到什么程度,这个度如何把握?

比如开发规范可以包含代码编写规范、开发协作规范,运维规范如果按照ITLE,包括:基于配置管理和工单管理的事件管理、问题管理、变更管理、发布管理等等。

我们认为,PaaS规范的粒度需要把握好。这个粒度,和PaaS的使用者/管理者的需求有关。

对于私有PaaS平台使用者需要关心:

  • 支持的编程语言、web服务器或者应用服务器
  • 支持的数据库软件类型
  • 支持的数据库模式,cluster还是主从
  • 数据库主从分离是否透明
  • 支持的文件存储类型,如何操作
  • 其它类型服务,如何访问?是否有SDK或API文档
  • 如何部署应用
  • 代码目录路径和布局的规范
  • 名字服务,代码如何访问这些服务(connect),是通过环境变量,还是通过域名,或者通过封装的类或者库,还是通过kv名字服务的查询获取?

对于PaaS平台的管理方需要关心:

  • 统计报表
  • 监控报警
  • 面向应用的监控
  • 如何给开发人员提供一致的开发环境
  • 如何给测试人员提供一致的测试环境
  • 容量管理,如何增减节点
  • 数据保障,备份管理和灾备管理
  • 消息发布管理,如平台对某个软件进行升级的通知
  • 工单管理,处理使用方提出的疑问

上面描述的这些需求,其实就是PaaS平台的开发规范/运维规范,说白了就是如何用和如何管。

如何制定规范

我们说需要结合企业自身特点来定制规范,那么具体到细节层面,我们应该考虑哪些因素呢?

组织结构

是否拥有软件开发部门。如果软件都是外包开发,那么如何让外包开发快速了解并立即可以开发?如果是自己内部部门开发,那么如何做好培训让他们理解更深刻才能更好地在PaaS上开发。

同时也需要考虑开发和运维是在一个部门、还是一个公司,他们的绩效管理模式,是否会导致部门推诿扯皮。这些都会影响PaaS规范具体包含哪些,开发和运维的边界线在哪里?

人员结构

人员的技能水平,对PaaS的设计也有很多影响.一般而言,技能越好的团队,希望的自由度越高。但又需要考虑好开发和运维团队的技能是否能够相匹配。如果开发方能力过强,运维方在管理生产环境时可能就吃力。如果运维方能力强,开发方就能更省事。

企业已经存在的IT资产

这些资产包括硬件和软件两个方面。引入的私有PaaS平台,过去的资产哪些可以继续使用避免过去的投资浪费,这是CIO关心的问题。

硬件方面的资产如交换机、存储往往标准化程度很高,比较容易复用。软件方面,比如企业过去购买过一套监控系统,如果想将PaaS平台的监控对接进去,难度可能就比较大,技术上也很可能失败。这些都需要根据实际情况评估。

可定制和修改的PaaS

PaaS的规范绝不是一成不变,随着组织、技术栈的变化,PaaS的规范也应该能够不断修改适应。

基于docker的PaaS能够胜任这一点。docker本身的特点是轻量灵活。基于docker构建PaaS,不仅可以提供“可定制实施”的PaaS,特别是可以简化PaaS平台的运维管理。

我们基于csphere容器管理平台,提供基于docker的开源PaaS整体解决方案,通过该方案,企业可以为业务开发方提供“自己定制标准”的开发方式、开发接口,同时还可以为运维方提供整体的运维管理平台,真正做到提升开发、运维效率,统一管理。

欢迎关注我们: