如何优化产品开发过程?

一、需求调研

二、设计

三、开发

四、测试

五、发布

1、人工转自动化部署

从人工部署到自动化部署,会给团队带来以下优点:

A:会减轻运维人员压力

B:同时加快发布速度

C:减少发布上线过程中的问题

2、如何实现自动化部署

A:使用自动化工具ansible+jenkins进行整合-适合小型企业

 Ansible作为一个python写的自动化部署工具, 较Chef, saltstack, puppet更有自己的一些优势。

首先就是agentless,无需在Linux client安装任何服务即可无缝连接Linux default ssh端口进行部署(windows需要安装winrm 开启ssh服务), 在部署一个产品的同时你需要考虑很多时间成本, 使用其他部署工具本身非常棘手的问题就是去申请开端口, client量少的话, 我们可以去等, 多的话本身你去request, waiting, unblock port等等;最后会耗费很长时间. 这个对很多产品本身就是很致命的. 不推荐Saltstack的原因也是因为其需要在每台agent逐一去安装client service并测试, 这本身就会耗费一些时间成本.

其次容易上手, 语法简单, 有现成模板可学习。

Jenkins开源, 轻量级, 兼容性和扩展性强, 直观的GUI管理这都是它的优势, 一般配合Ansible使用。

B:使用自动化工具ansible+jenkins+Gitlab进行整合

Gitlab就给我们提供一个非常方便以及直观的Playbook management. 我们需要做的其实就是在Gitlab去建立一个对应产品或者server的playbook仓库, 然后我们在本地写好后直接commit到这个仓库, 最后在部署的时候, 去让Jenkins pull这个playbook到其workspace, 并作为一个Job去run这个playbook

简单来说就是将要发布的代码推到特意为自动部署建立的某个仓库,创建任务,让工具自动拉取代码进行发布

C:各工具职能

1、gitlab:做版本管理

2、jenkins:根据指定参数,分别执行部署或回滚操作;以及执行结果的展现和记录

3、ansible:负责脚本的远程执行


以上信息部分来源网络,我将逐步进行整理与完善

你可能感兴趣的:(如何优化产品开发过程?)