又到了新的一屆鐵人賽,針對這次是否要參賽其實非常的糾結:一方面因為工作的關係,額外的時間越來越少,但是一方面又想把寫日誌的習慣找回來,在這種糾結的心情中,最後,還是想寫戰勝了不想寫。
這已經是第三次參加鐵人賽了,對我來說,每一年的主題都比上一年的更加困難,今年選擇的主題更是我這兩年想做但是一直沒有做的部分,也就是如何在日常生活中把DevOps引進來,並且提升日常工作效率。
同去年一樣,今年很多東西會是邊執行並且邊研究和邊記錄,希望大家能夠在這個系列學習到東西。
為什麼寫這個主題
本來第8屆鐵人賽我想寫的是Typescript和Angularjs - 不過去年第8屆鐵人賽並沒有舉行,因此那個系列就夭折了(或許過一陣子有時間會在寫),那為什麼今年我不寫Typescript反而想寫DevOps呢?
原因很簡單,經過這幾年的開發生涯,我發現其實我花很多時間在非開發的事情上面。這些事情,很多都是重複性的,並且各別花的時間並不多,但是加在一起,時間非常恐怖。
舉個例子來說,大家有否算過,把VS打開只為了幫網站發佈出來。以我來說,一般來說,我可能會開2個VS以上(相信大家有多個維護案的時候,常常會開不同VS),這個時候,如果接到,“幫我把XXX系統更新一下”,
這個時候,要做的事情有:
- 要把那個網站的VS打開
- 選擇發佈
- 把發佈資料夾壓縮
- 最後把它傳到機器上面
- 解壓縮更新
這一整個流程下來,可能花的時間要10分鐘左右,來看一下,我們會發現好幾個地方時間都浪費了。
- 要把那個網站的VS打開 - 開VS其實是一個很花時間的動作,尤其是在電腦滿載,然後VS專案又大的情況,可能關開這個專案就要2~3分鐘,更別說開啟中會影響本來工作
- 選擇發佈 - 透過點擊右鍵選發佈,會發現機器慢的時候,還要等,甚至右鍵內容太多還會造成VS當掉
- 把發佈資料夾壓縮 - 壓縮的時候要輸入壓縮出來的檔案名稱,通常我會寫下日期方便日後比對,這個可能寫錯,容易造成混搖
- 最後把它傳到機器上面
- 解壓縮更新
整個流程下來,會發現:
- 很多時間浪費在等待
- 很多重複動作,很有可能人為疏失造成要重新在做一次
- 當做錯的時候,尤其是在很急的情況,心情很嘔
這些事情,其實如果算起來,會發現其實浪費掉很多時間,難道沒有什麼方式可以解決嗎?
如果注意分析,會發現,這些東西其實重複性非常高,而重複性高的工作在IT世界是哪種職業最多?其實是MIS,而MIS如何解決這種問題,就是透過自動化(Automation)。
舉例來說,今天MIS要檢查Server狀況,如果他每過1分鐘,就手動呼叫PING,可以感覺的出來,1 可能會忘記(例如忙什麼就忘記做了)2 實在很無聊 - 這個時候MIS就會寫script來自動化處理這個事情。
難道我們工程師就不能夠自動化?難道那些常常要做的事情一定要我本人做?不能請別人做或者做的時候我可以繼續做我本來在做的事情?
以我上面流程來說,還真的一定要我本人做,因為如果一個同事不懂得如何用VS的發佈(雖然很簡單),不就只能夠我來做?難道不能夠有個傻瓜式的東西,任何人只要執行了,得到的結果和我執行會一樣,甚至
不是人執行,而是機器依照什麼條件執行。對我來說,我只要那個結果,過程是不重要的。
這些想法其實一直環繞在我腦海里,直到有天我聽到了DevOps,然後發現其實就是自動化,這個時候我就想把一些想法代入到我的日常開發中。(不過拖了好幾年直到今年藉著鐵人賽把它落實下來)
適合什麼人看
基本上在這個系列裡面,最適合是.Net 工程師看,因為我的例子都是用.net寫的,最後甚至有個小小的package方便不同.net專案導入這個自動化機制。
不過更重要的是和大家分享是想法,觀念,看過我上個系列會知道,我基本上是先將概念和原因,然後實作反而只是一個驗證說如何實現的佐證。
所以就算今天你不懂.net,只要你懂了我提到的概念,在你的平台上面一定可以用類似的工具做到一樣的功能。
使用到的工具
我會使用到:
- Visual Studio
- github - 範例程序
- powershell(psake) - build的工具
- Appveyor(Visual Studio Team Service)
結語
上面講了一大堆,其實總結起來就是,自動化如何給開發帶來便利?了解這個,其實就不難了解為什麼DevOps現在這麼夯。
希望大家在讀這個系列的時候都有所收穫,如果有發現錯誤,也不吝指正。
下一篇會從什麼是DevOps開始講起。