关于《在Windows与.NET平台上的持续交付实践》的问答录
《在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
總結
以上是生活随笔為你收集整理的关于《在Windows与.NET平台上的持续交付实践》的问答录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker介绍与安装使用(一)
- 下一篇: Python脚本备份数据库