關於《在Windows與.NET平臺上的持續交付實踐》的問答錄

weixin_33766168發表於2016-05-08

《在Windows與.NET平臺上的持續交付實踐》(Continuous Delivery with Windows and .Net)(免費下載)是由Matthew Skelton與Chris O'Dell所編著的一本簡短的書籍。對於在Windows與.NET環境中工作的開發者而言,本書可以說是由Jez Humble與Dave Farley所編著的《持續交付》(Continuous Delivery)這本書的一本非常實用的補充讀物。

\\

本書在第一章及最後幾章介紹了持續交付的理論基礎以及它對組織的結構所帶來的影響,但本書的主體部分還是專注於介紹各種工具,通過這些工具實現成功的持續交付實踐。

\\

事實上,可以說本書最突出的優點就是為讀者提供了一個一站式的資源集,使讀者能夠了解各種適合在Windows平臺上使用的工具。正如本書的作者所指出的那樣,“本書可以作為由Jez與Dave所編著的那本著作的補遺,目的是鼓勵更多在Windows及.NET平臺上進行工作的團隊實施持續交付實踐。”本書的第二至第六章涵蓋了持續交付中必不可缺的各種工程實踐,包括:版本控制、持續整合、部署管道、監控及基礎設施的自動化。

\\

在本書的各個部分,你將看到真實世界使用者案例的實際感想,這讓本書的各種推薦實踐變得更有說服力。這些案例包括LateRooms.com通過部署管道的實施實現了高達700倍的部署週期改進,以及JustGiving用於批發業務的基礎設施自動化使其能夠滿足峰值時期的需求。

\\

第二章介紹了各種版本控制工具與實踐。讀者對於Windows世界中最常見的工具,例如Git或TFS將有一個初步的瞭解。作者指出了一些方式,可避免長期存在的分支,以及持續整合實踐中的某些令人深惡痛絕的做法,例如特性的開關。這一章的最後對於包管理提出了一些建議,與Linux平臺相比,這方面的實踐對於Windows平臺來說還比較新穎。第三章則為持續整合與構建自動化工具列舉了一份非常詳盡的清單,同時也提出了一些特定於.NET平臺的建議,幫助讀者設定.NET專案的結構(例如:“為每個元件或服務建立一個.sln檔案”)。第四章的重點在於部署管道,其中描述了一些常見的部署技術,例如藍/綠部署和金絲雀部署、解耦檔案的交付以及特性的啟用,並介紹瞭如何實現資料庫變更的自動化以及資料遷移。接下來,本書專門用一章的內容介紹了監控方面的內容,作者首先鼓勵讀者不要將監控工作單純地理解為對效能計數器結果的收集(儘管在Windows平臺上這是獲取各項指標最常見的做法),並採用其他監控與應用效能管理方式,實現日誌的聚合,讓開發者能夠對指標進行收集。最後,作者對Windows平臺上的基礎設施自動化模式以及最佳實踐進行了描述,與Linux平臺上的基礎設施自動化相比,讀者仍然需要進行心態以及實現方式方面的轉變。

\\

InfoQ與本書的作者進行了一次訪談,希望從訪談中更多地瞭解在Windows與.NET平臺上實施持續交付實踐的現狀。

\\

InfoQ:你們為什麼覺得有必要編寫這樣一本書呢?

\\
\

Chris O'Dell:有一種已經被普遍接受的觀點,即持續交付只適用於Linux平臺,而在.NET平臺上無法支援這種開發實踐,我希望能夠打破這種偏見。沒錯,在.NET平臺上實現CD實踐曾經是一個困難的任務,但時代已經不同了,微軟已經作出了巨大的改進以擁抱CD。

\\

Matthew Skelton:我編寫本書有兩方面的原因:首先,當Jez Humble與Dave Farley在2010年推出了《持續交付》這本著作時,其中描述的許多模式在Windows與.NET平臺下都是極難實現的。自那之後,Windows與.NET平臺上的自動化與API特性,以及相關的工具都已得到了極大地改進。其次,在過於幾年中,我所合作過的許多客戶都在使用Windows與.NET平臺,因此,我也留意到了對於使用這些技術的許多組織而言顯得比較常見的一些做法。通過編寫這本書,讓我能夠有效地將從中學到的思想以及見解組織在一起。

\
\\

InfoQ:你們希望讀者從本書中能夠得到哪些收穫?

\\
\

Chris O'Dell:希望本書能夠推動讀者開始嘗試在Windows與.NET技術棧上實施持續交付實踐。

\\

Matthew Skelton:在2016這個時間點上,在Windows與.NET平臺上實現持續交付不僅僅是能夠做到的,並且實際上是非常便捷的,至少從技術角度來說是如此!

\
\\

InfoQ:長期以來,Windows與.NET環境在持續交付與DevOps工具和支援方面始終落後於Linux世界。這方面的差距如今是否已經完全消失,還是說目前仍有某些領域顯得不夠成熟?

\\
\

Chris O'Dell:對於ASP.NET與.NET Framework的最近幾次修訂引入了一些架構上的變化,它讓web應用的部署變得簡單許多,因為所有必需的包都可以包含在所部署的檔案中。隨著.NET\\
Core的出現,部署將變得更為方便,因為.NET與Windows之間不再存在著必然的繫結了。

\\

Matthew Skelton:最大的不足之處是對於容器的支援。自從我們編寫本書(自2015年8月起)以來,微軟又取得了幾項重大的進展,包括可執行在Linux上的SQL Server!,在Windows平臺上對於Docker的支援,以及Windows Nano等技術的出現。能夠在Windows這個舞臺上看到這麼多創新的舉措真是太好了,很遺憾我們無法將這些東西加入本書,否則我們永遠也完不成這本書了。

\
\\

InfoQ:從另一個角度來看,你們認為有哪些Windows與.NET的功能是Linux平臺所不具備的嗎?

\\
\

Chris O'Dell:恐怕我無法很自信地回答你這個問題,因為我在Linux平臺上所投入的時間沒有在Windows平臺上那麼多。

\\

Matthew Skelton:我相信.NET是一個優秀的執行時,因此看到像OSX與Linux這些非Windows的作業系統也能夠通過.NET Core支援這個執行時真是太棒了。而在Visual Studio Code上實現的多平臺支援也是個好訊息,因為每個人都將能夠開始利用Visual Studio的豐富特性。

\
\\

InfoQ:Windows與Linux平臺上的運維文化曾經具有極大的不同,這也反映出不同作業系統之間的不同哲學。在你看來,Windows上的文化對於持續交付的啟動是否會帶來一系列不同的挑戰?

\\
\

Chris O'Dell:雖然我對於Linux沒有足夠的經驗以進行完整地比較,但我認為結論很可能如此。

\\

雖然許多公司內的CD實現都能夠應用Windows與.NET開發棧,但以我所見,在Linux伺服器上的實施還提供了監控、指標以及日誌記錄等方面的工具。

\\

Matthew Skelton:在某些組織中依然存在著傳統的只用Windows(或只用微軟)技術的文化,但我們已經開始看到一些更偏向實用主義的做法出現,人們開始鑽研其他方面的技術,尤其是在輔助性工具這一領域(包括日誌記錄、指標分析以及監控等等)。

\
\\

InfoQ:某些組織同時具備Linux與Windows這兩個平臺上的生態系統,對他們來說,實施持續交付的最佳方式是什麼?是應當將他們的實現儘量統一起來,還是應當分別看待這兩個不同的生態系統呢?

\\
\

Chris O'Dell:這取決於他們選擇某一種特定實現的原因,以及為此提供持續性支援的能力,然後再選擇對他們來說最佳的實現。

\\

Matthew Skelton:你不能簡單地說某種方式是“更好”的,這種說法並不恰當。重點在於,團隊需要找到合適的工具,並有足夠的時間去鑽研及學習(通過使用指標及日誌記錄),才能瞭解哪種方式是他們是最合適的。

\
\\

InfoQ:在你看來,持續交付在Windows上的短期、中期以及長期發展中的哪些方面是最令你感到興奮的呢?

\\
\

Chris O'Dell:.Net Core將成為.NET平臺上的遊戲改變者,.NET Framework與Windows平臺的分離使.NET平臺能夠招攬大量新開發者的青睞,並實現各種不同的部署策略。此外,由於我主要使用雲服務,因此我也十分期待Windows Nano的出現。它將減少映象的資源佔用,希望這能夠提高映象的設定速度。

\\

Matthew Skelton:對容器的支援以及Windows Nano等輕量級host的出現將為使用Windows平臺的團隊帶來大量豐富的選擇。很明顯,我們也將看到Azure平臺上的持續創新。我也期待像AppVeyor以及Octopus等工具能夠進一步地進行演變,以支援Windows、.NET與Azure平臺上的更多特性。

\
\\

檢視英文原文Q\u0026amp;A on Continuous Delivery with Windows and .Net

相關文章