什么样的持续交付工具和平台最适合你的组织?

持续交付和DevOps的方法论及实践已经存在很很多年,其主要要解决的问题就是,如何快速,安全的完成从开发到发布、运维,及后续的线上监控等一系列活动。
持续交付和DevOps包含了很多内容,比如分层自动化测试、流水线卡点,infrastructure as code,线上机器auto healing、auto scale等等。但最重要的是,这些活动要有一个靠谱的工具平台来承载。
好在市面上可选的工具平台也是非常的多种多样。屈指一算,大概有这么几类:
轻量级CI SaaS
以travis-ci为代表的轻量级CI,成为了开源项目的标配。能够提供丰富多样的构建环境和灵活的构建策略(比如并行构建等)。非常适合运行测试,但是在后续的部署、运维领域略显乏力。
单机版CD工具
以Jenkins为代表。Jenkins是一个以Job为核心概念,用各种插件不断丰富和武装自己的工具。在近几年先后推出了Jenkins 2.0(pipeline as first class citizen),Jenkins X(cloud native as first class citizen)。
Jenkins本质上是一个灵活的流程引擎,没有任何业务概念。因此对于很多场景化的需求需要进行上层的封装,可以是自己去配置一个个Job和Pipeline,也可以通过API批量调用。Jenkins的扩展能力很强,但对于企业的场景来说,还是会有一些限制。
云原生工具
平台本身和云平台有着很好结合。如前面提到的利用云平台的auto scaling的能力。事实上能够利用的能力还有很多,包括机器创建销毁,操作负载均衡,开启日志服务及监控等等。
目前比较有代表性的单机工具是Netflix的spinnaker。由于是国外的产品,他对AWS和Google Cloud等支持的比较好,但阿里云的支持还是有限。
企业级平台
为企业的场景而生。一般内置项目、应用、流水线等模型,很好的匹配到企业的组织结构。同时提供企业研发所必须的一些配套基础设施,比如maven私服,npm私服等等。一般来讲,企业级平台是场景化的。比如阿里云的一站式研发协同平台,云效,对主流语言(Java,Node,Php)的构建和主流平台(Linux)的部署都支持的很好。用户基本上简单的点点选选,一个从构建到发布的流程就能跑起来了。
这种平台可能的一个缺点就是,相比Jenkins这类产品,通用能力和灵活性不足。很多活动都需要在一些模型的概念下进行。
那么来聊聊吧
你的组织规模如何,你在组织内的角色是什么
正在使用什么样的持续交付工具链,又遇到什么问题
是否使用了云平台,你的工具链和云平台的集成度如何?
是否使用了Kubernetes等集群管理,你的工具链和Kubernetes的集成度如何?
你心中理想的持续交付工具链是什么样子的