2019年3月2日 星期六

一個專業的雲端架構師需要具備協助建立團隊文化的能力

Google SRE implement DevOps



在Coursera 上 Google Cloud Professional Cloud Architect 的課程,原本以為是一個以技術為主的課程,上了之後才發現遠遠不只這些,而且有需多部分發人省思,一個專業的雲端架構師除了技術上要協助客戶釐清需求外,更重要的是幫助客戶完成商業需求,甚至要協助建立團隊的開發維運文化!



課程中有許多案例,其中在 Case Study 4 裡面有一個情境描述:

你之前也許看過這樣的情境,客戶對於把產品/程式發佈到正式營運環境感到害怕,因為你永遠不知道會弄壞什麼東西。這個客戶目前只敢一個月上版一次,因為有很大的風險會造成 downtime。 當產生downtime,應用程式就會壞掉,最慘的是會直接衝擊到營收。所以在這個案例我們需要能夠開發和部署新的feature,重要的是要部署到商業環境(production),並且不然造成事件。

這個客戶有幾個有趣的商業需求:
  • Pushing to Prod is a big event and happens once a month.
  • Significant risk of downtime due to unforeseen issues.
  • Downtimes exceeding SLA have revenue impact.
  • Need to develop and deploy features without burning the house down. Pushing to Prod should be a non-event.
在建構符合這些需求架構的流程需要分成兩個階段。首先是商業階段,必須通過包含商業挑戰以及人事流程,在這個階段要能明確瞭解有什麼人要負責什麼事,和需要採取的行動方案。然後才是技術階段,把所有的需求和程序對應到適合的技術解決方案。

在這這個案例我們找出相對應需要滿足的技術需求

1. 建立 CI/ CD pipeline

  • Single source repo per product; git-flow as branching model.
  • Automate build, self-testing, rapid.
  • Automate deployment.
  • Setup robust monitoring, logging and alerting for visibility.



2. 推廣團隊開發文化

  • Test Driven Development (TDD)
  • Push often, address broken builds immediately.
  • Transparency.
  • Change management / Release process.
(謎之音:外部雲端架構師還得幫忙推廣開發文化~XD)


綜合上述兩點需求,要能 on demand 的把程式部署到商業環境,我們需要分析現有的開發流程,我們覺得 single source repo 是第一個最需要推廣給整個團隊的。 所以我們決定團隊應該要使用 git-flow 的模式取代其它branch開發模式。再來是自動化整個 build process。 不過我們需要透過 SALT test coverage 確保在build 的過程有充分的自我測試,並且測量build process 的花費時間確保速度夠快。我們也把相關解決方案軟體(solution software)的部署也自動化,並且把相對應的監控,紀錄,和警訊都加入,讓團隊可以很方便的處理整個建置到部署的流程。

不過這還沒解決全部的問題,這套流程和系統必須要真得被落實和使用,過去這個團隊並不習慣使用我們所提出的開發流程。所以我們必須從他們既有的流程加以改進,其中最重要的就是開發和測試必須一起工作,在新的流程必須先開始寫測試再開發。而這個新方法就是要更頻繁且更早的把程式 push 到商業環境,而且每當什麼東西壞了,就要馬上修復它。

這代表必須引進全新的團隊文化 - 當責和透明。所有的 stakeholders都要參與其中並且指出和修復錯誤。而這也代表改變管理方式以及領導層買單是這個技術方案成功的必要條件。
下面則是 Google Cloud 提出的全雲端 CI / CD data pipeline solutions:
  • Cloud Source Repositories - for hosting their repositories
  • Container Builder - that builds the docker container images
  • Container Registry - that hosts those container images
  • Google Kubernetes Engine + Helm - for running and managing
  • Spinnaker - for CDP - continuous deliver
  • Cloud Load Balancing, Stackdriver, Cloud IAM + Service Accounts - management constructs for proper visibility

謎之音1:要推廣這些技術和方案給客戶,必須要改變客戶的公司文化和做事方法,感覺就很辛苦~XD

謎之音2:不過這些的確都是很基本的DevOps 概念,如果這些文化和做事方法都沒有...就繼續殺豬工吧,人家都上太空了....XD






沒有留言 :