如何優化產品開發過程?

weixin_34148340發表於2018-10-16

一、需求調研

二、設計

三、開發

四、測試

五、釋出

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:負責指令碼的遠端執行


以上資訊部分來源網路,我將逐步進行整理與完善

相關文章