LINE Corporation 於2023年10月1日成爲 LY Corporation。LY Corporation 的新部落格在這裏。LY Corporation Tech Blog

Blog


陽明交大資工系-企業參訪:資料 & 前端工程團隊介紹

前言

大家好,我們是 LINE 台灣的開發者關係與技術推廣團隊。我們很高興能在 LINE Taiwan 熊大廣場與陽明交通大學資訊工程系的大家見面。LINE Taiwan 提供給理工相關科系學校同學的企業參訪機會。透過這個機會,學校同學可以深入了解 LINE 的研發工程文化,並探索相關的技術實習機會。在這次企業參訪中,我們將分享關於資料工程與前端工程團隊的內容與產業情況。接下來就讓我們一同用文章分享這次寶貴的經驗吧!

前端工程團隊投影片:https://speakerdeck.com/line_developers_tw/nycu-line-visit-uit-introduction-202304

資料工程團隊投影片:https://speakerdeck.com/line_developers_tw/nycu-line-tour-20230418

前端工程團隊介紹  - Stanley Lin

前端工程團隊在公司的產品開發流程中扮演著重要的角色。LINE的前端工程團隊主要負責以下幾個主要領域:

  1. 產品界面開發:前端工程師負責設計和開發LINE的產品界面,包括網頁和行動裝置的用戶介面(UI)和用戶體驗(UX)。他們使用各種前端技術,例如HTML、CSS和JavaScript,來實現優雅且易於使用的界面。

  2. 前端架構與開發工具:前端工程師負責建立和維護LINE的前端架構和開發工具,包括開發框架、函式庫、測試工具等。這有助於提升產品的開發效率和品質,確保團隊能夠高效地開發並交付高品質的前端產品。

  3. 效能優化:前端工程師負責優化網頁和行動裝置的性能,包括加速頁面載入速度、減少資源佔用,並確保產品在不同設備和網絡環境下都能提供流暢的使用體驗。

  4. 跨平台開發:前端工程師負責在不同平台間進行前端開發,包括Web、iOS、Android等,並確保產品在不同平台上的一致性和穩定性。

  5. 產品創新與改進:前端工程師與設計師、產品經理等團隊成員密切合作,參與產品創新與改進的過程,提供前端技術和設計的專業建議,並持續優化產品的使用者體驗。

為什麼要用 Scrum 來協助開發?

Scrum作為一個敏捷開發框架,能夠提供團隊更好的透明度、靈活性、協作和溝通,並幫助團隊提高產品價值和降低風險,因此被廣泛應用於軟體開發領域,有助於提升開發效率和產品品質。

  1. 增加透明度:Scrum強調每天的短週期迭代開發和每次迭代的演示和檢閱,使團隊和利害相關者能夠瞭解項目的進度和狀態,並能及時進行調整和優化。

  2. 提升靈活性:Scrum採用迭代和自我組織的方式進行開發,可以快速地對需求和優先順序進行調整,並快速交付可用的軟體產品。這使得團隊能夠更靈活地應對變化和市場需求。

  3. 提高團隊協作和溝通:Scrum強調跨職能團隊合作和日常的面對面溝通。通過定期的Scrum事件,如每日站會、Sprint回顧和Sprint規劃,團隊成員可以更好地協同工作,提高溝通效率和解決問題的能力。

  4. 增加產品價值:Scrum著重於持續交付高品質的軟體產品。透過定期的Sprint和產品檢閱,利害相關者能夠及時提供反饋和驗證需求,確保開發的產品能夠符合市場需求並產生價值。

  5. 降低風險:Scrum的短週期迭代和持續反饋機制有助於早期發現和解決問題,從而減少項目風險。此外,Scrum的透明度和自我組織特性有助於早期識別並解決團隊內外部的障礙,提高開發效率。

前端工程團隊會接觸到哪些技術呢?

前端團隊開發上會依照專案來選擇不同的框架進行開發,除了熱門的 React.js 、Vue.js 外,也導入了 Server-side Rendering 的框架 - Next.js/ Nuxt.js,並與 TypeScript 做整合確保程式碼的品質。

為了確保能交付更好的程式碼品質以及減少產品的的錯誤,我們也導入了 CI/CD 以及測試的工具,透過 Drone CI、Argo CD 等的整合,可以在程式碼進入 Pull Request 階段時,自動進行部署以及測試,若有錯誤發生,在程式碼審核階段時就會被擋下來,需要工程師重新提交修復好的程式碼後才可以繼續審核。

另一方面,為了測試工程師們撰寫的元件、程式碼等經過完善的測試,我們也導入了 SonarQube 等測試工具,程式碼必須有通過撰寫的測試才可以整併進入產品內。

若有新興的框架、套件、技術出現時,前端團隊也會進行評估,打造最小可行性產品,並將開發經驗分享給其他團隊,所以我們也並不侷限於使用上述的框架、套件,內部也會有讀書會、分享去對這些新的框架做調查。

面試經驗分享

這邊與各位分享面試流程,我在先前的 Blog 文章有分享到實習轉正的經驗,但由於我仍是從 LINE CAREERS 投遞履歷,基本流程仍然與公司外部的面試相同。

首先在投遞履歷後,HR會經過初步看過履歷,將資料交由負責部門做確認,確認完畢後將會邀請進行線上的前測,前測結束後則是遠端的技術面試,將會由 2-3 位不等的面試官以及主管針對履歷上提及的內容以及領域相關知識、個人特質等方向進行提問。若通過,這關結束後約莫 1-2 週將會有 HR 邀請約半小時的面試,主要也是了解應徵者是否適合公司文化、人格特質等等。之後則有可能與未來共事的團隊進行聊聊,若你年資夠長則會由技術長親自與你 1 on 1 面試。

資料工程團隊介紹 - Ray Lu

LINE 除了通訊服務外還包含了很多各式各樣的服務,例如購物、旅遊、禮物、新聞等等,這些服務其實產生了大量的內容與資料,Data Dev 藉由機器學習以及統計分析等方法來更加了解使用者與這些內容之間的關係並優化使用者體驗。另一方面,其實 LINE 也是一個大家很重視的行銷工具,我們有官方帳號,以及許多廣告版位。

我們透過使用者與各服務的互動,我們可以更全面了解使用者的輪廓與偏好,更精準的區分出目標客群,來做商業上的應用。

圖上藍色部分是一些我們團隊目前提供的解決方案,我們針對各服務做了不同的推薦系統,以及為了處理各個服務的文字內容,我們也做了自然語言處理 NLP 的服務,讓各服務可以輕鬆的使用像是文章分類、關鍵字提取甚至是文章生成等等功能。在商業應用方面,我們做了知識圖譜來描繪使用者和服務之間的關係,做了顧客價值預測、增益模型來了解使用者的型態,也做了很多資料分析的報表來提供商業上的洞見。

所以其實我們團隊涵蓋了非常多各式各樣的技術應用,那麼我們又是如何來分工合作來完成這些專案的呢?

在 Data Dev 中,我們主要會將成員劃分為四種角色。

第一個是 Data Engineer,資料工程師,這個角色主要負責處理原始資料,在大量茫茫資料海中收集各種有用的資料建立 pipeline 供後續分析使用

第二個是 ML Engineer,機器學習工程師,這個角色主要負責建立與維護整個專案的系統架構,包含系統設計、包裝成 API 部署後續的效能監控等等

第三個是 Data Scientist,資料科學家,這個角色主要負責偏演算法的部分,像是特徵工程與訓練資料的產生、模型訓練以及模型評估和選用等等

第四個是 Data Analyst,資料分析師,這個角色負責利用統計分析的方式處理資料,在複雜的資料中分析 pattern 或是將他以圖表簡單地呈現出來,讓大家可以更容易了解這些資料有什麼 insight 值得注意。

那麼接下來我們來看一下專案流程,以及這些角色在專案中實際上會如何合作吧

整個流程的步驟主要有資料的準備和探索,模型的開發,和最後的部署

在開始專案之前我們會和其他服務的同仁一起討論他們的需求,了解目前的做法、希望達成的目標以及評估要使用什麼方法,例如貼圖的同仁可能會希望有一個工具能夠幫他們找出相似的貼圖,可以方便他們在進行促銷活動的時候快速找出同一個主題的貼圖,原本的作法可能會用輸入文字和每組貼圖的標籤、描述做搜尋,但準度可能有進步的空間,我們可能就可以評估,現在比較新的技術可以訓練圖片文字混合的多模態模型來讓搜尋結果更好

接下來進入到第一步,資料的準備和探索的時候,我們會需要建立一個資料處理的 pipeline 從原始資料中擷取出我們要的部分並進行清理,以貼圖為例的話,我們就會需要圖檔和對應的文字描述,還要對文字進行去除特殊符號,關鍵字抽取等等前處理。

再來是模型的訓練和測試,我們需要去研究目前主流的技術閱讀一些論文來比較各個不同模型的效果,選擇一個在速度和準度上符合需求的模型,同時在這個步驟也需要建立模型訓練的 pipeline ,之後如果需要反覆的實驗或是有新資料進來要更新模型才能夠快速迭代版本。最後當我們有了一個還不錯的模型,我們需要將他包裝成 API 或者是設計一個 web 介面讓使用者能夠很快的使用模型,這些包裝好的模型還需要接上監控的機制,定時的檢查輸入的資料是否正常、部署的服務是否正常。

CLOVA FaceSign

我來到 LINE 之後第一個主要的專案就是將這套 CLOVA FaceSign 系統完整的升級和安裝,CLOVA FaceSign 是公司內部開發的一套人臉辨識系統,我們目前將他套用在公司的門禁系統上。這個系統裡面包含了很多元件,有註冊介面、管理介面、API、人臉辨識的核心模型、另外還有圖像以及使用者資料的儲存等等。

其實一個大型的系統用到了非常多的工具,光是安裝就比我想像中的複雜了許多,即使有過 web 開發、模型開發和部署經驗,在面對每個元件的串接時,還是需要相當多的時間去細讀裡面的程式碼以及注意每個套件的相容性才能夠順利完成。

CLOVA Chatbot

再來第二個專案是支援各個服務使用 CLOVA ChatBot,CLOVA Chatbot 是一個自助式的對話機器人建立平台,他提供使用者簡單的介面上傳對話資料然後就可以訓練問答模型,而我們主要負責的是建立一些聊天機器人的使用範例,包含了 API 的開發和 LINE message 的應用,讓對聊天機器人有興趣的其他服務可以快速的了解使用方式和上手。

經過 ChatBot 和 FaceSign 的專案後我對於 LINE 服務的部署和監控都有了基本的認識

Speech-To-Text

接下來的專案是 STT 語音識別,這個專案需要建立一個繁體中文的語音識別模型,在這個專案裡就完整的執行了前面提到的專案流程,包含資料的撈取、清理、資料的轉換、模型的訓練測試到最後的部署、監控。

我想大家或多或少都有接觸過資料的處理和模型訓練,比較特別的地方是我們有使用 airflow 這個工具,建立了自動化的資料處理和模型訓練 pipeline,這個工具可以幫助我們把流程整理的乾乾淨淨,漂漂亮亮,也可以很快的看到每個排程任務的狀態,以及輸入的參數。建立好 airflow 的 pipeline 然後把參數設定好之後,再也不用擔心一直做重複的事情,點個按鈕排排程,考試都考一百分!

另一個可以注意的就是利用了 bentoML 來包裝我們的模型變成一個 API,BentoML 提供簡單的程式介面讓我們可以把各種框架產生出的模型包裝成 API,間單又方便

在剛剛提到的幾個專案裡,我們用到了很多不同的工具,我相信大家或多或少都一定有碰過

但在學校的專題或是課程作業裡頭,可能比較少碰到的會是從資料收集整理一直到包裝部署服務的完整經驗

非常鼓勵大家可以多多實習或是在做 side project 的時候可以多去接觸使用這些工具,就算是小小的專案也可以包裝的很完整來練習、熟悉他們。

結論

很高興我們能夠有這個機會讓陽明交通大學資工系的同學們來 LINE Taiwan 企業參訪,希望你們能夠透過這次的活動,讓各位了解更多關於 LINE 的產品、文化和價值觀。我們也很期待未來能夠和你們有更多的合作機會,一起創造更好的社會影響力。

若您對 LINE TECH FRESH 有興趣,請參考以下介紹文章:

活動小結

立即加入「LINE 開發者官方社群」官方帳號,就能收到第一手資訊,或與開發者計畫有關的最新消息的推播通知。▼

「LINE 開發者官方社群」官方帳號 ID:@line_tw_dev

關於「LINE 開發社群計畫」

LINE 於 2019 年開始在台灣啟動「LINE 開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,已經舉辦 30 場以上的活動。歡迎讀者們能夠持續回來查看最新的狀況。詳情請看: