西門子醫療如何同步提高軟件交付的速度和穩定性

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在本文中,我們關注的是西門子醫療數字健康的軟件交付過程。這一過程需要遵循醫療行業的嚴格規定。我們展示了我們將這一過程向速度和穩定轉型的歷程。這兩項指標在轉型過程中同時得到改善,證實了《加速》一書中的研究成果。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"領域"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"西門子醫療是一家醫療技術公司,致力於推動創新,幫助人類活得更加健康長壽。在西門子醫療內部,團隊協作的數字健康平臺是醫療機構數字化轉型的促成者,目標是將數據轉化爲成本節約和更好的護理。該平臺爲操作、臨牀和共享決策支持提供了易於操作的解決方案。它爲將數字解決方案集成到臨牀常規提供了一個安全且符合法規的環境,促進了跨部門和跨機構的互操作性。此外,該平臺還提供了用於數據驅動決策支持的途徑和人工智能應用程序,它們出自於西門子醫療和策展合作伙伴。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"迄今爲止,已有來自75個國家的6,500多家機構和32,000個系統連接到該平臺。這使得可以在各個機構訪問超過3000萬的患者記錄。該平臺對SaaS和PaaS合作伙伴都是開放的。SaaS合作伙伴通過團隊合作數字市場提供他們現有的應用程序。PaaS合作伙伴利用團隊協作API開發新的應用程序和服務。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這個團隊合作平臺是基於雲的。它構建在微軟Azure之上,在設計和默認情況下都具有隱私性和安全性。軟件交付的速度和穩定性是團隊協作的核心。2015年,速度和穩定性都不夠。有了這一認識,在同一年開始了軟件交付過程的轉型。轉型的目標是使軟件交付更快、更穩定。爲了實現這一目標,多年來實施了大量的人員、流程、技術和法規變革。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"轉型路線圖"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作爲轉型過程的一部分,引入了大量的新方法:HDD、BDD、TDD、用戶故事映射、結對編程、獨立的部署管道、測試DSL、SRE和看板。在InfoQ之前的一篇文章“"},{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/articles\/continuous-delivery-teamplay\/","title":"","type":null},"content":[{"type":"text","text":"西門子醫療在團隊協作中採用持續交付"}]},{"type":"text","text":"”中對此進行了詳細描述。方法的採用和“粘性”因團隊而異。下圖描繪了轉型隨着時間推移的主要里程碑。"}]},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/09\/67\/09393e202b313b669cd7e179ac964e67.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2015年,改革的必要性已經變得顯而易見。作爲企業中的一個新興平臺,我們基於全企業範圍的硬件和軟件產品的法規性質量管理體系(QMS)交付,我們面臨着無法滿足的產品速度和穩定性需求的挑戰。當時,產品所有者正在打入數字服務市場,這對公司來說是全新的。對於哪些服務會與用戶產生共鳴,用戶願意爲哪些服務付費,以及哪些功能集最有價值,我們一無所知。因此,將想法轉化爲軟件的快速實驗需求很高。每兩週或每個月發佈一次軟件,並立即按需進行熱修復,將受到產品所有者的歡迎。這與我們所要做的軟件交付相去甚遠。很明顯,質量管理體系的變化需要監管部門的大量專業知識。我們開始了一項使質量管理體系更加精簡的長期計劃。在研發內部,我們更加重視自動化測試了。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2016年,我們發起了BDD運動。在自動化測試改進時將它作爲一部分完成了。它對需求規範、自動化測試、測試實現、測試報告和所有角色測試結果的可理解性都有廣泛的影響。在過去,每個需求都很大,BDD的引入迫使產品所有者將需求分解成很小的用戶故事。每個用戶故事開始被整個團隊進一步分解爲一組小型BDD場景(使用Given \/ When \/ Then語句的示例說明)。團隊歡迎這些更改,因爲它們解決了長期開發人員的擔憂,即需求太大、太龐大,無法在短時間內實現。較小的需求促成較小的自動化測試。較小的自動化測試帶來更穩定的自動化。儘管有這些重大和必要的改進,但總體上的轉型速度相當緩慢。在QMS變更方面,我們做了一個分析,即在仍然保持所需的法規遵從性的同時,如何減少角色、可交付物、活動和工作流中斷的數量。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2017年,我們引進了持續交付顧問,加快轉型。來自Continuous Delivery Ltd.的Dave Farley爲管理人員、產品所有者、架構師和開發人員提供戰略諮詢以及培訓。來自Equal Experts Ltd.的許多顧問與我們在各地的產品所有者、建築師和開發人員一起工作,使用許多新方法和新技術共同交付功能。具體來說,諮詢活動期間重點應用了BDD、TDD、用戶故事映射和結對編程。通過與我們的團隊合作,顧問向我們的開發人員、架構師和產品所有者展示瞭如何以新的方式工作,實現獨立的部署管道,將可觀察性落實到位,等等。此外,我們還邀請了Johner Institute GmbH的醫療QMS顧問,討論了我們的QMS調整分析,確認可以在保持法規遵從性的同時進行這些調整。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2018年,我們繼續與顧問們合作,更深入地採用持續交付的工作方式。這一次不是要引入新的方法,而是要在可持續的基礎上,將之前引入的方法嵌入到團隊和團隊成員的日常生活中。日本武術的精神概念守-破-離描述三個階段的學習道路上掌握(守,跟隨大師,破,學習其他大師和優化實踐,離,想出自己的技術),我們的轉型是從守到破的學習階段。我們的目標是嵌入新的工作方式,這樣就不再需要顧問的參與來支持新的實踐。我們達成了一個階段,持續交付成爲所有新的數字健康產品的標準。在轉型的監管方面,我們將基於BDD的需求工程正式引入了監管的QMS。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2019年,我們發佈了第一個QMS版本,該版本使團隊能夠以持續交付的方式工作。同時發佈了質量管理體系的工具。對於需求工程,我們使用驗證計劃和相關測試,以正式的方式驗證了產品“Azure DevOps的現代需求”。它簡化了需求基線、需求評審過程和需求的可追溯性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"出於監管報告的目的,我們實現了自己的工具,稱爲“QTracer”。此外,使用驗證計劃和相關測試以正式的方式對該工具進行驗證。新的QMS和相關工具的組合使團隊能夠更有效地製作符合法規的發佈,同時減少法規性開銷。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"交付的穩定性是我們觀察到的轉型的整體影響的第一個跡象。與前一年相比,今年所有部署的生產部署失敗率下降了一半。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2020年,轉型的突破成爲可能。與前一年相比,今年所有部署的生產部署前置時間減少了3\/5。與此同時,與前一年相比,今年所有部署的生產部署失敗率下降了一半。更多細節和相應的圖表可以在後面的“"},{"type":"link","attrs":{"href":"https:\/\/docs.google.com\/document\/d\/1H6qQOD-p4u981kVwd8bBalGUcD6YKZmdrkzTng8w1sM\/edit#heading=h.ve8ss7954tp8","title":"","type":null},"content":[{"type":"text","text":"速度和穩定性一起提高"}]},{"type":"text","text":"”小節中找到。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在2021年,軟件交付的速度和穩定性的聯同改進仍在繼續。到目前爲止,今年完成的所有部署的生產部署前置時間與前一年相比減少了1\/2。與此同時,與前一年相比,今年迄今爲止所有部署的生產部署失敗率下降了2\/5。更多細節和相應的圖表可以在後面的“"},{"type":"link","attrs":{"href":"https:\/\/docs.google.com\/document\/d\/1H6qQOD-p4u981kVwd8bBalGUcD6YKZmdrkzTng8w1sM\/edit#heading=h.ve8ss7954tp8","title":"","type":null},"content":[{"type":"text","text":"速度和穩定性一起提高"}]},{"type":"text","text":"”小節中找到。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"轉型易勝點"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"儘管轉型是一個漫長而艱苦的過程,但在過程中也有點可以輕鬆取得勝利,詳見下表:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
改變解釋
從Scrum到看板流程在轉型之前,我們的團隊被要求按照Scrum流程工作。在轉型過程中的某個時刻,團隊可以選擇Scrum或看板流程。在幾周內,我們的大多數團隊都自發地轉向了看板。團隊享受看板過程提供的自由:即時待定項梳理,當待定項的工作完成時的即時功能演示,以及產品所有者對待定項的任何時間優先級排序(除了當前正在工作的待定項)。我們的大多數團隊至今仍在使用看板。
從大需求到使用用戶故事映射的用戶故事識別開發人員長期關注的一個問題是,團隊的需求太大了。它們需要很長時間來實現,並且很難測試。用戶描述映射的引入解決了這個問題。它爲團隊提供了一種結構化的方法,將大的需求分解成小的用戶故事。此外,它使所有的團隊成員都成爲用戶旅程的一部分,以及發佈計劃,並從一開始就進行討論。團隊歡迎這種方法,並逐漸掌握了它。今天,用戶故事映射是團隊協作中分解需求的默認方法。
從大需求到BDD場景規格說明書(產品所有者)使用用戶場景映射將需求分解爲用戶場景。可以使用BDD場景進一步細分用戶場景。這種改變受到了產品所有者的歡迎,因爲它允許他們通過示例向開發人員傳達他們想要實現的內容。這是迄今爲止團隊合作的標準做法。整個團隊參與BDD場景的定義是當前仍然存在的挑戰。這對於從不同角度獲得一組場景非常重要:功能、操作、安全、性能、數據保護、監管等。場景集越豐富,團隊對用戶場景的理解就越深,測試覆蓋範圍也就越大,從而爲用戶帶來更好的質量。
從部署多個產品的巨大管道到每個產品都有一個獨立的部署管道的想法當在團隊協作中爲持續交付制定戰略時,我們設想每個產品都是獨立發佈的。因此,爲每個產品實現一個獨立的部署管道是必要的。這個想法很快就流行了起來,因爲每天只部署一次所有產品的巨大管道給團隊帶來了很多麻煩。能夠獨立部署成爲組織中的一項運動。然而,由於團隊缺乏實現獨立部署管道的知識和經驗,這個想法的實現具有挑戰性。這需要時間的積累。如今,所有新產品從一開始就配備了一個獨立的部署管道。
從知識共享會議到使用結對作爲共享知識的手段在轉型過程中的某個時刻,團隊可以自由地進行訓練,嘗試結對編程。這種做法逐漸流行起來。如今,結對是共享開發人員知識、讓新開發人員入職以及實現系統中具有挑戰性的部分的主要方式。這種做法還沒有成爲編程的通用方式。"}}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"變革的主要挑戰"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在轉型期間,我們遇到、減輕或解決了一些主要的挑戰,詳見下表:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
挑戰解釋緩解
改變相關的質量管理體系(QMS)企業的法規性質量管理體系是基於來自所有相關地區的成文法、法規和審計結果的變化而逐年形成的。這導致質量管理體系中包含了團隊所要滿足的那些難以追溯起源的需求。此外,任何質量管理體系的變更都只能通過對原因進行審覈證明的解釋來完成,並證明所產生的過程以相同的方式履行了法律法規。綜上所述,這些方面導致了質量管理體系管理者不願意進行質量管理體系的變更,因爲他們害怕使組織暴露於新的審計調查。我們嘗試了以下方法來緩解這一挑戰: 帶領質量管理體系經理參觀在受監管行業中仍實施持續交付的公司聘請在醫療器械法規方面有經驗的顧問,與我們的質量管理體系經理共同設計質量管理體系變革對質量管理系統經理進行持續交付原則和方法的教育
改變人們的心態這種轉型需要組織中所有角色對所有軟件的交付進行徹底的重新思考。由於許多人、團隊和團體同時改變了許多技術、組織和流程等相關內容,因此要避免變更不透明、模糊和晦澀,這是項很有挑戰性的挑戰。我們嘗試了以下方法來緩解這一挑戰: 爲變更提供高層次的路線圖解釋變化的好處和所需的投資與選定的人員進行一對一地交流爲選定的人員提供指導
展示轉型快速取得的勝利那些沒有積極參與正在進行的變革(例如提高交付速度)的人,他們所認爲的變革結果需要很長時間才能實現,才能看的到我們嘗試了以下方法來緩解這項挑戰: 定期向領導彙報,解釋所做的改變和取得的成果在公司範圍內的活動上展示正在進行的轉型和已經取得的收益
一邊做事一邊轉型在轉型期間,企業對新特性的需求一直居高不下。在新特性實現、轉型活動和已有特性的運維中分解開發能力變得非常具有挑戰性。因此,轉型速度會相當緩慢。我們嘗試了以下方法來緩解挑戰: 爲團隊提供能力劃分的指導方針幫團隊理解在轉型上做投入將獲得的收益和好處
產品的架構解耦當轉型開始時,所有的團隊協作產品在體系結構上是緊密耦合的。爲支持獨立的產品發佈,需要做必要的架構解耦,這需要很長的時間。針對新特性的架構解耦的優先級一直是一個主要的挑戰。我們嘗試了以下方法來緩解這個挑戰: 將架構變更引入項目組合管理,在組織級別增加可視性向產品所有者解釋架構解耦以支持獨立產品發佈有什麼好處讓架構師瞭解必要的架構解耦、解耦的原因、執行它們的好處以及可以實現的結果當一個主要的架構分離完成時慶祝成功促進團隊之間的知識共享,使他們能夠更好地估算重新構建服務所需的時間
使TDD成爲默認的軟件開發方法儘管TDD是一種持續交付的基本方法,但是使TDD成爲默認的軟件開發方法卻是一個主要的挑戰。 引入TDD的是有前途的。與有TDD經驗的顧問一起工作是富有成果的。然而,隨着時間的推移,應用TDD的團隊和個人的數量減少了。我們沒有設法讓TDD在團隊正在進行的編程工作中得到實踐。我們嘗試了以下方法來緩解這項挑戰: 鼓勵團隊將TDD應用於新開發的代碼鼓勵團隊重構正在編寫的代碼,爲將來的TDD工作做好準備按需提供可供實踐操作的代碼類"}}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"總的來說,從定義上講,涉及人員、過程、技術、組織和法規變化的長期過程調整將具有挑戰性。一個有遠見有勇氣的領導是成長和保持勢頭的必要條件。在這個過程中,要不吝於展示和慶祝一次次的成功,這能極大地幫助人們保持旺盛的積極性,經受住新出現的挑戰。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於轉型的各個方面有大量的選項可供選擇,因此幾乎不可能對這個過程進行特別嚴密的計劃。一個可行的替代方案是,陳述轉型的高層次業務目標,並進行適當地量化。然後讓團隊定義中間裏程碑來探索他們實現目標的路徑。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"大變革的機會"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"儘管轉型是一個漫長而艱鉅的過程,但它抓住了重大機遇的關鍵,詳見下表。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
改變解釋
允許快速試驗商業想法在全新的數字健康市場中,人們對產品類別和特定產品的瞭解甚少。對於產品和服務的支付意願和有競爭力的價格點也是如此。在這種環境下,試驗商業想法是商業活動的中心。利用快速商業實驗探索市場的能力具有很大的競爭優勢。在醫療保健領域,這就轉變成了大約每兩週到每月發佈一次的產品需求。對於醫療設備軟件產品,只要產品的預期用途保持不變,在首次提交監管後每月發佈一次版本是可行的。對於非醫療設備軟件產品,而受嚴格的非醫療法規(如ISO 9001)監管的公司每2-4周發佈一次版本也是可行的。
將組織的文化轉變爲自發性文化在產品交付組織中,不同的小組和團隊之間需要進行高度的協作,以進行頻繁的發佈。這自然會導致組織文化朝着自發性的方向發生積極的變化。自發性文化是以績效爲導向的。它的特點是高度合作、風險分擔、不吝鼓勵、探究失敗等。當產品交付組織向更快的軟件發佈轉變時,可以有機地支持這些特性。《加速》一書中的研究發現,自發性文化可以推動更高的軟件交付和組織績效。
改變軟件交付的速度、穩定性和可靠性快速和穩定的軟件交付需要高效的過程,如需求工程、開發、測試、部署、法規文檔生成、發佈和運維。這不僅可以在團隊層面,也可以擴大到組織層面。有效地運維可以使產品實際迭代的可用時間最大化。"}}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"速度和穩定性相輔相成"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如前一章所示,在轉型過程中,速度和穩定性都得到了提高。在下面的圖片中可以看到速度和穩定性指標細節。"}]},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/97\/74\/97d3e8df56690703810705773262yy74.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從轉型多年的生產發佈提前期趨勢來看,在很長一段時間內,2016年至2019年,提前期沒有減少。相反,在2019年,儘管所有轉型都在做出努力,交付時間卻有所增加。然而,自2020年以來,交付提前期大幅下降:從2019年到2020年的交付提前期下降了超過3\/5,除此之外,從2020年到2021年的交貨期下降了1\/2。也就是說,自2019年以來,生產前置時間減少到了1\/5!"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"下圖顯示了經過多年改造後的生產部署失敗率趨勢。結果表明,在2016年至2018年的很長一段時間內,故障率並沒有下降。相反,在2018年,儘管所有的轉型都在進行努力,但它達到了歷史峯值。然而,自2019年以來,生產部署失敗率穩步下降:2018年至2019年爲1\/2,2019年至2020年爲1\/5,2020年至2021年爲2\/5。也就是說,自2018年以來,生產部署失敗減少到了1\/4!"}]},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/03\/47\/03a17f1811fdf4c74e5556be94f5f047.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"上面的兩張圖片表明,自2020年以來,軟件交付的速度和穩定性一直在同步提高。同時,生產部署前置時間和故障率也呈下降趨勢。也就是說,軟件交付速度越來越快,也越來越穩定。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於以下原因,只有在經過幾年的改造之後,速度和穩定性纔得到提高:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當轉型開始時,組織對持續交付方法還缺乏瞭解。爲了建立知識體系並得到一套適合組織並被組織接受的方法,需要惡補大量的知識、進行大量的實驗。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“一邊做事一邊轉型”:轉型的同時,還在同步實現着使用新技術的面向客戶的新特性。這是商業上的需要。特性實現佔用了開發很大一部分精力,留給轉型活動的並不多。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於轉型和特性開發活動之間都佔用開發的精力,諸如架構分離、創建每個團隊獨立部署的管道和測試重構等技術變革需要很長時間才能到位。"}]}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"印證《加速》一書中的研究成果"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由Nicole Forsgren、Jez Humble和Gene Kim撰寫的《加速——精益軟件和DevOps的科學:如何構建和擴展高效能的技術組織》一書介紹了基於對全球400多家公司的軟件交付的調查研究。Randy Shoup在他的演講“"},{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/news\/2019\/07\/speed-scale-wework\/","title":"","type":null},"content":[{"type":"text","text":"大規模快速發展"}]},{"type":"text","text":"”中用下面的兩張圖片簡要總結了這本書中的研究。"}]},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/84\/e1\/8409b392aa55ea4a10aabd96912a9ee1.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作爲研究的一部分,研究人員分析了兩類公司:高績效公司和低績效公司。在軟件交付速度方面,高績效的每天部署大約10次,交付時間不到一個小時。低績效的大約每月部署一次,準備時間大約爲6個月。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有趣的是,在這兩類之間並沒有很多公司。也就是說,接受調查的公司往往要麼表現出色,要麼表現欠佳。更有趣的是,根據上圖所示的交付速度,績效相同的公司在交付的穩定性方面也是相同的,如下圖所示:"}]},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/87\/4e\/87d38dbabd94c1c6e56febdb1765344e.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"高績效的生產部署幾乎從不失敗。即便是失敗了,不到一個小時就能恢復。另一方面,低績效的會有將近一半的生產部署失敗。生產部署失敗後恢復時間超過一天。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於大多數公司在速度和穩定性方面是相同的,因此可以得出結論,在軟件交付中,速度和穩定性是密不可分的。事實上,軟件交付的速度越快,它就變得越穩定。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這聽起來可能違反直覺。然而,《加速》一書中嚴謹的研究結果證明了這一點。在我們的軟件交付轉型過程中,我們可以直接看到交付的速度和穩定性是如何同時得到提高的。也就是說,我們的轉型確實可以印證《加速》的研究成果。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"轉型回顧"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對這次轉型進行回顧,可以加深以下經驗教訓。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":1,"normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","text":"這次轉型從一開始就不是以數據驅動的方式驅動的。只有在隨後的過程中,纔在組織和團隊層面制定了持續交付的速度和穩定性指標。我們建議從轉型一開始就制定這些指標。這可以根據"},{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/news\/2017\/09\/measure-continuous-delivery\/","title":"","type":null},"content":[{"type":"text","text":"Steve Smith"}]},{"type":"text","text":"的《"},{"type":"link","attrs":{"href":"https:\/\/leanpub.com\/measuringcontinuousdelivery","title":"","type":null},"content":[{"type":"text","text":"測量持續交付"}]},{"type":"text","text":"》一書來完成,該書詳細描述了部署管道所有階段的速度和穩定性指標的定義和實現。速度指標結構爲生產部署、提前時間和生產部署頻率。穩定性指標結構爲生產部署失敗和生產部署恢復時間。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"擁有組織和團隊層面的指標,可以使組織中的人就轉型所要實現的目標更快更深入地達成一致。此外,它使團隊能夠以數據驅動的方式設定自己的速度和穩定性中間目標。最重要的是,這些指標允許在整個組織中適當地應用"},{"type":"link","attrs":{"href":"http:\/\/www-personal.umich.edu\/~mrother\/The_Improvement_Kata.html","title":"","type":null},"content":[{"type":"text","text":"改進型"}]},{"type":"text","text":"工具,將持續改進作爲推動轉變的一般方式:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
步驟描述速度和穩定性指標的應用
1得到的方向表示爲長期的速度和穩定性目標
2把握現狀通過查看當前速度和穩定性指示值
3建立你的下一個目標條件表示爲下一組速度和穩定性目標
4通過實驗來達到這個目的進行技術、流程、組織等方面的變更,並使用速度和穩定性指標衡量變更的影響"}}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2.SRE的引入和總體的可操作性是在後期的改造中完成的。我們建議在轉型過程的早期迂迴完成這些方面。這滿足了在轉型過程中“構建,運行”的態度、過程和工具的成長,而不是在建立了持續交付之後被視爲另一個大的轉型步驟。此外,可靠性SRE指標可以定期用於改進型工具。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"例如,可以針對服務可用性佔比和時間建立可用性指示器,以便在不可用時重新建立可用性。可以在可用性指標下定義長期和中期目標,並不斷迭代。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"3.在以新方式工作方面,我們學到了,既向人們提供新方法的知識,又由熟練使用這些方法的人進行指導,是一種強有力的組合。也就是說,在爲人們分配學習時間時,僅僅提供學習材料或培訓是不足以改變習慣的。出於同樣的原因,僅僅提供接觸到教練的機會是不夠的,大家無法充分理解爲什麼要接受指導。所以,單靠指導也不能改變習慣。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"相比之下,往往在有經驗的教練的指導下,將最初的學習和長時間的應用相結合,纔會改變個人和團隊的習慣。最初的學習理解了應用新方法的潛在原因、好處和背景。隨後,與一位經驗豐富的教練一起應用新方法,通過一個頻繁而有力的反饋環,在小範圍內調整過程,將新方法融入到日常工作中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"4.通過在架構、測試、部署、法規遵從性、發佈和運維方面分離服務,可以減少生產部署的前置時間。隨着獨立服務數量的增加,需要一個輕量級的治理,以便集中維護組織範圍的最佳實踐、協議和規則,同時儘可能讓團隊保持獨立性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"建立治理可以受益,例如使用一個嚴格的平臺,將最重要的控制節點編成法典。這些活動應該是轉型的一部分,而不是在轉型顯露出成功跡象之後再做安排。通過這種方式,可以有機地開展必要的治理,從非常小的步驟開始,比如服務和環境的命名。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們在轉型的後期開始了治理活動,建議在構建第一個獨立服務時推廣該實踐。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"總結"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"加速軟件交付是一個長期的轉型過程。可以使用速度和穩定性目標有效地引導該過程,並使用相應的指標進行測量。暢銷書《加速》中的研究表明,速度和穩定性是相輔相成的。在此之後,這兩項措施應該同時改善。西門子醫療團隊數字健康平臺的軟件交付轉型印證了這本書中的研究。在轉型過程中,速度和穩定性都得到了提高。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"致謝"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"他們在推動西門子醫療團隊數字健康平臺軟件交付轉型中發揮了重要作用,我們表示感謝:Thomas Friese、Carsten Spies、David Schottlander、Fabio Giorgi、Frank Schneider、Frank Stanischewski、Philipp Guendisch等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此外,我們還要感謝以下持續交付顧問,他們在轉型過程中提供了無價的幫助:"},{"type":"link","attrs":{"href":"https:\/\/www.continuous-delivery.co.uk\/","title":"","type":null},"content":[{"type":"text","text":"持續交付有限公司"}]},{"type":"text","text":"的Dave Farley,以及來自"},{"type":"link","attrs":{"href":"https:\/\/www.equalexperts.com\/","title":"","type":null},"content":[{"type":"text","text":"Equal Experts有限公司"}]},{"type":"text","text":"的Neha Datt, Ryan Bayly, Marcel Britsch, Keerthana Jayaram, Louis Abel和其他許多人。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最後,感謝Akshith Rai維護了團隊中的持續交付指標。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"作者簡介:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Vladyslav Ukis"},{"type":"text","text":"博士畢業於德國埃爾蘭根-紐倫堡大學計算機科學專業,之後又畢業於英國曼徹斯特大學。畢業後加入西門子醫療,在軟件架構、企業架構、創新管理、公私雲計算、團隊管理、工程管理和數字化轉型領域工作。自2018年以來,他一直擔任西門子醫療團隊數字健康平臺和應用的軟件開發經理,推動持續交付和SRE轉型。自2021年以來,他還擔任所有西門子醫療數字健康產品的可靠性經理職務。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"原文鏈接:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/articles\/improving-speed-stability\/","title":"","type":null},"content":[{"type":"text","text":"Improving Speed and Stability of Software Delivery Simultaneously at Siemens Healthineers"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"譯者簡介:"},{"type":"text","text":" 冬雨,小小技術宅一枚,從事研發過程改進及質量改進方面的工作,關注編程、軟件工程、敏捷、DevOps、雲計算等領域,非常樂意將國外新鮮的IT資訊和深度技術文章翻譯分享給大家,已翻譯出版《深入敏捷測試》、《持續交付實戰》。"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章