2016年5月29日 星期日

DevOps Lessons Learned at Microsoft Engineering 筆記

筆記

組織

  • 講Microsoft裡面的DevOps
  • 故事描述的是Cloud & Enterprise and the Bing teams
  • 以前,在一個Feature Team有三種角色:program managers, developers, and testers
  • Developer與Tester在組織架構上就分開,還有一個operations team
  • 我們想要減少內部溝通所需花的心力所以:
    • 結合Developer與tester->software engineer:讓一個feature能從無到有產出並能正確穩定運行
    • 把operations team的人也帶進來->service engineer
  • 要做到最好的單一服務,就是需要一個可以緊密合作的團隊,寫code與測試與運營的人應該要能緊密合作。
  • 最後組織的安排,把dev team與test team結合,operations team也拉進同一個大組織裡。
  • 在這個大架構,接下來就分成Feture team,負責單一個解決方案,Feature,或Product
  • 有專門開發運營內部工具的team
  • 有開發功能的Feature team,由10~12人組成,採用自我組織,自我管理的方式
  • 有4307人在Develper Division,436人在Team Service Team(指的是Visual Studio Team Service),在Team Service Team有35個Feature Team
  • 一個Feature Team有
    • 一個program manager
    • 一個engneering lead
    • 幾個software engineer
    • 幾個service engineer,他們同時支援多個team,但是都在同一個Product裡
  • 另外一個改變就是,相較於之前不同組織就在不同的區域,現在同一的Feture team的人都搬到一起,所以大家不管是討論、接電話,所有有關工作的事情都可以有共同的體驗

責任

  • 上述的所有改變的主要目標就是責任的改變
  • software engineer與service engineer要一起搞出最好的結果
  • 要有量測數據來證明團隊做得好或不好,像是test coverage或是SLA
  • software engineer的責任不再只是把東西做出來,並且還要保持產品的健康
  • 要Feature team的成員對客戶的問題有所洞察,如何讓客戶能很喜歡產品
  • Feature team有完全的責任在產品如何設計開發測試佈署
  • service enginner要更多瞭解他們運營的產品,並提供基礎架構與產品的意見,與部署運營的script or code
  • Automation是Microsoft裡面軟體生命週期與快速產出價值給使用者的關鍵
  • 以前像是,手動測試,環境架設,發行管理,都被自動化了
  • 這樣的運作方式更靈活,也有更多機會可以失敗
  • 因為都做到自動化,Dev可以自己管理Change,並且導入Feature flags,用來減低風險。
  • 導入這些改變之後作者覺得有在Startup的驅動力與興奮感(?)

飛行中(!)佈署

  • 從Visual Studio Team Services到OneDrive iOS App,都用Canary Release (派一隻金絲雀到礦坑裡試試有沒有毒氣),這在VSTS team叫deployment rings。
  • 團隊弄好版本後,經過自動build與test,然後發布到內部測試帳號,或早期體驗帳號,或是developer自己的機器裡。
  • 現在在VSTS team的deployment ring有4個,有12個單位遍布Azure regions
  • 第一個ring是有VSTS帳號的
  • Feature team的lead engineer核准發布的第一個ring,因為在第一個ring的都是Feature team的人,自己先測完之後再自動化發布到其他的ring,如果有問題就自己趕快修。
  • 而大部分的功能都有feature flag來控制
  • 接下來是OneDrive App的例子
  • OneDrive App團隊用VSTS來自動build與test,然後用HockeyApp來發布到ring上
  • HockeyApp可以提供安裝,運行,Crash與使用者統計,目前是用在內部測試的ring
  • 接下來就是用Apple的TestFlight來給beta tester測試
  • 一旦ok了就打開feature flag正式發布給所有使用者

Idea Velocity

  • 有了Continous Delivery,idea可以快速的被評估測試。
  • 在Bing,任何idea都快速的被實驗測試收集統計資料,所以可以比較正確地被評估,這樣更激勵內部人員提出並實行他們的idea

沒有留言:

張貼留言

DevOps Lessons Learned at Microsoft Engineering 筆記

原文: https://www.infoq.com/articles/devops-lessons-microsoft 筆記 組織 講Microsoft裡面的DevOps 故事描述的是Cloud & Enterprise and the Bing ...