随着Docker的兴起,基于Docker构建适合企业内部的应用开发平台(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平台的运维管理。
博文出处:http://blog.nicescale.com/howtobuildpaas/