街口電子支付技術長 張佑傑  (攝影/洪政偉)

2022年,街口電子支付用戶數來到580萬人,串接銀行26家,支付店家超過20萬個,每月代收付金額超過30億元,是臺灣電子支付的龍頭。今年上任的街口董事長梅驊提出了全新戰略目標,要從積極擴大用戶規模,轉向提供多元化服務來實現會員價值變現。不只業務部門開始推出更多種類的新服務,來增加會員黏著度,街口技術團隊也從串接銀行和通路系統的擴張策略,轉向開始開發大量的異質服務,隨時有超過10項專案同時進行。

但是,這個新戰略對街口技術團隊而言,不只讓系統變得更複雜,也增加了開發、部署和維運的難度。儘管街口技術團隊歷經過兩次開發效率改造,從單體架構部分轉換到微服務架構,也更明確定義團隊業務領域分工,不過,技術團隊第3度面臨到開發效率的瓶頸。帶領團隊挑戰此瓶頸的人是今年8月新上任的街口電子支付技術長張佑傑。

張佑傑曾經任職於歐洲電商巨頭Zalando、社群媒體龍頭Meta,專長於高併發系統設計與開發,負責過Zalando年度網購周等超大流量活動的平臺穩定性。他在今年1月加入街口,擔任街口支付核心系統團隊的負責人。帶領團隊的8個月期間,與街口第一線工程師及PM有大量密切合作,他發現,街口專案開發流程明確定義了,從發想到測試等各階段的流程、各部門角色及職務,且非常注重跨部門溝通,因此,技術部門產出通常可以符合業務部門需求。不過,這個流程還沒有涵蓋到開發完成後的部署及維運流程。

隨著街口開發的服務增加,不同服務間的耦合程度和依賴性也越來越多,連帶導致街口在部署和維運兩階段的作業變得更加複雜。張佑傑指出,沒有明確定義服務部署方式,以及事後維運的作法,拖慢了技術團隊效率,尤其,維運作業是最大的負擔。

解決大量技術債、優化維運人力配置,建立維運正向循環

不過,導致維運工作繁重的原因不只如此,張佑傑開始帶領支付核心團隊時,就觀察到一個未來勢必要解決的隱憂:老舊系統累積的技術債,不斷帶來更多維運需求。

「若不盡快處理,技術債會持續累積,最後造成不可逆傷害。」因此,他上任CTO後的第一件事,就是要求技術團隊盤點手上的維運工作跟所耗時間,要找出彼此重複的項目,用系統性思考思維,靠系統和制度來解決問題。

一盤點才發現,技術團隊和PM竟然被迫一天要花20%以上的時間來處理維運任務,才影響了開發效率,還嚴重打擊開發團隊的士氣,甚至有工程師因為維運工作過重而辭職。

為了簡化日益繁複的維運階段工作,張佑傑決定採取3個並行策略,一方面重構服務,也統一技術團隊的維運職責及項目,並賦予PM排除簡易狀況的能力。

張佑傑說,重構系統不一定代表原先系統架構有所不足,而是設計之初,無法完全考慮到後來新加入的服務。「隨著公司業務高速發展,每隔2年進行現有系統重構應是常態,越拖延反而越增加後續維運難度。」

他以帳號連結(Account Link,AC)扣款服務來說明,如何用重構來解決技術債的維運負擔。這項AC服務負責街口帳號與銀行帳號之間提領、儲值以及支付等金流功能。由於街口和多達26家銀行系統串接,AC服務受到所有銀行系統的穩定度影響。經統計,高達23%時間,AC服務會面臨各種異常狀態。

一但AC服務發生嚴重異常,PM與技術部門需要立即向銀行端及自家監控系統確認,找出異常來源,若確定問題出自銀行方,則要在街口App端關掉該銀行相關功能。同時,技術部門還要盡快撈出所有異常交易的請求,交由PM和銀行逐一審查。這個過程每慢了一分鐘,便會再多出幾筆異常交易請求,不只增加更多用戶客訴及對帳時間,還會降低用戶對街口的信任感。

街口重新設計了AC服務的運作方式和架構,不再大量依靠人工事後處理,而是改用系統簡化甚至是優化作業。他們設計了一套銀行穩定度監控系統,自動判斷各家銀行系統是否異常。一旦發現有問題,便會啟動前後端雙重防護機制,在前端介面直接關閉異常銀行的相關選項,讓用戶不至於經過一番操作後才發現系統異常;後端系統則開始阻擋任何與該銀行相關請求,以避免街口和銀行兩方系統出現帳目不統一的問題。如此一來,既能減少大量人工流程,也不用分秒必爭的和銀行確認系統情況及異常請求。AC服務重構後,異常狀況導致的後續維運量大幅減少了50%。

張佑傑來到街口時,類似的技術債堆積如山,不過,到他接任技術長,推動全技術團隊的系統重構後,技術債已經幾乎都解決了。

他說,重構老舊系統不僅是為了解決技術債,節省的人力,也讓技術團隊有時間進行預防性的系統重構,更新開發框架及升級工具軟體,形成正向循環。他解釋,更新到最新版框架,能使用到最新技術也能修補舊版資安漏洞,更能避免老舊版本終止支援後,開發資源越來越少的問題。還有一點,他認為,日常頻繁更新版本,未來就不用冒著橫跨數個版本大幅更新的風險。

甚至,重構不只是考量技術部門的維運需求,張佑傑也將業務痛點和目標納入重構考量,讓業務團隊認同系統重構的必要性和具體成效,來積極爭取業務團隊對重構的支持。張佑傑說,技術團隊主要工作是支援業務團隊需求,業務團隊的配合,對系統重構作業的幫助很大。「業務團隊會願意放緩其他業務開發時程,排出時間讓技術團隊能專注於系統重構。」

在這一波解決技術債的系統重構過程中,不僅排除了大量維運需求,街口也趁機梳理了維運項目和系統架構,更以此為基礎,設計出2套制度,來優化日常維運工作流程。

第1套制度是「值日生」,受益於系統重構前的維運項目統計。盤點出常見維運項目和處理流程後,街口技術團隊可以將這些項目交由每日輪值維運的負責人集中處理。如此一來,其他工程師在非輪值日時,就不會被突發維運的工作打斷,進而大幅提升工作效率。

另一套新制度則是賦予PM團隊初步排除系統問題的能力。過往PM若發現功能異常,得聯絡技術團隊處理,待技術團隊處理完畢後再回報給PM確認。不過,經過一系列舊系統重構後,大部分服務系統架構都標準化了,因此有許多維運作業的操作簡單且類似。技術團隊將這些項目整理出了一份操作指南,讓PM能依照指南自行排除部分問題,也節省了大量雙方來回溝通的時間。

攝影/洪政偉

公司業務高速發展,每隔2年重構現有系統應是常態,越拖延反而越增加後續維運難度。── 街口電子支付技術長 張佑傑 

推動高容錯、低風險部署流程,提升快速迭代版本能力

化解積累多年的技術債,有效解決了街口開發效率最大痛點。以支付核心團隊為例,原本年初還需要擴編1人才能負荷,沒想到解決技術債後,反而有餘力出借人力給其他團隊。

不過,張佑傑沒有停下優化的腳步,他在街口開發流程的部署作業中,找到了3個能進一步優化流程的施力點。

第一項優化是推動部署簽核流程的無紙化。由於金融科技產品受到高度監管,街口支付部署服務前,需經過多名主管簽核,報備部署原因、時程、改動等資訊。張佑傑說,過去工程師得帶著紙本文件,找到每位負責主管簽名,能在3至4小時內跑完流程,已經算是順利。為了精簡此流程,街口自行開發了一套簽核系統,將審查跟簽核轉至線上進行,只需30分鐘就能完成。無紙化做法雖然簡單,但成效立竿見影,也反映出張佑傑強調系統性解決問題的理念。

第2項是部署流程標準化。先前,街口不同類別的服務和執行環境都有各自部署流程,加上Git分支管理繁複,導致部署作業上手難度高,容易發生人為疏失。街口採取的解決方法是將過去在Windows環境開發的服務都重構為Linux版的服務,來減少執行環境的版本,再將服務全面容器化,並統一規範部署流程。目前半數開發團隊所管理的服務,已用容器調度管理平臺Docker Swarm來管理,之後計畫遷移到Kubernetes。張佑傑說,系統化規範部署流程旨在排除大部分人為疏失風險,讓SRE人員不論經驗或能力,都能正確部署各式服務,降低了後續維運成本。

最後一項優化則是在發布作業上,改採取了灰度發布(Canary Release)方法,將新服務逐步開放給不同比例的使用者。隨著街口服務數量變多,服務間互相影響的情況也會增加。不過,街口各服務開發和部署時程各自獨立,很難同時測試所有新服務。這也意味著,一個服務測試完畢後,若其他服務有所改動,發布時還是可能發生異常狀況,需要退版、修改、再發布,造成所有使用顧客的疑惑而帶來大量客訴。

為了減少對顧客的影響規模,街口改採用灰度發布模式,部署服務到實際發布環境後,先開放新功能給內部工程師測試,真人實測完成後,再逐步開放給更多使用者。甚至可以自由設定服務發布比例,就算新服務有問題,也不會產生大量客訴跟系統錯誤,且修改時不需要退版,只要將發布比例調降為0%,便能慢慢處理。

張佑傑說,這些優化不僅能簡化部署作業,還能讓工程師安心,不再覺得部署是麻煩且高風險的行為,進而釋放工程師創意與能力,增加個人產出。推動這些優化,提升了街口快速迭代能力,預計到了11月,部署頻率能從每周部署2次,提升到一周5次。

推動系統化解決問題的模式,來培訓有產品思維的人

張佑傑說,「成功企業的技術團隊有個共同之處,就是做法都能規模化,而且長期適用。」當他推動街口部署及維運流程改革時,就是考量到,就算日後系統複雜度提升或人員更迭,一切運作仍然可以保持穩定。因此,他非常強調,問題解法簡化後,必須內化到制式程序和系統架構中。

未來,他計畫秉持著同樣原則,把異常事件教訓、系統基礎架構及法規政策限制都內化成程式碼形式。「系統化解決問題的模式,不但能提升工作效率,更能將系統架構及工作流程梳理得更標準化、更有條理,讓大家能更容易理解。」他強調。

張佑傑推動系統化工作流程改革時,也在思考如何藉機提升工程師思維及能力。例如,服務重構所設計的服務監測系統,如何使工程師更輕易的觀察整套系統,了解不同服務如何運行和互相影響。他從擔任支付核心系統負責人時,就開始舉辦工程師讀書會,接任技術長後,更定期舉辦技術分享會,讓不同的技術團隊成員能交流專業技能及思維。

張佑傑期待這些做法,能培養出具備產品思維的工程師。他說,有產品思維的工程師,不只專注於自己手上服務,還會從整體產品高度,了解不同服務間的關聯性和原理。一但發生異常狀態,這樣的工程師能快速定位問題來源,甚至從問題中看到技術團隊需求,主動倡議改革。「這樣的工程師,就會進化成獨當一面的個人貢獻者。」

 CTO小檔案 

街口電子支付技術長張佑傑

學歷:臺灣師範大學資訊教育研究所碩士

經歷:曾服務於Meta、Zalando、日本樂天 Ichiba、趨勢科技和HTC等大型企業,有10年以上的後端工程經驗,專長於高併發系統設計與開發,負責過樂天購物節、Zalando購物周等超大流量活動平臺穩定性。2021年底回臺,擔任街口電子支付核心團隊負責人,2022年8月接任技術長

 公司檔案 

街口電子支付股份有限公司

地址:105臺北市松山區長安東路二段225號

成立時間:2015年

主要業務:支付、金融服務

員工數:148人

年營收:2億2千萬元(2020年)

董事長:梅驊

總經理:范庭甄

 公司大事紀 

2015年10月:街口App正式上線

2018年1月:取得電子支付執照

2018年2月:電子支付業務正式開業,串連10家主要大型銀行帳戶

2020年1月:街口支付在日本啟用,推出跨境支付服務

2020年2月:街口券正式上線,推出全新數據行銷功能

2020年6月:聯手國泰產險推出用電子支付繳納保險費

2020年12月:舉辦首屆街口購物節;同月,街口支付達400萬名用戶

2022年:用戶數來到580萬人,每月代收付金額高達30至35億元,營運戰略從累積用戶轉為用戶價值變現,意圖大量推出新型態業務

熱門新聞

Advertisement