(視訊)《快速建立網站》 4.1 為啥造軟體不同於造汽車,為啥是軟體就一定會有Bug - 構建開發運維一體化(DevOps)

北京的201個藍天發表於2015-03-11

本文是《快速建立網站》系列的第9篇,如果你還沒有看過之前的內容,建議你點選以下目錄中的章節先閱讀其他內容再回到本文。

訪問本系列目錄,請點選:http://devopshub.cn/tag/wordpress-on-azure/

1. 網站管理平臺WordPress和雲端計算平臺Azure簡介 (6分鐘視訊 )
2.1 在Azure上建立網站及網站執行機制 (13分鐘視訊)
2.2 域名繫結操作和Azure負載均衡機制 (12分鐘視訊)
2.3 WordPress 初始化和網站管理功能 (11分鐘視訊)
3.1 WordPress 資料匯入 (12分鐘視訊)
3.2 WordPress 多站點支援和Azure線上程式碼編輯器 (14分鐘視訊)
3.3 WordPress 多語言支援 Multisite Language Switcher (15分鐘視訊)
3.4 WordPress 主題安裝和配置,美化你的網站 (15分鐘視訊)
4.1 為啥造軟體不同於造汽車,為啥是軟體就一定會有Bug - 構建開發運維一體化(DevOps)(11分鐘視訊)
4.2 完結篇 – 應用運營vs.發射衛星,遙測(Telemetry) 技術 (13分鐘視訊)

經過前三部分的內容(視訊),我相信大家對如何使用雲端計算平臺和WordPress來建立一個部落格站點已經有了較為完整的認識。在第四部分中,我將為開發人員介紹任何使用Visual Studio Online和Azure來構建一套完整的線上開發平臺,讓你不需要任何的本地環境就可以完成專案管理,需求管理,任務管理,程式碼管理,自動測試和部署;這樣的系統在ALM(應用生命週期管理)中叫做開發運維一體化(DevOps)系統。

請配合視訊閱讀本文

為什麼我們需要開發運維一體化(DevOps)系統?

從事軟體開發年頭越多的人越有這樣一個共識,就是軟體開發無法依靠前期的計劃和完整的需求來保證質量和滿足使用者。這是軟體開發與傳統制造業最大的區別。其實,就算是在軟體行業內,仍然有很多人對此不認可,覺得開發人員受過專業訓練,我們又為專案配備了經驗豐富的需求分析人員和專案管理人員,沒有理由不成功。都是在製造產品,為什麼製造軟體不能像製造汽車,電視機一樣,依靠詳細的生產計劃,按照明確的時間表交付呢?

其實,這裡面大家忽略了一個最基本的事實。汽車/電視等工業化產品都是一次設計,多次重複生產的產品;在汽車/電視的設計過程中,我們仍然是無法充分預知設計過程的所有細節和交付時間,因為這是一個“探索”過程,需要設計人員和工程師依靠自己的經驗和知識創造出一個不存在的產品,而且儘量的預測,確保交付的產品可以滿足使用者的要求。一旦進入生產過程,這類產品的所有的零件,裝配方式都不會再發生改變,這樣我們才能快速重複的生產。而軟體產品則永遠是處於類似汽車/電視機的設計過程,而不存在重複生產過程(也許有,但是你只需要複製/貼上就可以完成)。所以,按照對汽車這類產品的交付方式來預期軟體產品的交付是完全錯誤,不符合實際的;這就好像每個人都要求大眾給每個人單獨設計一臺獨一無二的汽車,還要保證按時交付一個道理。

大家有這樣誤解的另外一個原因是我們的教育,大學裡面的所謂軟體工程所教授的都是設計-開發-測試-交付,這樣類似流水線(軟體工程中叫做瀑布模式)的方式。讓我們從離開學校的那一刻起就有這樣的誤解。

既然我們沒有辦法預測軟體的交付時間,也無法在交付之前預測是否可以滿足使用者的需求;好像我們就沒有必要做軟體了。因為按時交付,滿足需求是軟體存在的價值。我們必須產出這樣的價值,否則大家都沒飯吃了。怎麼辦?敏捷,迭代,試錯;這些答案都對,只是出於不同人群對這個問題的經驗和認知而產出的不同詞彙而已。

下圖中展示的是使用瀑布模式和敏捷開發模式時,對於複雜專案成功可能性的不同影響。

其實我們只要記住一個字:快!

• 快速的完成開發,測試,交付給使用者使用;
• 快速的獲取使用者反饋,並在下一個版本中調整軟體功能;
• 再,快速的完成開發,測試,交付給使用者使用;

下圖展示的是開發/運維之間的迭代關係,只有加快這個迭代速度,才能讓我們的軟體產品儘快的接近使用者的需求。

這就是為什麼我們需要開發運維一體化(DevOps),因為只有把開發系統和運維繫統打通,我們才能快起來,我們才能讓開發人員直接,準確的獲取使用者的反饋;這些反饋可能是運維繫統提供的監控資料,也可能是客戶直接反饋的問題,或者是其他社交網路/論壇上的訊息,總之任何可以幫助開發人員判斷使用者需求的資訊都是需要反饋的內容。

從這個角度來說:其實我們應該叫它 開發運營一體化,但是能過做到這一點可能太困難了,我們暫且還是談開發運維一體化吧。

Visual Studio Online線上開發平臺

VSO的前身是tfspreview.com,也就是線上的Team Foundation Server (TFS)版本,由微軟運營,提供雲端的開發管理能力。VSO上主要包括以下功能:

  • 工作項管理:工作項代表在開發過程中需要跟蹤的各種需求,任務,測試,反饋,Bug,部署等工作事項。可以理解為一個工單系統。每個工作項有一個獨立的型別,代表以上某一類的工作事項,通過查詢(列表)來訪問和管理。
  • 流程管理:每個工作項都配備一定的工作流,由工作項的狀態及轉換來進行控制,配合一定的許可權管理,可以幫助我們組織這些工作流程。按照不同團隊的工作模式,提供敏捷,Scrum和CMMI三種不同的模版可供使用。
  • 原始碼管理:提供程式碼的儲存,變更跟蹤,比較,分支合併和IDE整合能力。支援集中式(CVCS,TFSVC)和分散式(DVCS,Git)兩種不同模式的管理方式。也對程式碼評審提供了支援。
  • 測試管理:支援測試計劃,測試用例,測試執行,自動化測試和壓力測試支援。
  • 構建管理:提供自動化的程式碼編譯,自動化測試,打包和部署能力。
  • 部署管理:提供目標環境的編排,串接和稽核能力;同時支援針對雲端和本地的環境部署能力。
  • 第三方系統整合:通過REST API和Service Hook提供與第三方系統的互動能力。
  • 監控和分析:提供應用執行情況,錯誤收集和使用者行為分析能力(這個功能已經轉移到了Azure中)。

以上可以看到,這些功能基本上涵蓋了我們在開發過程中需要的所有功能。另外,VSO還對主流的IDE提供了很好的整合,如 Visual Studio和Eclipse。

跨平臺支援

對於Visual Studio的整合當然是毋庸置疑的,所以以下我僅列出對Eclipse的Java專案支援

你可以看到,使用Team Explorer Everywhere (TEE) (點選下載)外掛,你可以使用Eclipse連線到VSO的專案,使用Git程式碼庫,訪問工作項,也可以配置雲端的自動化編譯和打包。

具體操作演示大家可以參考這段視訊:
http://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/219

對於使用Mac進行iOS開發的同學來說,你也可以使用XCode裡面所提供的Git整合,來配合VSO進行原始碼管理,具體操作請看這裡:
https://www.visualstudio.com/en-us/get-started/share-your-xcode-projects-vs.aspx

後續我也會單獨對這些功能錄製一些視訊供大家學習。

敏捷開發支援

敏捷開發已經是軟體開發行業不可逆轉的趨勢,在VSO也對敏捷開發提供了很好的支援。比如下面的Kanban和Sprint白斑的支援。

這是我用來規劃本部落格內容和後臺開發的Kanban。

這是之前的工作項跟蹤出來的累計流圖

這是本部落格當前迭代的Sprint白板(你可以看到當前這篇部落格正處於進行中狀態)

當然,以上只是VSO中對於敏捷開發支援的冰山一角,後續我會在專門介紹ALM的文章中詳細介紹。

在本篇部落格的視訊中,我演示瞭如何將Azure中的WordPress站點的後臺程式碼推送到VSO的Git程式碼庫中,並和相關的任務進行關聯。這樣我們就可以在開發過程中使用Azure中的線上IDE作為開發環境,使用VSO作為開發平臺。

下圖中你可以看到在過去的2周我所進行的改動都已經記錄在了VSO的程式碼庫歷史紀錄中:

下圖中你可以看到我在配置多站點支援時所作的改動,與任務進行了關聯,同時可以直接進行程式碼評審意見的新增:

免費的雲端開發平臺

希望本文可以幫助你對Visual Studio Online有初步的認識,當然最好的方式仍然是立即註冊一個賬號。對於獨立開發者和小於5個人的開發團隊,你可以完全免費的使用VSO所提供的所有功能,對專案數量,程式碼量,工作項數量沒有任何限制;如果你希望讓一些專案相關成員也可以看到你團隊的進展,可以將他們新增為Stakeholder賬號,這種賬號沒有數量限制,可以任意新增多個,只要他們不訪問程式碼庫即可。

點選下圖即可開始註冊 http://www.visualstudio.com

在下一節(4.2)中,我講介紹如何將VSO上面的內容和你本地的開發環境進行整合,雖然我們可以完全在雲端完成所有的開發工作,但如果你喜歡使用Visual Studio, Sublime,Notepad++或者任何其他的編輯器/IDE,那麼一個本地的環境仍然是很有用的。

歡迎關注本部落格微信訂閱號 anb-io。每週推送內容,有技術也有生活,和你一起做一個有情懷的程式猿。

相關文章