Zalando為了統一旗下數百開發團隊的技術決策方向,自行設計了一個技術雷達圖,涵蓋四大類技術,也分為四等級來推薦採用,還將這張圖上網公開定期更新。圖片來源/Zalando

技術選擇決定了一家企業IT技術的發展方向,如果押錯平臺,可能會多走不少冤枉路,這企業IT向來的課題,對歐洲快時尚電商Zalando而言,更是一個十分棘手的難題。

因為Zalando電商平臺支援全歐23國市場,銷售超過4千種品牌累計89萬款商品,一年營收達到100億歐元,超過臺幣3千億元。而且它不只是一家服飾線上賣場而已,光是每個月到Zalando平臺消費的活躍顧客就多達4,500萬人,官網流量一年高達50億人次,其中85%來自手機,因此,他們也提供了各種官網或官方App的廣告服務,作為品牌商數位行銷通路之用。

不只是電商和廣告業務,他們還有一套自家的支付平臺,每年經手的金額高達20億歐元,等於是一家頗具規模的金融科技公司,甚至Zalando將自己在全歐建置的物流系統,打造成一套B2B物流服務,來支援其他品牌實體門市的供貨,就像是歐洲服飾圈的Amazon地位一樣。

Zalando所有業務都是靠技術平臺來實現,為了支援電商、支付、廣告和物流等多元營運模式,所以,Zalando擁有一個1,200人規模的開發團隊,採取敏捷開發模式,分成了250個開發團隊,各自負責不同的產業市場和應用需求。

這些團隊都會面臨各式各樣的技術選擇,但是每個團隊各自的任務差異很大,從資料,開發到維運任務都有,尤其,在Zalando上雲之後,不只開發團隊,連基礎架構團隊要支援的工具和語言也越來越多,尤其為了要支援各種SRE維運的需求,從CI/CD、可觀察性、分析工具、漏洞掃描到合規性工具等,都得支援更多開發語言、框架或平臺。如果沒有一套做法,放任各開發團隊自行挑技術,最後,各自用的技術越來越多元,不只維護代價越大,互通的複雜性也越高。

借鏡業界做法,設計自己的技術雷達圖

如何統一250個團隊的技術方向,Zalando的解法就是靠技術雷達(Tech Radar)。Zaoando要求各團隊都要參考這一份共用的技術清單,作為新專案挑選出最佳技術的參考,而不需要每一次發起專案都從頭進行技術評估,工程師可以參考這份清單來選擇合適的技術。因為每個團隊都是用同一份技術清單來挑選,因此,就能夠確保不同專案用的技術,都在雷達圖的範圍,來實現技術方向的聚焦。

Zalando不是自己憑空想像出這個技術雷圖,而是參考了業界知名的IT技術顧問公司Thoughtworks的技術雷達圖。

Thoughtworks 將93項涵蓋技術、工具、平臺、框架和語言這四大類的技術名詞,按照推薦採用的程度分為四級,排列在一張圓形又分為四象限的雷達圖上。雷達圖的用途是用來顯示目標物體的方向和位置,而在技術雷達圖上,則列出不同類型技術的推薦採用程度,用不同的環來代表不同推薦程度,越靠近核心環,代表這項技術的推薦程度越高。Zalando根據自己的需求,聚焦軟體開發相關技術,分為四大類型的技術:資料儲存,資料處理(後來在2017年時擴大範圍更名為資料管理類)、基礎架構和開發語言。

而在推薦採用程度上,Zalando也同樣分為四個推薦等級,形成四個環,每一環代表了不同的推薦等級。這四級包括:Adopt(推薦採用)、Trial(推薦試用)、Assess(評估階段)、Hold(保留不推)。

技術雷達圖涵蓋四大類技術,分四等級推薦採用

凡是適合大規模採用的技術,就會列入推薦採用的程度,這是已經在Zalando自家正式環境上使用一段時間,風險低而且可以廣泛運用的技術。例如資料儲存類的S3和Cassandra,資料處理類的Kafka和Airflow,基礎架構類的K8s和SageMaker,或是開發語言類的Go、GraphQL和Swagger( Open API技術)等。

而推薦適用程度則是指已經在內部有成功專案的技術,而且至少用於真實問題而非模擬情境的處理。Zalando希望透過至少一次的認真使用來確定效果和技術局限,不過這類試用性技術,仍有風險。因此透過成功專案,也能培養出實際用過的工程師來提供諮詢。

上述兩類是主要推薦採用的類型,還有一類是列入評估階段的技術,這是指一群有明顯潛在價值,且值得投資的技術。Zalando會對這些技術進行研究和雛形開發來了解其影響,但是,這些技術太新,仍視為有高度風險有待評估的技術。不過,進入評估階段的技術,意味著可以找到認識這些技術的工程師,以及已經開始嘗試雛形運用的團隊來諮詢

最後一類則是Hold等級,就是不推薦但會繼續提供維護的技術。這是指不值得投資或還沒看到價值的技術,可能是更新興的技術,也可能是過於老舊的技術。Zalando同意將這些技術用於現有專案,但是不推薦用於新專案。

每一項技術還會附上一份技術說明文件,列出這項技術的優點,缺點,限制,使用情況和使用後學到的經驗,每一項技術都有一份文件,全部的技術文件集結成了一份技術知識庫。

初期靠志願者維運帶來3大問題

2015年一開始,先靠人工繪製,在Zalando內部的全體工程師社群中,挑選志願工程師來負責維護,整理大家的共識和經驗,手動畫出這張圖,後來才改用程式自動繪製出圖表。

不過,這份技術雷達圖用了2年,2017年時,發現有3個大問題。最大的問題是,技術升環或降環缺乏一套標準做法。例如,開發語言和儲存技術的評估方式不一致,造成了技術團隊選擇上的混淆,他們還得知道不同類型技術各自評估方式才能判斷,反而更麻煩。第二個問題是技術雷達圖的評估過程,缺乏一套正式流程,雖然高層要求團隊參考,但專案負責人還是可以採用自己熟悉的技術,這就無法達到原本預期要統一技術方向的效果。最後一個問題是,因為早期的技術雷達圖過度依賴志願工程師來維護,只靠這一群人的熱情,無法反映全公司各部門的情況和需求,技術決策更無法支援全公司性的戰略。

在2017年,技術雷達圖沒有發揮作用,但Zalando的開發團隊越來越多,內外系統已經超過了4千套,技術多元化帶來的複雜性,依舊很高。

盤點4千套AP重新設計技術雷達圖

Zalando決定重新徹底盤點4千套AP所用的技術,了解目前使用了哪些開發語言,工程師們習慣哪幾種技術,願意提供哪些技術支援,來支援其他專案。另外,也參考了VM生命周期管理流程和CI/CD系統、可觀測性指標的需求,重新建立對於技術雷達圖的設計。

第一項修正就是調整了四級推薦的定義,Adopt等級更重視採用廣泛度,而且是高層有意願長期投資的技術才會列入這個推薦等級。另外,還會運用技術自動分析在所有產品中的試驗計畫的資料,更完整的找出已經試驗中且值得列入Trial階段的技術。在評估階段的技術上,也採取更主動性的技術評估做法,技術雷達圖維護人員會參考技術趨勢,以及採取一些非正式環境的評估機制來擴充。

最後一項Hold等級的技術,則更明確要求,不只是新專案不能用,也不鼓勵用於推廣性服務上,要逐漸縮小這類技術的應用廣度。最後會把把評估過但沒有列入四級推薦中的技術和推薦資料,都保存在「零級」類型,作為日後的參考。另外,Zalando也建立更清楚的推薦領域,透過技術領域的分類,來進行評估或推薦,包括了後端、行動、Web、Data技術、ML技術或基礎架構,並將Queues技術從基礎架構分類中,轉移到資料處理類並統一命名為資料管理類,至此,就形成了現在的四大分類資料儲存、資料管理、基礎架構和開發語言。

指派首席工程師專人維護,更提交高層會議討論

在技術雷達圖的維護上也有重大改變,不再由志願工程師負責。2017年當時,Zalando正在進行工程師職務的調整和重新設計,新增加了一個首席工程師的職務,在各部門資深工程師中,挑選出優秀者專門負責技術研究而不擔任管理職,並且成立了首席工程師社群。Zalando改由這個首席工程師社群接手技術雷達圖的維運工作,首席工程師社群,在重新設計新的技術雷達圖前,也先討論出整體公司未來的技術發展策略,訂出一套技術採用的大原則,才開始重新定義技術評分方式。

另一方面,他們還是鼓勵所有的工程師,仍舊可以對現有雷達圖上的技術提出看法,不是由首席工程師一小群人單獨決定,任何人都可以提出要求增加一項新的技術,人人都能參與技術評估的討論,一段時間後,再由首席工程師社群和指定首席工程師來決定最後定案的技術雷達圖,或是這些技術在雷達圖上的採用推薦等級。

每隔一段時間,進行技術推薦等級的調整,首席工程師會搜集了現有技術雷達上每一項技術的真實使用數據,包括了使用量,出事紀錄,採用經驗(例如這項技術在Zalando導入多少年)的數據,再進行評分,由指定維護的首席工程師先建立一份新技術評分的試算表,再開放給首席工程師社群進行投票,決定要「升級」或「降級」,若有人給出負評,就要提出理由,作為後續討論的基礎。不過,不同團隊的首席工程師,對於同一個技術的評價,有時落差很大,例如前端首席工程師和後端首席工程師可能對某一項資料庫的採用看法有時差異很大,目前,他們還沒有解決這個歧異,只能交由投票解決。

經過投票後,首席工程師們就可以決定出一份調升調降版本草案,再提交到高層的經營會議中討論,這是為了確保這些技術採用的調整,能夠貼近公司長期發展的目標,企業願意繼續支援,另一方面,透過這樣的討論,讓高層將技術發展納入企業長期戰略中。

Zalando也根據技術雷達圖,訂出一些採用範本和指南,在指南上會提供使用時常見問題說明,或是已經採用團隊的使用案例,甚至是不同替代技術間的比較等。

內部工程師可以分享自己的使用案例,放入到這項技術的採用範本Wiki網頁上,不只如此,還直接搜集在公有雲上的正式環境這些技術的使用紀錄,程式碼儲存庫中的紀錄,基礎架構團隊定期使用數據,都整合到每一項技術的採用範本上。這個技術雷達圖,最後成了一項Zalando所用技術最重要的一份完整技術採用指南。

首席工程師在各團隊的技術採用過程,扮演了很重要的角色,他們不只主導技術雷達圖的訂定,首席工程師們也會參與這些技術採用過程,負責鼓勵各團隊分享自己的技術採用經驗,挑選出值得推薦的最佳實務範本,或發起一個工作小組來針對一項技術開發需要的新工具。這就是他們現在技術雷達圖發揮作用的關鍵做法和團隊,不過,目前仍有一些還沒解決的問題,例如,他們有一些自行研發的技術,如何和主流技術一起評估,或是,如何將第三方技術的評估,也納入這個技術雷達圖,還需要一套更廣泛的技術評估做法,另外,他們還想進一步建立一套各技術的推薦部署選項,這些是他們技術雷達圖未來要解決的課題。

為何電商要學科技公司設立首席工程師?

在許多企業中,CIO是IT部門工作職涯的最高職位,但是管理職缺終究是少數,競爭激烈,另外,也不是每一個軟體工程師,都想走向管理職。如何提供IT員工,一個更長期的職涯規劃,讓他們可以逐漸成長,也留在企業內,尤其這兩年,IT人才超級搶手,企業要留人,除了薪資以外,如何提供IT人有一個更好的職涯發展,也成為吸引人才的一大關鍵。

歐洲最大快時尚電商Zalando留住技術人才的關鍵做法是,他們提供了一種臺灣企業中少見,但國外大型科技公司很常見的IT職務角色。

Zalando擁有1,200名工程師,超過200個開發團隊,為了協調這麼多團隊,都能建立同一套技術文化,邁向共同的技術方向,Zalando設立了一個首席工程師的角色,這不是傳統的技術管理職,而是軟體工程師的另一種截然不同的進階職涯。

Zalando在2015年時,為了支援業務暴漲,決定上公有雲,而且開始採用微服務架構,也開始擁抱Docker技術,2016年則改用K8s到現在。這是一家很早就擁抱雲端原生架構的電商平臺。2016年也陸陸續續完成了上雲的轉換。

搭配技術架構的轉型,2016年時,Zalando對於工程師職涯規劃,也提出了一個新的職涯發展路徑。讓資深軟體工程師,可以有三種職涯發展路線,一是成為工程管理職,或是擔任技術性專案的管理職,最後一項新增的職務就是首席工程師(Principal Engineer)。Zalando的首席工程師職務還可以分兩種類型,深度型和廣度型。

深度型的首席工程師是專注在1個或多個領域的技術專家。而廣度型首席工程師則是擅長橫跨多領域之間整合的專家,可以從軟體生命週期角度,來支援各領域技術專家,但又有能力隨時鑽研深入單一領域。

在傳統軟體公司中,軟體工程師的下一步是架構師。但是,隨著產業開發典範,從少數集中式團隊(架構師團隊)主導大方向而展開開發則做法,轉而注重軟體開發流程的迭代,透過必要回饋不斷修正的敏捷浪潮
甚至,負責派送的團隊,成了做技術決策和主導架構設計的關鍵人物。

因為在Zalando中高達200個開發團隊,為了引導這些團隊可以朝向相同的技術決策方向和藍圖,他們發展出自己的技術雷達圖,來告訴開發團隊,哪些技術是公司目前的首選技術,哪些是可用技術或不能用的實驗性技術,甚至是哪些技術是已經不再支援的淘汰技術。而首席工程師社群,就是負責維護這個技術雷達圖的團隊。

在Zalando,首席工程師不是全公司只有一個人,而會在不同領域或不同任務上,都會設有首席工程師這個角色,例如他們有iOS首席工程師,Android首席工程師,這是深入ios開發的專家,也有架構首席工程師,這是偏向跨領域的首席工程師角色。

Zalando的首席工程師是一個資深獨立工作者,不需要管人,也隸屬於管理團隊的一員。首席工程師的回報對象,是主管們的大主管,例如技術部門總監。這也意味著,一位首席工程師要負責支援2~5個工程團隊。目前在Zalando,首席工程師的人數大概佔4%,也就是1200人中的4%,約50人。

首席工程師會參與他所屬部門的各種系統架構設計,要負責優化跨團隊的流程設計,主動提出技術改善的做法或流程,例如減少技術債,提高擴充性。 另外,首席工程師也要參與產品工程管理團隊的專案初期啟動階段,確保技術考量,可以兼顧專案範疇和計畫執行性,避免專案涵蓋範圍過大而導致時程拖延。

兩種不同類型首席工程師在企業中也各自有不同的作用和角色。

先來看廣度型首席工程師,他們要領導所屬部門的中大型專案的技術設計,尤其要負責與產品設計師、產品PM討論,定義和協商出專案範,提供建議,來降低交付的風險(避免日後延遲或無法實現),強化團隊間的關聯,確保專案的功能可以快速上市推出

廣度型首席工程師還要負責激勵設計過程的討論,或是在已經完成的功能設計之外,進行設計的實驗或嘗試。首席工程師得事先概略描述出,一項設計決策中關鍵的侷限,代價,風險,也要讓團隊知道自己的設計,將如何影響產品。在專案進行全程中,首席工程師都要扮演引導角色,確保專案推出時已有足夠的完整度,也要負責專案間的協調。
因為不同部門各自有多個開發團隊,因此,Zalando也有一套技術設計的同儕審查機制。考量跨部門的影響範圍或複雜度而定。那種廣泛影響的專案,需要多個業務單位來進行同儕審查。首席工程師就是要支援專案團隊,來尋找符合專案目標的最佳解決方案。

廣度型首席工程師扮演了,企業內IT知識的散播和提升的關鍵角色。例如他們得教導團隊,怎麼設計韌性模式,可觀察性機制,督促每周專案維運會議的效率,也要負責慎查SRE事後調查報告,或者SOP執行作業流程。因為Zalando破千名IT人員分散在上百團隊中,廣度型首席技術師,就成了維持跨團隊共識和協作的關鍵團隊。

而另一種深度型首席工程師,他們專注於平臺團隊或基礎架構團隊,甚至這一類深度型首席工程師會花很多時間寫程式,也是長期產品藍圖的重要領袖。因為這種類型的首席工程師可以有很好的技術人脈,他們也是對外與其他公司協作和交流的關鍵人物,尤其跟產業公會,技術社群的交流。

深度型首席工程師,可以在現有解決方案中,找到改善效率的關鍵,或新的可能性。例如引進新的共用元件,不同的設計模式,維運做法等。技術型首席工程師還要參與建立工程團隊的技術標準,也要參與技術雷達圖的訂定和維護。技術深度型的首席工程師也所有工程師的個人導師,協助工程師們發展自己的專業,扮演好各自的工程師角色。

Zalando內部設立了一個自發性的首席工程師社群,來分享經驗,後來這個社群成了維護技術雷達圖的主要團隊。這個社群會定期與每一個業務部門討論,探討技術如何創造業務模式的成長。Zalando一方面鼓勵工程師成為首席工程師,就算已經是工程管理職務的人,也可以轉為擔任首席工程師。另一方面,也會鼓吹對首席工程師的重視,讓這個職務角色成為眾人尊重的對象。

Zalando在高層管理團隊中,還訂定了一份首席工程師的管理公約,將首席工程師的職級,界定為部門的高階管理層級,可以參與部門未來專案和優先目標的訂定,也會建立首席工程師和產品總監、關鍵人物之間的必要連結機制。

對Zalando而言,首席工程師,不只是IT團隊的另一種職涯可能性,也是維持公司技術競爭力的重要關鍵團隊。

 相關報導 

熱門新聞

Advertisement