國泰世華銀行數據生態營運部以及國泰金控數數發中心數位體驗科技部成員。(攝影/洪政偉)

資料科學和Web開發是Python目前最擅長的兩大應用領域,在前者,Python無疑是公認的最佳開發語言選擇,但在後者,仍有許多Web技術可以選擇。在企業開發現場,Python如何在這兩個截然不同的領域,發揮作用?國泰金控數數發中心就是在雙領域中都大量使用Python。國泰世華銀行數據生態營運部協理吳香妮說:「我們的目的是,透過相同的Python開發,讓工程人員跟資料分析人員對接時,有共通的語言。」國泰的資料科學團隊和數位體驗開發團隊也現身說法,揭露各自在實務開發上的經驗。

企業資料科學團隊如何用Python?

國泰世華銀行數據生態營運部,是國泰金控數數發中心旗下的資料科學團隊之一。他們平時就大量使用Python,來開發各類演算法,進行產品推薦或關聯網路分析,從數據探索、特徵工程、建模、自動化工程,甚至ML模型的自動化上線、API開發等作業,都靠Python來完成。

國泰金控數數發中心數據生態發展部資料科學工程師陳柏翰舉例解釋,數據探索時,可用Python開發資料爬蟲程式,來抓取需要的外部開放資料,比如GIS地理資訊資料、工商業登記資料等,「我自己用過Python、Java、C#不同語言來開發爬蟲程式,相較之下,Python更容易開發、速度也更快。」

另外,在特徵工程、ML演算法開發的過程中,國泰也用Python取代R、SAS來進行。國泰世華銀行數據生態營運部資料科學分析師吳薰德表示,資料分析階段選用Python的關鍵是,Python擁有成熟的生態系,支援許多數據分析的套件,比如說在小數據探索上,很適合用Pandas框架來開發,而且,「Python在大量資料清整的能力,比R或傳統分析工具來得更好用。」

不只特定分析用途,在整體專案開發過程中,國泰團隊用開源工作流管理平臺Apache Airflow,搭配Python腳本程式,將工作流程自動化。

國泰世華銀行數據生態營運部資料科學工程師曾晴解釋,過去執行整套資料分析流程時,經常會發生模型程式執行好幾天後,最後要產出結果時,才發現資料來源還沒更新到位,往往到最後的步驟才發現異常,這時,就需要靠工程師人工查看Log日誌,找出其中的資料斷點。或者是在程式執行前,需花大量時間人工檢查數據來源後,才能手動執行下一個程式動作。

因此,國泰導入Airflow作為工作流的監控與排程平臺,使用Python來撰寫各種流程的自動化腳本程式,一旦資料來源的資料到位後,就會自動觸發下一支程式執行,國泰還搭配Airflow監控專案來判斷異常。「如此一來,不只提升整體維運效率,程式異常時,可以更快找到斷點來處理。」曾晴表示。

不只是內部分析時使用,國泰將ML模型上線到金融場景應用時背後的API,也是用Python來開發。以客服中心的客戶進線問題預測模型為例,國泰會透過蒐集過去客戶行為軌跡,比如在ATM領錢、刷卡失敗、或剛繳完帳單等行為,將這些行為軌跡資料轉換成特徵變數並建立預測模型,再將預測模型打包成API,再提供給面對客服人員的前端客戶端儀表板程式呼叫使用。

如此一來,當客服人員接到來電時,系統搭配及時串流資料,就能立即預測出客戶可能想問的問題前三名,讓客服人員能快速從客戶儀表版獲得更多參考資訊,提高顧客客服體驗。

在不同資料分析上都善用Python後,陳柏翰認為,Python的優勢是,能成為協作溝通的橋樑,讓工程人員與分析人員能互相對彼此提供程式碼的建議,來加速專案的開發。

國泰自建Python框架加速開發

「一套統一的框架可以加速專案上線,所以,國泰資料分析工程團隊才決定自己建立這個Python框架,稱為Rocket。」陳柏翰解釋,Rocket主要用於內部數據工程及資料科學專案的開發,透過預先建立好的Python程式開發框架,來制定每個程式設計環節的規範,比如Log日誌儲存位置、如何啟動程式、程式接口設定等,都可以依照框架來統一標準作法。

這個自製的Rocket框架,也能串接到後端Airflow的自動化監控,讀取Log數據,再串接到後端進行監控。在CI/CD的部分,國泰也在Rocket框架中,先完成了一套單元測試的方式,開發團隊成員可以透過幾個指令,快速執行測試任務,並自動輸出成報告。也因為部署環節中,開發、測試、上線不同環境的設定檔都不同,所以國泰也在Rocket框架中,預先內建了一套標準的配置檔,以利各種快速部署之用。

為何要自己設計一套框架?陳柏翰表示,Python與Java相比,建立程式開發環境時,Java已有固定格式的資料夾結構,但是,Python彈性較高而沒有限制,「甚至在數據科學應用上,也沒有一套如同Web開發領域的Flask框架可用。」因此,國泰才決定自行設計Rocket,預先統一每個專案的開發架構,也讓團隊熟悉開發流程,來加速專案上線。

資料分析團隊還將慣用的Python套件,比如Pandas、Scikit-Learn等,依照不同功能,重新打包成一個資料分析團隊內部的「常用套件包」。比如說,原本每個人撰寫時間轉換功能的程式都不同,全面改用統一的套件,就能在同樣功能上統一程式碼,能省下各自開發的時間,「因為分析人員花比較多時間在鑽研演算法,有些套件已經打包好,能直接呼叫比較快。」吳薰德說。

為何國泰後端工程團隊也愛用Python?

國泰數數發中心另一個愛用Python的團隊是國泰金控數數發中心數位體驗科技部。他們是數位產品從開發到上線的幕後推手,主要任務是開發數位產品,來提升使用者的數位體驗。國泰在部分生活場景的新產品,背後系統就是靠擅長Python的後端工程技術團隊所打造。除了開發網站後端,也能做輕量級的應用程式API,來推動新服務上線。

國泰金控數數發中心數位體驗科技部資深工程師杜政家指出,國泰近年來在開發生活場景的新服務時,會將新系統與原先的核心系統分開開發,來實現架構分離。「架構分離可以讓兩個系統不會互相牽制,」他解釋,比如生活場景的新服務,可能需要更強的獨立性、更快的迭代速度、以及可擴充性的架構,才不會受制於原銀行環境的影響。

由於既有核心系統主要採用Java平臺,國泰選擇將部分生活場景的應用拆分獨立出來,並改以Python來開發,比如國泰優惠App中,對內的客戶身分驗證API、內容管理平臺,或是對外的電子商務、點數會員平臺等。

杜政家表示,改用Python開發的好處很多,除了開發成本較低,也因Python具備兩個發展成熟的框架,Django和Flask,能讓開發團隊快速建立起一個高可用性的網站後臺,也容易建立輕量級的API。

國泰後端工程團隊也常用Django及Flask,搭配Docker容器技術,來建立起一個獨立封閉的開發環境,同時結合GitLab的CI/CD達到持續整合,來建立一套軟體開發流程。

國泰金控數數發中心數位體驗科技部技術經理鄒政倫也補充,選擇使用Python,而非性質相似的Web開發語言PHP,是因PHP資安漏洞較多,用Python來取代,可以降低資安防護要面對的風險。而且,Python向來在Web應用開發上有不錯的表現,再加上容易上手,「就算原本擅長Java的工程師,也能快速適應改用Python來開發。」

不過,並非所有金融服務都能改用Python來開發,對國泰來說,Java仍是關鍵技術,鄒政倫解釋:「因為核心金融服務的資料,如身分證、個資等,仍來自於銀行核心系統,勢必要搭配銀行原本的核心系統跟開發環境。」所以,國泰中介層應用的開發上,仍以Java為主,不過,「將Java系統上的資料萃取出來後,未來,前端應用就能彈性改用其他技術或方法來開發。」

Python不需要專才,而是人人都要的基本能力

儘管Python是資料科學與後端工程團隊的常用語言,但不約而同的,兩個團隊都認為,Python技術力不是他們徵才的關鍵。吳香妮指出,資料科學團隊要的人才,「Python技術不是唯一要求,對數據分析沒有任何概念,沒有洞察能力也不行。」反而因為,Python上手門檻低,國泰集團內部學習網也有相關資源能自學,「只要達到Python技術基本門檻,進來之後從做中學比較快。」

後端工程團隊的杜政家也提到,由於後端開發的語言選擇很多,「只要程式底子夠的話,要轉換程式語言不困難。」因此,他更看重具有後端相關工作經驗、優秀的程式設計能力,甚至有前端開發經驗但想往後端嘗試的求職者,都是這個團隊要的人才。

而國泰後端工程團隊還設計了一個導師制度,安排資深人員擔任輔導(Mentor)角色,協助新進員工準備工作環境,以及相關環境設定。另外,使用的技術框架與開發流程,也由Mentor在實務工作中來協助進行在職訓練。

兩種團隊各自領域不同,必學工具也不同。國泰後端工程團隊建議,Django、Flask與Docker,是Python在Web開發領域的必學工具。而對於資料科學團隊來說,一定要先學的能力是資料爬蟲,這是進行資料分析的第一步,其他ML、數據分析、科學計算的框架,則無特定推薦,要看實際應用場景來決定。

但不論是哪一個團隊,都希望成員能夠不斷增進自己的開發實力,比如鼓勵員工參加外部研討會、外部課程並提供補助,也鼓勵員工組成讀書會、參加社群活動,來養成自發性學習的習慣。「技術會不斷迭代,需要不斷學習,Python能力不一定要最頂尖,但是要具備自學與分享的態度,成員才能互相成長。」陳柏翰說。

國泰世華銀行數據生態營運部

由左而右分別是國泰世華銀行數據生態營運部資料科學分析師吳薰德、資料科學工程師曾晴、協理吳香妮、國泰金控數數發中心數據生態發展部資料科學工程師陳柏翰。

 主要工作  開發各類演算法,比如產品推薦或關聯網路分析

 Python應用  數據探索、特徵工程、建模、自動化工程、API開發

 為什麼選Python  Python能成為資料分析人員與工程人員的共通語言

 開發環境特色  自建Python程式開發框架Rocket,來統一每個程式設計環節的標準

 人才需求  資料分析的應用解題能力,Python基本能力,但得先學資料爬蟲設計

國泰金控數數發中心數位體驗科技部

國泰金控數數發中心數位體驗科技部,由左而右分別是技術經理鄒政倫、資深工程師杜政家。

 主要工作  相關數位產品的開發到上線,還要負責優化使用者體驗

 Python應用  開發網站後端、輕量級的應用程式API

 為什麼選Python  Django和Flask框架發展成熟,能快速建立Web應用

 開發環境特色  用容器技術與GitLab的CI/CD,來建立軟體開發流程

 人才需求  具備前、後端開發經驗,以及好的程式設計能力者

 相關報導  AI時代開發語言新主流Python


Advertisement

更多 iThome相關內容