the DevOps journey (3) - 為何需要開發流程『自動化』…

對我來說,從傳統Waterfall專案管理方式移轉到敏捷開發,兩個最主要的關鍵就是『透明度』與『自動化』,我們前面談過了透明度,這一篇我要聊聊自動化。

我在課堂上曾說,如果你不確定要怎麼改善你的團隊,那設法提高整個專案(各項事情)的透明度,以及讓開發流程盡可能的自動化,幾乎可以確定對專案成果將帶來顯著的正面影響。

為何我們該在意『自動化』

有幾個顯而易見的理由:

  1. 回應真實世界所需的速度
           面對瞬息萬變的市場,你幾乎不可能像過去一樣,累積所有的bugs每三個月或半年固定上版更新一次。如今,所有已知的bugs,在一周內更新完畢應該算是最差的狀況了。對一些線上服務或是網站,如果是跟交易金額有關的bugs,沒有人會接受已知的bugs被放任不管。
           如今在技術上,我們絕對可以在程式設計師撰寫完程式碼(不管是修復bugs或是增加新功能)之後,自動進行伺服器端建置,建置完成後隨即進行非人工的自動化測試(用以確保這個更新不會改壞了其他原本是好的的功能),如果自動化測試一切正常,則自動上版到測試機或是正式機。整個過程在技術上可以完全自動,並且在從開發人員Check-in code之後一小時內自動完成。
  2. 強迫品質提升
           為了讓上述的自動化可以實現,你必須建置自動測試流程,把過去系統從開發到上版之間,所有原先倚賴人力進行的流程,改為由電腦自動進行。在這個調整的過程當中,你的專案品質自然而然會被迫自動提升。
            因為你過去沒有自動化測試把關、過去沒有伺服器端自動建置、過去沒有上線後的錯誤警示…改為自動化之後這些全都要實現,如此一來,你的專案品質自然和過去以往不同檔次,將會有顯著的改善。
  3. 減少人為錯誤以及倚靠人力的SOP
           過去,在一個沒有自動化的開發流程當中,單一程式設計師把改過的程式碼在自己的電腦上撰寫完成,經過自己初步的測試,他就認為這段程式碼寫完了。然而真的是嗎?
           這段程式碼並沒有和其他人撰寫的程式碼一起運行過,沒有經過單元測試或整合測試,沒有經過壓力測試,沒有正式佈署到某一台網站上,因此你無法得知,改過的程式與正式機資料庫連線後是否可能發生問題(例如正式機的table schema沒有調整),也無法得知上了正式環境之後,網路和硬體環境是否依舊能支撐這段改過的程式碼。
           在過去,這一整段After-Coding後的流程,都是透過人力(例如維運工程師)手動完成,但只要有人力介入,就有可能會出錯。哪怕企業明確訂定了上版SOP,只要有人,就會有錯。而這個流程的自動化,將會把可能發生人為錯誤的機率減到最低,並且讓機器來進行枯燥重複的procedure,我們也可以把人力使用在更有創意(例如設計、開發)的領域。

上面這幾個理由,還不足以讓你改變心意? 讓團隊的開發流程從手動改為自動化?

要如何進行自動化

我們看看底下幾張圖:

上面這張圖從需求的蒐集開始,我們透過VSTS/TFS來管理每一個requirement,並且勾稽串聯到開發人員的工項(Wotrk Items),從開發人員將程式碼撰寫完Check In到Repository之後,一系列的自動化流程就被觸發。

下圖是程式碼Check-In之後的流程,如果導入CI,每一位開發人員的每一次程式碼的Check-In,在伺服器端都會有整合性的自動建置,並且透過自動化運行的code review/unit test來確保程式碼的品質:

如果建置成功,自動化測試也都通過,接下來可以進行自動佈署:

我們可以自動將最新的Build佈署到Release Candidate(RC)主機上,上版到RC的新版系統,可由Power User或tester進行人工測試,測試無誤之後,將系統切換到UAT或Production主機上,直接上版(這部分也可以整合簽核流程變成自動進行)

簡單的說,從開發人員Check-In程式碼開始,後續一連串的動作直到把最新版的系統上架,我們都可以自動化的方式來實現。

如果初期開發團隊擔心太自動,會不小心上錯不該上的code,也可以慢慢的、逐步的實現自動化,但不管如何,將這整個流程實現,所帶來的好處遠遠高於傳統倚賴人工進行的建置與上版流程,而這一切,我們只需要使用一套VSTS/TFS就可以實現。更別說這整個過程當中,每一個段落你都可以收到即時的信件或訊息通知,自動化流程搭配透明度的提升,將會讓你的開發團隊換骨脫胎。

好了,知道概念之後,我們後面就要具體的進入整個DevOps的自動化/透明度提升之旅了…

------------------------------
本系列文章索引位於 http://studyhost.blogspot.tw/2017/02/the-devops-journey-index.html
相關教育訓練: http://www.studyhost.tw/NewCourses/ALM 
若這篇文章對您有所幫助,請點選這裡加入FaceBook專頁按讚並追蹤,也歡迎您幫我們分享出去,謝謝您的支持。

留言

這個網誌中的熱門文章

在POC或迷你專案中使用 LiteDB

使用 Airtable 在小型需求上取代傳統資料庫

使用Qdrant向量資料庫實作語意相似度比對

專業的價值...

精彩(且驚人)的Semantic Kernel入門範例