Dcard創辦人暨執行長林裕欽 (攝影/洪政偉)

每天午夜12點,許多人可能早已進入夢鄉,街道上也從白天的喧囂歸於寧靜,但在這個萬籟俱寂的深夜時分,對一家網路公司而言卻不能鬆懈,因為短時間內湧入數十萬人,猶如售票業者搶票的盛況。「別人可能是偶而遇到,但我們卻是天天上演」,社群論壇網站Dcard(狄卡)創辦人暨執行長林裕欽說。

自2011年推出以來,每天到了午夜12點,系統就會向參加「抽卡」的卡友(用戶)發送具有交友性質的Dcard,若卡友對配對的對象有興趣認識,可向對方發出交友邀請,對方同意才成為朋友。「抽卡」的交友機制因帶有命運的意味,受到許多年輕學生的歡迎,9年來超過3千次抽卡,讓Dcard團隊練就一身IT維運的功夫。

Dcard是林裕欽在臺大資管系大二學生時和同學在課堂共同創作的作品,鎖定大學生社交圈,除了抽卡之外,核心服務為匿名社群論壇,讓用戶可自由發表心情文章,和有共同興趣的其他用戶互動,建立共鳴。林裕欽後來在2015年以狄卡為名正式成立公司經營。

相較於1995年推出的PTT,在年輕世代的大學生裡,Dcard擁有相當高的知名度,每月不重覆訪客超過1,500萬人,用戶分享的熱門文章經常被大眾媒體引用,每月吸引過15億次瀏覽量。

建立跨平臺用戶追蹤系統

超過400萬用戶,每月產生的文章高達20萬篇,加上歷年累積的數百萬篇文章,如何依據使用者興趣,投其所好提供適合的內容?背後關鍵是運用數據分析及機器學習技術的推薦系統。

林裕欽表示,Dcard會員數不斷增加,加上公司成立之後,團隊規模擴大,使得分工愈來愈細緻,依數據進行決策愈來愈重要。2017年至2018年,Dcard開始建立自動化推薦,透過數據分析,找出使用者感興趣的內容。

不過,剛開始Dcard僅有網頁版,2013年先後推出Android及iOS版,讓Dcard得以準確蒐集用戶在行動裝置的使用行為數據,但要推薦能讓用戶感興趣的文章,必需能辨別追蹤相同用戶,在桌上型、行動裝置的使用行為數據。

他們曾評估使用第三方的追蹤工具,但以Dcard上千萬的月活躍用戶規模,按第三方服務依使用數量計費,收費恐要價上億元,加上即時推薦需要即時追蹤跨裝置的用戶使用行為,以及數據分析Log、機器學習訓練模型等需求,他們決定自行開發數據追蹤平臺Bilanx,來實現跨裝置串接用戶的行為資料。

打造自動化內容推薦系統投其所好

一般網路論壇常見的三大功能,搜尋、廣告及訊息流,在訊息流方面,Dcard從大量的文章訊息中,篩選出適合的內容提供給可能感興趣的其他用戶。早期Dcard文章推薦,是以過去36小時愛心數排序,將熱門文章推薦給用戶。

而透過追蹤平臺Bilanx,掌握用戶在裝置端的行為數據,例如用戶喜歡什麼內容?每篇文章停留多久時間?再利用相似的人群喜好提供文章推薦。2019年Dcard開始一項專案,今年進入AB測試階段,當用戶進入Dcard首頁,就會看到一個News Feed專案的文章列表,向用戶推薦訊息內容,這項功能背後就是運用深度學習技術打造。

他們參考YouTube經驗,將篩選訊息大致分為兩層,一為Candidate層,一層為Ranking層。先透過Candidate層從幾百萬篇文章中篩選出幾千篇,可能是用戶感興趣的內容,再經過Ranking層根據用戶的興趣、所在的地方、熱門文章、相似人群計算,為這些文章作排序。

運用機器學習技術,根據用戶過去點擊的文章,預測他可能會點閱的其他文章,再根據回饋去訓練模型,搭配Bilanx來分群用戶,再利用AB測試不同上線版本差異,追蹤核心指標是否有提升。

林裕欽表示,除了用戶追蹤的看板,可以明確掌握他的喜好之外,更靠機器學習,為用戶分群,還試了許多做法,以最基本的協同過濾(Collaborative Filtering,CF)為例,例如A喜歡某篇文章,B也喜歡某篇文章,A和B為相似的分群,深度學習也有CF版本。

「為了讓每個人能找到共鳴,如何更有效率找出你感興趣的主題去討論,內容推薦就非常重要。這也是機器學習能長期不斷優化的事」,林裕欽說。Dcard借由AB測試,檢驗不同上線版本差異,調整推薦文章的篩選、排序方式。

目前除了內容推薦,由於Dcard用戶註冊採實名制,用戶每天更換照片,上傳照片可能多達上萬張,Dcard也將機器學習運用於比對照片上,確定更換的兩張照片為同一位使用者,當機器學習無法肯定時,再由人工作再次確認。

打造數據中臺是發展關鍵

用數據賦能每個人,作更快、更好的決策,讓溝通能夠以數據為導向,如果數據難以取用就無法做到。 ─── Dcard創辦人暨執行長林裕欽。(攝影/洪政偉)

Dcard內部透過工作坊、讀書會等各種方式,讓員工接觸新技術、概念或方法,例如Dcard在2016年開始採用Kubernetes(簡稱K8s),當時團隊經過討論,評估對伺服器管理邏輯上更具優勢。林裕欽指出,不需要一臺一臺管理伺服器,大幅降低管理成本而採用,目前Dcard上的服務幾乎都採用K8s,利用K8s的自動擴充平衡,動態調整需要伸縮的服務,在更新程式碼也比較方便,但資料庫仍使用VM。

他們也測試多種資料庫,像是MongoDB、Redis、MySQL、PostgreSQL,還有號稱比Cassandra快十幾倍的ScyllaDB。依據數據的類型、不同的業務需要,測試不同資料庫的特性,目前他們在核心的論壇服務使用PostgreSQL,而去年推出的電商服務「好物研究室」,背後則是使用MongoDB。

他們很快就面臨新的挑戰,各部門各自發展時容易出現數據孤島,導致數據的整合分析、應用都相當不便,例如「好物研究室」的MongoDB,難以和用戶行為資料整合,最後,他們參考了阿里巴巴在2015年所提出的數據中臺,建立一個統一數據分析、查詢框架。

Dcard發展自己的數據功能和指標,再經過不斷的優化調整如資料驗證,在2019年完成ETL、統一的定義等等,才完成了這個數據中臺的建置。

目前他們在社群論壇服務使用的PostgreSQL及電商服務使用的MongoDB,在資料倉庫層主要使用BigQuery查詢,依資料查詢即時性較低的需求,則使用AWS Redshift查詢。資料分析介面統一使用Redash。

透過建立數據中臺,帶來統一的權限控管、監控,以及資料定義及查詢、ETL、斷詞、標註、Archive和Log管理等等。

「業務型態愈多,使用的資料庫愈多,愈能顯現出數據中臺的價值」,林裕欽說。

讓員工學會自己分析資料

為了讓資料查詢能夠更有效率,Dcard透過內部訓練課程讓幾乎所有的員工,產品經理甚至是客服都會執行SQL指令,由Redash為每個人權限控管,這麼做可讓員工遇到問題時,能更快取得資訊解決問題。

Dcard並非一開始就要求員工要會執行SQL指令,剛開始是負責BI的員工願意分享,透過工作坊教導其他員工,如何運用SQL指令作資料分析,發現成效不錯,才慢慢成為常態,鼓勵員工學習這項技能。

「用數據賦能每個人,作更快、更好的決策,讓溝通能夠以數據為導向,如果數據難以取用就無法做到」,林裕欽直言,目標是要讓大部份員工都能學習做資料分析,公司內雖然只有一支由BI、AI組成的7人資料團隊,但他希望所有人都有能力進行資料分析。

他認為落實數據思維的方式,是讓每個人都會使用SQL指令,遇到問題就能夠自己解決。當看到一項數據時會想知道背後的原因,自己就能分析資料,以更深入的方式去思考問題。

不過,讓員工自己作SQL查詢,若查詢的資料比較複雜,同時間遇到較多人使用,可能拖慢資料庫的效能,為避免此一問題,Dcard利用資料庫快照,每小時快照一次來建立另一個查詢用的副本資料庫。

靠層層快取、動靜分離應付流量

Dcard累積近500萬篇文章,過去卡友分享的熱門文章,像是「我吃了那男孩一整年的早餐」、「阿嬤這是Lv」,被許多用戶分享,經常登上大眾媒體版面,帶來許多的流量。而每天午夜12點的抽卡,短時間內吸引大量流量進來。

林裕欽指出,相較於熱門文章使得整天流量都高,午夜的「抽卡」在短時間內產生流量高峰,數十萬人湧入打開Dcard,就像訂票業者面臨搶票狀況,團隊在天天歷練之下,培養出對資料庫特性有更深的理解。

Dcard的資料快取會根據不同資料特性,選用不同的資料庫儲存,如大宗快取資料用MongoDB,若是以效率為要求,則使用Redis、Scylla。此外,還用ElasticSearch支援每天百萬次搜尋查詢。

午夜時的「抽卡」,大量用戶開啟Dcard,這些用戶不只「抽卡」,也會觀看文章,「抽卡」比較能預期,將需要的資料先作快取,而瀏覽文章方面,透過層層快取資料,利用CDN、HTTP、瀏覽器、後端資料庫層層快取,層層快取結合不同特性資料庫,特別是在CDN使用Cloudfare worker機制,將API請求合併在一起。

另外,他們也建立一套動靜分離機制,將文章拆分為不易快取的個人化資料(對文章的留言、愛心),和較易快取的非個人化資料(文章內容)。個人化資料偏動態且流量較大,非個人化資料偏靜態且流量較小,Dcard將動靜態資料拆開來快取,到前端再合併顯示在使用者面前。

林裕欽表示,將文章資料變在靜態檔案,如JSON檔,讓CDN、前端的瀏覽器快取,如果發現該篇文章和上次請求沒有更新就可直接使用,或是從CDN取得,儘量降低對Dcard伺服器的要求。如果文章有更新,會通知CDN原本快取失效,並通知使用者更新內容。

對於臨時爆量的請求,他們也利用K8s的自動擴充功能,自行開發一套系統,在資源不足時加開機器,做到維運管理自動化,當波峰過了,再自動調整因應。

另外,Dcard也在非即時的任務,利用Message Queue的相關機制,以Pub/Sub、RabbitMQ處理非同步任務,以減少資料庫存取的波峰。

他們也在善用預先計算機制,例如用Airflow提早進行資料的ETL、計算,再進行快取,降低尖峰時段所耗用的資源,提早應對流量的爆發。

持續增加用戶規模、調整AI推薦

儘管在年輕學生已有蠻高的滲透率,但Dcard仍持續擴大用戶規模,去年底他們開放了自學校畢業幾年的社會人士,可以身分證註冊會員。另外,目前Dcard用戶的日停留時間約為30分鐘,他們希望靠AI建立個人化的推薦機制,拉長用戶的停留時間,增加用戶的互動比率。今年進入測試階段的AI訊息推薦機制,正在不斷調整優化中,在AB測試的組別中,他們發現有的組別甚至有20到30%的提升,成效不錯。

目前在Alexa臺灣網站排名裡,Dcard排名第15名,表現甚至超過巴哈姆特、PTT等其他知名論壇,但Dcard並不以此為滿足。

「我們的目標是持續增加使用者,提升服務品質,為每個人找到共鳴」,林裕欽說。

CTO小檔案

林裕欽

Dcard創辦人暨執行長

學歷:臺灣大學資訊管理學系

經歷:2011年在大二的課程上和同學共同創作Dcard,2015 年正式成立公司導入專業化的經營,至今擔任Dcard公司執行長,負責制定戰略與管理公司,打造學習型組織,導入OKR目標管理。帶領打造AI推薦團隊,提供個人化推薦系統。

公司檔案

Dcard(狄卡)

● 地址:臺北市光復南路102號14樓

● 成立時間:2015年

● 主要業務:全臺灣最大、年輕族群有高滲透率與影響力的匿名論壇,並提供「抽卡」交友服務。去年新推出電商服務。

● 員工數:120人

● 資本額:3981萬元

公司大事紀

● 2011 年:推出 Dcard 網頁版

● 2013 年:推出Dcard Android版

● 2015 年:推出iOS版,成立狄卡股份有限公司

● 2016 年:提供整合行動、影音、原生廣告、內容、活動與社群的廣告解決方案

● 2018年:拓展版圖至港澳市場

● 2019年:推出電商「好物研究室」


Advertisement

更多 iThome相關內容