[Accelerate State of DevOps 2021 快速摘要]
找一些自己有興趣的地方, 快速用 Google 翻譯一下
主要發現
1. 表現最好的人正在成長並繼續提高標準
在我們的研究中,優秀的執行者現在佔團隊的 26%,並且縮短了他們對生產變更的準備時間。該行業繼續加速發展,團隊從中看到了有意義的好處。
2. SRE 和 DevOps 是互補的理念
利用我們的站點可靠性工程 (SRE) 朋友概述的現代運營實踐的團隊報告了更高的運營績效。優先考慮交付和卓越運營的團隊報告了最高的組織績效。
3. 越來越多的團隊正在利用雲,並從中看到了顯著的好處
團隊繼續將工作負載轉移到雲中,而那些利用雲的所有五種功能的團隊會看到軟件交付和運營 (SDO) 性能以及組織性能的提高。多雲的採用也在增加,因此團隊可以利用每個提供商的獨特功能。
4. 安全的軟件供應鍊是必不可少的,也是驅動性能的驅動因素
鑑於近年來惡意攻擊的顯著增加,組織必須從被動實踐轉變為主動和診斷措施。在整個軟件供應鏈中集成安全實踐的團隊快速、可靠和安全地交付軟件。
5. 良好的文檔是成功實施 DevOps 功能的基礎
我們第一次測量了有助於這種質量的內部文檔和實踐的質量。擁有高質量文檔的團隊能夠更好地實施技術實踐並整體表現得更好。
6. 在充滿挑戰的情況下,積極的團隊文化可以減輕倦怠
團隊文化對團隊交付軟件和實現或超越組織目標的能力有很大影響。在 COVID-19 大流行期間,具有生成性 1,2 文化的包容性團隊經歷較少的倦怠。
=========================================================
Technical DevOps capabilities
我們的研究表明,通過採用持續交付進行 DevOps 轉型的組織更有可能擁有高質量、低風險和具有成本效益的流程。
具體而言,我們衡量了以下技術實踐:
• 鬆散耦合架構
• 基於主幹的開發
• 持續測試
• 持續集成
• 使用開源技術
• 監控和可觀察性實踐
• 數據庫更改管理
• 部署自動化
我們發現,雖然所有這些實踐都改進了持續交付,但鬆散耦合的架構和持續測試的影響最大。
例如,今年我們發現,達到可靠性目標的精英執行者採用松耦合架構的可能性是低績效同行的三倍。
松耦合架構 (Loosely coupled architecture)
我們的研究繼續表明,您可以通過努力減少服務和團隊之間的細粒度依賴關係來提高 IT 性能。事實上,這是成功持續交付的最強預測因素之一。使用鬆散耦合的架構,團隊可以相互獨立地擴展、失敗、測試和部署。團隊可以按照自己的節奏前進,小批量工作,減少技術債務,並更快地從失敗中恢復。
持續測試和持續集成
與我們前幾年的發現類似,我們表明持續測試是成功持續交付的有力預測因素。達到可靠性目標的精英執行者利用持續測試的可能性是其 3.7 倍。通過在整個交付過程中結合早期和頻繁的測試,測試人員與開發人員在整個過程中一起工作,團隊可以更快地迭代和更改他們的產品、服務或應用程序。您可以使用此反饋循環為您的客戶提供價值,同時還可以輕鬆整合自動化測試和持續集成等實踐。
持續集成還改進了持續交付。達到可靠性目標的精英執行者利用持續集成的可能性是其 5.8 倍。在持續集成中,每次提交都會觸發軟件的構建並運行一系列自動化測試,這些測試會在幾分鐘內提供反饋。通過持續集成,您可以減少成功集成所需的手動和通常複雜的協調。
持續集成,由 Kent Beck 和它起源的極限編程社區定義,還包括基於主幹的開發實踐,接下來討論。
基於主幹的開發
我們的研究一致表明,高績效組織更有可能實施基於主幹的開發,其中開發人員小批量工作並經常將他們的工作合併到共享主幹中。事實上,達到可靠性目標的精英執行者使用基於主幹開發的可能性是其 2.3 倍。低績效者更有可能使用長期存在的分支並延遲合併。
團隊應該每天至少合併他們的工作一次——如果可能的話,一天多次。基於Trunk的開發與持續集成密切相關,所以你應該同時實現這兩種技術實踐,因為它們一起使用時影響更大。
部署自動化
在理想的工作環境中,計算機執行重複性任務,而人類專注於解決問題。實施部署自動化可幫助您的團隊更接近此目標。當您以自動化方式將軟件從測試轉移到生產時,您可以通過實現更快、更高效的部署來縮短交付週期。
您還可以降低部署錯誤的可能性,這在手動部署中更為常見。當您的團隊使用部署自動化時,他們會立即收到反饋,這可以幫助您以更快的速度改善您的服務或產品。雖然您不必同時實施持續測試、持續集成和自動化部署,但當您將這三種實踐結合使用時,您可能會看到更大的改進。
數據庫變更管理
通過版本控制跟踪更改是編寫和維護代碼以及管理數據庫的關鍵部分。我們的研究發現,與表現不佳的同行相比,達到可靠性目標的精英執行者進行數據庫變更管理的可能性要高 3.4 倍。此外,成功進行數據庫變更管理的關鍵是所有相關團隊之間的協作、溝通和透明度。雖然您可以從特定的實施方法中進行選擇,但我們建議,無論何時您需要對數據庫進行更改,團隊都應在更新數據庫之前聚在一起並審查更改。
監控和可觀察性
與前幾年一樣,我們發現監控和可觀察性實踐支持持續交付。成功實現可靠性目標的精英執行者的可能性是其 4.1 倍
擁有將可觀察性納入整體系統健康狀況的解決方案。可觀察性實踐讓您的團隊更好地了解您的系統,從而減少識別和解決問題所需的時間。我們的研究還表明,具有良好可觀察性實踐的團隊會花更多的時間進行編碼。對這一發現的一種可能解釋是,實施可觀察性實踐有助於將開發人員的時間從尋找問題的原因轉移到故障排除並最終回到編碼上。
開源技術
許多開發人員已經利用開源技術,他們對這些工具的熟悉是組織的優勢。閉源技術的一個主要弱點是它們限制了您將知識傳入和傳出組織的能力。例如,您不能聘請已經熟悉您組織工具的人,開發人員也不能將他們積累的知識轉移到其他組織。相比之下,大多數開源技術都有一個社區,開發人員可以使用它來提供支持。開源技術具有更廣泛的可訪問性、相對較低的成本和可定制性。達到可靠性目標的精英執行者利用開源技術的可能性是其 2.4 倍。
我們建議您在實施 DevOps 轉型時轉向使用更多開源軟件。
source: https://cloud.google.com/devops
極限編程 在 91 敏捷開發之路 Facebook 的最佳貼文
Ron Jeffries 的提醒,大家在以 scrum 進行軟體產品開發時,要避免本末倒置、倒行逆施。
“When a team does not have the necessary and less than obvious technical skills to produce a shippable Scrum Increment week in and week out, the Scrum process almost inevitably goes dark.”
如果你是工程人員,更建議你先從 極限編程(extreme programming) 著手。
事實上我們看過這麼多的客戶,極少看到 agile/scrum 落實內化很好,但極限編程跟人員的工程技能低落的。
大部分順利的路,是從極限編程做得不錯,再引入 scrum 的。可以參考我自己的 scrum 序章:https://tdd.best/blog/my-beginning-of-scrum/
也有一種很特別的例子,是 agile/scrum + XP 併行推進的,這個比較考驗大家對目標的認同,對相同方向上的施力,而且一開始就認知自己組織內可能各方面能力都需要提升,才能在這持續改善的路上持續學習,知道這條路本來就充滿荊棘挫折,但只要我們能越來越好,就總比之前好上不少。
Ron Jeffries 是誰:https://en.wikipedia.org/wiki/Ron_Jeffries
極限編程 三大頭之一,敏捷宣言 17個簽署人之一,同時也是 Scrum Alliance 的 CST 培訓師。
在我們多天的 scrum 相關培訓中,通常就會有一半以上是實際的開發協作過程。
--
最近一年也讓我試著換另外一個角度來看,
「改善比較容易,還是加班比較容易?」
「學 scrum 比較容易,還是學單元測試、重構、TDD 比較容易?」
最直接的方式,做個調查,多少公司以 scrum 方式進行開發,而多少公司內有落實 unit test 與持續重構。這個比例拉出來,就不意外為什麼大部分看到的都是 Dark Scrum 了。
開發人員總是訕笑著 PM 永遠都給著不合理的時程,然而他們也總是以「沒有時間」當藉口來掩飾自己技能上的不足。
如果你是在開發軟體產品,那整體就是 領域(產品) x 協作(溝通) x 開發 (交付) ,而且真正做東西出來的核心,還是開發交付的部份。
這一塊夠扎實,即使是瀑布,也可以有一定的成績。
極限編程 在 91 敏捷開發之路 Facebook 的最佳解答
把前兩天關於 「scrum master 是否要懂技術」的討論串,讓我回想起我一開始是怎麼以 scrum 來進行產品開發的過程,整理成比較好閱讀的 blog 文章,分享給大家,文章摘要內容如下。
我在 Scrum Team 裡面的工作:
➀ 幫助 PO 跟 stakeholder 的交流
➁ 監控線上營運與 bug 分析
➂ 用來應付重要且緊急插件的機動戰力
➃ 架構、決策、跨部門協作、基礎建設、技術研究
➄ 讓工作流更順暢,尤其是 PO 身上的工作負擔
※ 在 scrum 之前,我們在 extreme programming 的工程實踐、基礎建設,以及團隊技能的提昇(帶狀教育訓練)、線上異常收集與監控,我們都投入了不少心力,而這些才是產品開發技術相關的本質。Scrum 只是我們用來幫助協作、自組織跟持續改善的入門磚。
文中也提及了我們當時對 bug/issue 的作法,以及 7x24 服務的線上異常處理應該要做什麼程度才算達標。
全文內容請參考:https://tdd.best/blog/my-beginning-of-scrum/