日博:微軟的軟件工程現代化轉型

日博体育发布于 |  2020-06-04 01:43 |  浏览:54

現代軟件工程創造了一種文化、工具和實踐,專注于開發高質量、安全和功能豐富的軟件服務,日博体育以實現微軟的數字化轉型。微軟核心服務和工程(CSEO,前身為微軟內部IT,服務微軟內部客戶)團隊正在實施現代軟件工程愿景,以創建一種文化、工具和實踐,致力于開發高質量、安全和功能豐富的服務,來實現微軟的數字化轉型。現代軟件工程計劃正在幫助CSEO癡迷于客戶,加快新功能的交付,并提高工程效率。

截止2020年1月,微軟向云計算的遷移使CSEO能夠提高開發流程的整體敏捷性,并為由約1400個組件所組成的約600項服務,提供新的云技術,這些新技術只需較少的專業技能就能使用,還可快速訪問其它基礎架構。這樣就可以按需擴展環境和資源,進一步使工程師能夠更快地響應不斷發展的業務需求。但是,CSEO仍然需要解決幾個結構性問題,包括基本軟件工程基礎上團隊之間的不一致性,比如編碼標準、自動化測試、安全掃描、遵從性、發布方法、封閉的構建和發布等等。CSEO確實預料到了這一點,因為有些團隊的項目組合中包含多達40%的遺留代碼,這些代碼由打包在一起的大型組件組成。這使得存儲、擴展、可用性和操作的管理變得困難,因此CSEO已開始通過實施組織范圍的服務評審來推動一致性。

CSEO缺乏集中的通用軟件工程系統和相關實踐,意識到無法繼續以聯盟的方式發展軟件工程系統,于是CSEO投資了一個中央“基礎”團隊。這個團隊的宗旨是在基于MicrosoftAzureDevOps的公共軟件工程系統上進行創新,同時推動整個組織在設計、編碼、工具、測試、構建和部署服務方面的一致性。CSEO通過為每個服務領域定義愿景、確定季度優先級以及通過定義的沖刺(sprint)節奏執行這些策略,為自己的服務帶來產品工程思維。由此產生了通用軟件工程系統和可提高開發人員效率的一致性以及跨團隊移動性。

CSEO需要通過結合行業領先的可訪問性、安全性和合規性開發實踐來降低代碼中的風險。實現合規性一直是非常具有挑戰性,這迫使CSEO從原有的流程和工具中改變,并積極應對這些領域的技術債務。不過,采用新方法的速度很慢,并且由于必須清除的技術債務數量而產生了摩擦。這妨礙了CSEO針對代碼提交設置自動策略,從而確保“清潔”前進的努力。CSEO需要努力實現以無摩擦的方式,交付易于訪問、安全且合規的軟件和服務。

CSEO還缺乏一致的遙測和監視水平,無法獲得有關服務運行狀況、功能、客戶體驗和使用模式的關鍵洞察。如今,CSEO每月平均要運行11萬張支持工單。但是,還必須進行更深入的分析,以找出預防和持續補救的機會。還有一個機會可以使當前端到端的流程完全自動化,只有由于工具之間的差距而尚存一些手動方面的問題。CSEO正在推動LiveSite文化,以便能夠全面監測服務運行狀況,主動發現問題并快速系統地補救事件,同時關注根本原因以確保持續改善服務質量。針對服務健康狀況建立了CSEO范圍內的通用度量,例如檢測時間、緩解時間。CSEO團隊在服務評審會議上討論這些問題,這推動了文化變革,提高了可能導致事故(如過期安全證書)的問題的可見性。通過執行綜合監視和從各種數據源引入數據的能力,遙測能力得到了提高。

CSEO正在實施一種統一的方法來發射遙測數據,管理遙測數據以及有關業務流程、應用程序和基礎結構的洞察,以促進交叉關聯。使用正確的工具,系統應支持每個應用程序和服務的基本監測方案,并跨不同應用程序啟用指標和交叉關聯。這將:

為了解決以前對供應商的高度依賴,CSEO實施了一項新的員工戰略,從而增加了全職員工的招聘并帶來了更多的內部工作。這使CSEO能夠改變并現代化其提供服務的方式,此外這一戰略使得任何供應商的交付都必須有全職員工監督。CSEO的策略要求擁有交付服務或合同的開發人員對供應商交付的質量承擔端到端的責任,并確保他們遵守流程、標準和法規要求,包括安全性、可訪問性和隱私。此外,隨著增加招聘人數,CSEO還為所有團隊實施了通用的招聘標準和通用的入職計劃,以確保所有新員工都接受有關所有關鍵工具和技術的一致培訓。

微軟的數字化轉型要求CSEO以更高的速度、更高的質量、可靠性和安全性來提供功能和解決方案。CSEO正在對構建、部署和管理服務的方式進行現代化,以盡可能快地將新功能交到用戶手中。CSEO正在重新審查工程流程的每個部分,并以微軟首席執行官薩蒂亞·納德拉(SatyaNadella)所概括的方式建立現代軟件工程實踐:“為了向我們的客戶提供移動優先、云優先的體驗,我們將實現工程流程現代化——癡迷于客戶、數據驅動、速度導向、注重質量。”

為了確保工程師以客戶為先、為中心,CSEO通過使用通用工具收集反饋,從而使微軟工程師對客戶體驗有深刻了解。CSEO正在與遙測技術結合使用和查看此反饋,這將有助于工程師們了解用戶如何使用產品以及可能出現的問題。CSEO希望實施更高保真度的服務和業務流程監測,以便在客戶甚至意識到問題之前就對問題發出警報并加以解決。CSEO希望使工程師能夠開發可靠和安全的服務,并通過簡化從提交代碼到部署的過程、同時在軟件構建和發布線中無縫集成合規性檢查,來減少部署的前置時間。CSEO是微軟商業產品的第一批客戶,這使CSEO能夠識別并滿足在以云為中心架構中運營的企業的軟件工程需求。CSEO與微軟的產品工程團隊不斷合作,創造了一個良性循環,使微軟的產品(例如AzureDevOps和Azure服務)更加適合企業使用。

CSEO建立了一種文化,以支持現代軟件工程實踐和快速交付新功能,并且通過階段性發布的方式,更快速地向客戶交付經驗證的新功能,以及通過緊密集成的反饋循環和提供定期發布來完善這些新功能,從而使微軟業務能夠更快地做出響應。

雖然提高速度對于數字化轉型至關重要,但不能對可靠性產生負面影響。連續的數據收集、健康信號的監測、主動檢測以及快速修復,這些對于確保減少停機時間并創造高質量的客戶體驗也至關重要。實施現代軟件工程實踐是一項長期的過程,需要對思維方式、文化和工具進行根本性的改變,包括:

--轉向現代云架構;通過組件化整體應用程序來構建微服務;在中央存儲庫中發布API、NuGet和類似版本,以實現集成;確保超過90%的自動測試覆蓋率;與其它團隊合作,采用依賴關系并與他們的服務集成,而不是試圖復制它。

--LiveSite文化,可以全面監測服務健康狀況,主動識別問題,引入自我修復機制,快速修復重大事件,直接與最終用戶聯系,專注于根本原因以確保服務質量的持續改善,并將關注范圍從服務健康擴大到業務流程健康。

CSEO建立了強大的基礎,具備用于服務組合管理的通用工具和平臺,并將這些數據與事件管理、遙測和常見指標儀表板(如事件運行狀況和合規性儀表板)集成在一起,每月在CSEO全服務回顧中審核。此基礎使CSEO能夠通過著重于安全性和合規性等基本能力,進而從客戶的角度實施更好的事件管理和服務健康,來推動改善CSEO服務總體體驗的通用做法。在此基礎上,CSEO對現代軟件工程實踐和技術的持續投資,反映了微軟的愿景并支持微軟的文化變革。CSEO投資的三個主要支柱是:癡迷客戶、快速交付、軟件工程生產力。

CSEO致力于提高服務和LSI(livesiteincident)管理的效率。CSEO正在合并服務管理平臺,推出標準的事件管理流程,并根據關鍵指標持續評估改進的情況。隨著CSEO朝這個方向努力,CSEO對業務流程健康有了更好的理解,并正在擴展工具和流程以改善對業務流程運行狀況的監測。業務流程可以涵蓋從現代到傳統再到第三方的多種服務和技術,例如從供應商處購買服務后提供有關該服務付款狀態的透明度,這需要跨多個系統的集成和代理商的手動工作來支持該過程。CSEO正在通過對跨多個服務和技術的關鍵業務流程進行更深入的了解,從而在服務和業務健康狀況之間架起一座橋梁。這使CSEO能夠收集和聚合數據,以提供服務和流程健康的整體畫面。CSEO正在積極主動地檢測流程瓶頸,以幫助減少響應時間。CSEO正使用端到端流程監測,以將可見性擴展到單個服務之外,這確保了整個業務流程的有效運行。

CSEO使用的是基于AzureMonitor的統一遙測平臺,該平臺可幫助實現服務質量的持續改進。該平臺與諸如Kusto、AzureCosmosDB、AzureApplicationInsights和LogAnalytics等異構數據源集成,以收集、處理和發布來自應用程序、基礎結構和業務流程的數據。統一的遙測平臺可幫助獲取端到端視圖,并生成有關CSEO服務管理的可行動的見解,還能通過常見的可視化來更好地檢查原始數據和ApplicationInsights數據,以用于確定團隊、LiveSite、以及服務評論的相關性。CSEO正致力于交付高度相關的洞察,用以聚合組件服務、客戶體驗和業務流程的健康狀況。這將產生上下文數據,這些數據不僅可識別事件,還可識別根本原因和建議的下一步操作。CSEO正在使用業務流程監視(BPM)通過跟蹤多個服務和業務組的成功交易和客戶影響來監測真實可用性和性能。

增強了數據支撐的工單,將提供根據對業務影響程序而優先排序的問題視圖并補充潛在原因,包括通過機器學習判斷原因和評估嚴重性、對給定事件分配更智能的變更,以及類似情況歸因。這些數據增強的工單,讓團隊可以專注于最重要的工單并減少解決問題的時間。

CSEO正在將綜合監測集成到統一的遙測平臺管道(pipleline)中,以幫助服務工程師可視化和跟蹤服務的性能、減少檢測問題所需的時間,并查明系統中的瓶頸。為了達到可持續的質量水平,CSEO對所有關鍵服務,尤其是業務交易量相對較低的那些服務,進行綜合監測。為了滿足CSEO中那些孤立的和異構解決方案的需求,CSEO使用綜合監測來測試第三方應用程序的新功能和性能,并無縫處理各種身份驗證協議,包括MicrosoftAzure中的平臺即服務(PaaS)組件、公司防火墻連接和多重身份驗證。CSEO正在構建平臺,以提供啟用負載、壓力和可用性測試的機制,并提供門戶和API,使CSEO團隊能夠加入并管理其配置。

CSEO在監測整個組織的服務運行狀況指標和關鍵績效指標(KPI),以了解客戶的情緒并確保服務可靠、合規以及表現良好。CSEO在使用一致的標準,這有助于確保在服務層次結構中的任何級別聚合數據,并在不同團隊組之間進行比較。監測和報告服務健康狀況需要登錄和集成CSEO統一的遙測平臺、自定義維度和基于PowerBI構建的服務健康狀況儀表板。CSEO在AzureMonitor的基礎上構建更集成的體驗,并通過統一遙測平臺提供豐富的上下文數據,并創建一組被定義的服務運行狀況衡量指標和分析器,以跟蹤可能影響服務可靠性的事件,例如即將進行的計劃性維護或與更改合規相關變動。這使CSEO能夠主動、快速地檢測和解決問題。CSEO定義的服務健康措施,可以更輕松地跨各種技術啟用服務健康報告,包括ApplicationInsights、自定義服務監視和第三方服務。

CSEO必須將服務健康狀況與業務流程健康狀況聯系起來,并確定問題的優先順序,以便工程師能夠以減少業務負面影響的方式解決這些問題。CSEO積累的經驗包括端到端業務流程運行狀況的可視化,以及通過分析遙測數據來檢查業務流程底層服務的運行狀況。CSEO正在模板化業務流程監測的可視化,并且正在擴展這些模板以簡化其它相關指標的可視化。

CSEO還簡化了面向工程師的服務健康和工程基礎數據流,并減少使用的儀表板和工具的數量。CSEO正在使用內部工具作為所有服務負責人的關鍵存儲庫,以查看服務運行狀況和其它相關KPI。該工具的集成通知工作流程會在服務達到定義的閾值時通知服務負責人,從而可以更方便地將任何需要的補救工作按優先順序排入重點待辦列表(backlog)中。

提高CSEO服務和流程的規模和靈活性,要求CSEO將更多的注意力放在改善客戶體驗上,以融入微軟的企業文化。CSEO正在建立LiveSite文化,并通過癡迷客戶、數據驅動、多學科團隊等追求卓越,團隊通過誠實的觀察、持續的學習和可衡量的改進目標來擁抱潛在的失敗。CSEO在整個組織范圍內進行live-site回顧檢查,在此期間對事件進行事后審查、考察長期補救計劃,并通過現代軟件工程標準指導服務團隊,以幫助在本地進行有力的審查。CSEO基于標準化和可行動的報告進行檢查與審查,這些報告中包含有關中斷或故障的領先指標并基于遙測、綜合監測和其它數據分析。CSEO還在努力擴大這些審核范圍,將業務流程監測產生的可量化的業務影響考慮在內。

CSEO通過反饋回路機制將客戶體驗放在軟件工程流程的中心。反饋循環可作為由假設驅動的產品改進的基礎,這種改進方式基于實際的情緒和使用數據。通過使用與MicrosoftOffice產品套件相同的工具,CSEO使反饋提交盡可能容易。"發送微笑"功能可跨多個渠道和關鍵用戶接觸點自動收集反饋。CSEO還將此工具用作集中式數據系統,用于存儲、分審和分析反饋,然后將其聚合到可操作的洞察中。CSEO提供最佳實踐、培訓和工具,以幫助工程師理解這些反饋,并鼓勵采用反饋循環和實驗方法,例如功能發布(flighting)和環形周期部署,幫助衡量產品變更的影響。有了這些基本組件,CSEO探索將反饋數據與相關遙測相關聯的方法,以便可以更好地了解產品可用性問題以及服務問題對客戶的影響。CSEO還使用受控部署來消除對UAT環境的需求,不過這會降低整體交付速度。

為了癡迷于客戶,CSEO在各個方面都獲得并保護了客戶的信任。但要推動這一目標,CSEO的主要重點必須是服務質量。CSEO在跟蹤交付指標,以便在確保服務可靠性的同時,縮短從吸收客戶需求到可用性和反饋的交付周期。CSEO正在通過檢查交付管道(pipeline)中較早的問題并提供一種快速進行實驗并降低風險的方法,來幫助工程師實現這一目標。CSEO正在構建反饋循環機制,以確保能夠在部署新功能時理解用戶體驗,并且如果客戶反應或服務運行狀況信號不如預期的那么好,將執行自動回滾。

為了癡迷于客戶,CSEO還必須提供高質量的服務。CSEO縮短了從收到客戶要求到解決方案交付到客戶手中的準備時間。縮短交付周期,使得CSEO能夠在提供安全、兼容、可訪問、可靠和高質量服務的同時,提供和接收反饋,這對于建立與客戶的信任至關重要。CSEO工程師不斷檢查管道中較早的問題,從而能夠快速進行試驗,同時降低了發布過程的潛在負面影響。

CSEO提倡“左移”過程,其中的工作應盡早在開發過程中進行。這使CSEO避免了沖刺和沖刺之間的技術債務負擔。CSEO還在開發人員工作流程中部署了“閘門”,以簡化的方式建立安全性并通過靜態和動態安全性工具自動提供服務,以確保持續合規性。CSEO將在掃描過程中發現的bug記錄在AzureDevOps中,以便開發人員可以在那里直接修復它們,而不必首先從安全工具中進行分類。此外,CSEO計劃應用機器學習功能,以便實時發現這些錯誤,并在構建時立即采取措施。這使開發人員可以使用與功能錯誤相同的工程系統進行分類、劃分優先級和跟蹤。

CSEO有一個獨立的供應商,負責評估應用程序中的可訪問性,但這在開發過程的后期發生。為了進一步向上游推進,CSEO推動在開發過程中采用可接入洞察工具,并將公開與可接入功能相關的Bug作為管道工作流的一部分。

此外,CSEO通過將基礎設施集成到任務管道中,使工程團隊能夠利用正在部署的防護,并且正在推廣持續集成的實踐,以便所有生產環境中的版本(包括熱修復程序)均來自主版本并持續應用所有適用的合規步驟。每個發布請求都必須具有成功的構建,以確保主版本處于可用狀態,并且始終可以為進入生產環境而做好準備。在主版本中維護高質量代碼將最大程度地減少構建失敗,從而最終降低投入生產的時間。

CSEO在創建一個環境,使團隊在構建想法和原型之前先對其進行測試,并且CSEO實際上專注于以一種快速失敗、安全失敗的思維方式來鼓勵客戶接受有風險的創新。CSEO提高對客戶服務更新速度的關鍵,是以一種一致、精簡且流程化方式向客戶提供安全部署。增量式暴露和性能標簽是通過受控部署向用戶部署新功能的關鍵,CSEO可以迅速開始接收客戶反饋。CSEO通過利用服務指標(例如交付流水線中的等待時間和故障)在流程中進行檢查和平衡,從而捕獲性能下降并在超過預定義的閾值時啟動自動回滾。實現安全的部署實踐,結合精簡和良好管理的管道,是實現持續集成、持續部署(CI/CD)模型的兩個關鍵元素。

雖然數量很少,在CSEO的服務中不到5%,但CSEO仍在支持使用本地服務器和加入域的Azure虛擬機的應用程序。這導致需要不斷修補服務器、升級軟件并執行基本的基礎設施維護任務。這也阻礙了CSEO擴展應用程序以適應增長的能力。CSEO將繼續進行投資,以將這些應用程序轉換為基于MicrosoftAzure平臺即服務(PaaS)和基于軟件即服務(SaaS)的解決方案,從而利用Azure的規模和可用性。CSEO通過提供體系結構指南和工具以實現該目標,包括遷移數據、將現有功能重構為API,并通過重用他人已經發布的API來構建輕量級應用程序等。

促進數據和代碼重用以更快地構建解決方案并與面向服務的體系結構保持一致,這要求開發人員可以輕松地發布和發現API。CSEO通過創建一套通用的開發一致性API準則以及一個用于發現的中央目錄和搜索體驗,來構建API經濟。CSEO正在根據API準則集成驗證,并使團隊能夠將API發布集成到AzureDevOps管道中,并且正在定義并提供一組常見的API運行狀況分析。CSEO還將繼續致力于實現“內源”式增長的實踐,來實現API外部代碼的共享。這將幫助將現代軟件工程實踐擴展到微軟內部的其它組織,在這些組織中業務主導的工程或“影子IT”正在出現。

CSEO正在基于最新的Azure工具(例如AzureDevOps)在通用工程系統中為工程師提供一流的統一標準和實踐。一致的開發環境使CSEO工程師可以在項目和團隊之間平穩過渡。改進的自動化、一致性和集中式工程系統,使軟件工程師能夠更好地專注于開發的核心角色。這也減少了入職培訓的時間,并使CSEO工程師在整個項目中更加靈活。

--AzureDevOps中常見的工作項分類和路徑結構。通過標準化工作項分類和區域以及迭代的路徑結構,CSEO允許工程師通過提供一致的機制將每個團隊的工作與CSEO目標和優先級聯系起來,從而專注于工程。CSEO正在促進從AzureDevOps進行CSEO范圍的查詢,以提供可交付成果,例如合規性、可訪問性和交付計劃。

CSEO在開發環境中直接訪問組織要求和推薦的代碼分析和合規性工具,從而幫助實現“左移”目標。CSEO開發人員通常可以通過幾種方式來了解需要安裝的工具,例如從團隊的OneNote或Wiki,或者通過搜索公共市場擴展來進行搜索,這往往使他們脫離了主要的開發環境并且非常耗時。CSEO在投資自助服務功能來管理訪問、設置策略、并對AzureDevOps工件(例如區域路徑、工作項和代碼庫)進行更改,使工程師可以輕松創建、更新或淘汰服務、組件和訂閱,從而最大程度地減少了管理此類資源的時間。CSEO正在通過跨工具的關鍵工作流的自動化來簡化用戶上載和管理工件,以提高工程效率,同時確保跨工具數據的完整性和合規性。對于這項工作的任何投資,CSEO與VisualStudio、VSCode和AzureDevOps團隊以及許多其它團隊緊密合作。CSEO希望擴展“左移”目標,在部署周期的早期就檢查Azure服務設計的優化以及配置優化的建議,以便及時調整配置、避免不必要的Azure成本。

CSEO不斷與工程師核實工程系統運行狀況,并針對其它微軟產品組進行基準測試。調查反饋表明,尋找與工程相關的資產一直是一項挑戰。CSEO正在努力地以簡單可靠的方式共享功能并減少冗余設計。CSEO希望可以在一個中心位置輕松找到最佳實踐,這將有助于工程師從匯報的角度了解需要使用的端到端流程和工具,以保持應用程序正常運行。CSEO通過投資來應對許多此類機會,例如建立API經濟、擴展服務運行狀況,以及為服務運行狀況數據部署通用報告工具。此外,CSEO正在建立一種機制來管理和維護端到端的軟件工程流程文檔,并定義一種在組織內發布、維護和發現軟件工程最佳實踐的方法;影子IT組織也可以使用它。

CSEO正在利用微軟的產品設計系統,來設計外觀及功能與其它微軟產品一樣的解決方案。CSEO希望能夠滿足當今消費者對產品質量的期望,這意味著應該對每個用戶界面(UI)和用戶體驗(UX)進行設計,使其具有可訪問性、響應能力以及熟悉的行為、狀態、運動和視覺造型。在復雜但通用的組件(例如標題、導航菜單和數據網格)上,這可能意味著每個需要相同組件的CSEO團隊的工程時間將成倍增加。為此,CSEO正在投資:

--一致性和CSEO特定模式的最低要求:為了更好地使每位CSEO工程師都能有效地提供高質量的體驗,CSEO正在開發一套高質量的共享UI組件和UI/UX指南。為了為所有客戶提供服務并滿足可訪問性要求,CSEO在指導和組件方面的重點是自適應Web/桌面(最小為320px)。CSEO正在提供工程資源和指導,以達到一致性的最低要求,并爭取在CSEO核心應用程序中100%采用該最低要求。

--UI工程和可訪問性效率:通過將基本的輔助功能構建到每個組件中,例如ARIA(可訪問的富Internet應用程序)標簽、對比度和制表符順序,CSEO使設計和實現一致的可訪問產品變得更加容易。CSEO還將為每個組件提供輔助功能指南和最佳實踐,目的是通過使用預構建的組件和樣式來提高效率并減少工程工作量。

使新聘人員了解CSEO的工程技術不僅很重要,這樣能夠具有良好的入職整合體驗,而且對于確保CSEO文化變革勢頭也至關重要。由基礎小組設計的為期三天的介紹課程可幫助新員工從高層次理解CSEO組織,提供有關CSEO文化、技術和現代工程實踐的關鍵概念,其中包括為期兩天的Azure培訓。CSEO提供90天的自定進度的入職培訓課程,以根據地理位置、職位和團隊進行調整。此外,在首次入職培訓之后的30天,CSEO將提供另一輪培訓,以確保對CSEO組織的具體了解。補充培訓還包括:

CSEO正在微軟內部實現現代軟件工程的愿景。CSEO正在倡導“LiveSite優先”的文化,使用數據提供服務和業務流程運行狀況的信號,來告知客戶與新想法和新功能有關的快速迭代。CSEO通過轉向“DevOps”模型來支持這一點:標準化流程和自動執行策略控制著持續集成和持續部署的過程。這種文化以及支持該文化的工具和活動,增加了對工程流程的可見性,提高了服務質量和交付水平,并提高了對客戶體驗的洞察力,所有這些確保了CSEO不斷改進和調整服務范圍,以便支持現在和將來的數字化轉型過程。(文/寧川)

Notice:Thecontentabove(includingthepicturesandvideosifany)isuploadedandpostedbyauserofNetEaseHao,whichisasocialmediaplatformandonlyprovidesinformationstorageservices.