PaaS平台的一个核心理念是为应用提供各种基础中间件服务和进行应用集群的管理。
devops是一种贯彻全生命周期的软件研发理论,打破传统的研发部门和运维部门泾渭分明的现象,尽量实现团队将研发和运维进行统一结合的模式 ,这种理念落地实施需要借助一定工具。
CI是持续集成,可以实现代码自动化的静态检查、动态检查、安全检查和单元测试、集成测试等功能,从而实现代码的尽快尽早集成,减轻后期发现问题的概率
CD是持续部署或者持续发布,这种持续部署采用自动化工具,能够有效提高系统环境的部署效率和升级更新的业务连续性
jenkins可以视作一个平台,在这个平台中一方面可以用户定制各种插件,一方面可以将所有的工作以流程化的形式(pipeline)串联起来。这样可以将CI/CD的思维通过jenkins落地实施来贯彻执行,同时CI/CD的很多工具都是自动化,而PaaS中的相关系统部署或者更新升级或者项目研发过程使用的环境都可以自动化,于是二者可以很好的进行关联。
可见,devops的落地实现,可以通过jinkins中配置自动化的CI/CD流程,从而更好的与PaaS进行深度集成,从而提高软件研发效率和软件研发质量。
其实PaaS平台是包含devops的流程的,比如cloudfoundery,从用户提交代码即进入PaaS平台。也可以将PaaS和devops分为两个不同的系统。1、用户提交代码到代码仓库(gitlab svn bitbucket等) 2 CI工具(比如jenkins bamboo)触发自动编译,在slave节点编译并生成可执行程序 3 slave节点利用dockerfile打成镜像,并上传至测试镜像仓库 4 调用PaaS平台api创建应用容器并运行 5执行相关测试(如单元测试)。5 测试通过后,可调用PaaS平台api在集成测试环境创建应用容器,执行集成测试。
以上可作为一个服务的一条流水线,针对于不同的服务在jenkins里可固化为一个模板,重复使用
paas好比组件工厂,工具软件是它供应的服务。jenkins结合jira,git等可以实现cicd,配合devops的流程、管理方式、人员能力可以实现devops的开发运维一体化
收起
图片来源:《 DevOps Master Whitepaper: Success with Enterprise DevOps 》
首先理解持续集成的定位,如上图所属,持续集成是为持续交付所要具备的一个重要环节,而持续交付也作为 DevOps 的重要环节。
持续集成的目标是:在保证质量的前提下,提高产品迭代速度。
要达成这一目标,我们需要做什么:提高产品迭代速度 = 研发周期缩短 + 测试周期缩短
在这过程中怎么度量持续集成所带来的利与弊呢:节省的集成测试时间 – 增加的研发时间 > 0 ,而且这个数值越大证明价值越大(比如说构建编译时长、打包时长、部署时长、部署回滚时长)
持续集成的核心实践:以可接受的成本,通过尽可能频繁的集成,缩短问题引入、发现、解决的时间间隔。
Bug 解决的越早, bug 带来的损失就越小,只有频繁的自动化的去验证,才能实现尽早的发现问题。所以自动化测试是持续集成中非常重要的一个质量门环节。
Reference : The History of DevOps And what you need to do about it @Damon Edwards
在持续集成的过程我们怎么越早的发现问题(快速反馈):
1 、在早期捕获和解决错误,降低修复成本
2 、小批量地推进工作,减少在制品数量
3 、每个阶段都保证质量,降低传输成本
4 、组织学习更快,整个团队更好的协作
不仅是技术,重点是原则的坚持
在各个环节中,有一些持续集成的最佳实践原则可供参考:
小的改动,逐步构建每人、每天提交代码在主干上做持续集成,至少要每天进行集成使用好持续集成工具自动化的构建和测试分级测试并快速反馈红灯需要立即被修复。