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

Blog


政治大學 GDSC 校園參訪 - 資料工程 & LINE TRAVEL工程團隊介紹

前言

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

The Journey of My TRAVEL Internship - Leo Lin

LINE TRAVEL 是一個提供旅遊相關資訊和訂票服務的平台。用戶可以利用 LINE 官方帳號或是網頁平台,為使用者提供旅遊相關的資訊、訂購機票、訂房、訂票等服務。

以下是 LINE TRAVEL 提供的一些主要功能:

  1. 旅遊資訊:LINE TRAVEL 提供豐富的旅遊資訊,包括熱門旅遊景點、旅遊行程、當地美食、交通資訊、天氣預報等,幫助使用者計畫旅遊行程。

  2. 訂購機票:使用者可以透過 LINE TRAVEL 訂購機票,包括國內航班和國際航班。使用者可以比較不同航空公司的價格和航班時刻表,並進行訂購和付款。

  3. 訂房服務:LINE TRAVEL 提供訂房服務,使用者可以預訂國內和國際的飯店、民宿、度假村等,並比較不同住宿選項的價格和評價,進行訂房和付款。

  4. 旅遊優惠:LINE TRAVEL 提供各種旅遊相關的優惠、促銷和折扣,包括機票促銷、住宿優惠、旅遊套裝行程等,幫助使用者節省旅遊費用。

  5. 旅遊相簿:使用者可以在 LINE TRAVEL 上創建自己的旅遊相簿,上傳旅遊照片和分享旅遊心得,並與朋友和親人互動和分享旅遊體驗。

LINE TRAVEL 提供了一個綜合性的旅遊服務平台,讓用戶可以在同一個平台上查找旅遊資訊、訂購機票和訂房,並享受各種旅遊相關的優惠和促銷

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

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

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

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

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

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

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

身為一個 Automation Engineer TECH FRESH 的職責是?

工作內容大概就主要分為四個部分:test case create、automation、CICD、monitoring

  1. test case create: 每個sprint都會有不同的spec工程師們需要做開發,那也就會有新的功能需要QA們去做測試,這時就需要和QA討論,哪些這些功能中哪一些手冊流程比較繁瑣,或是這些是很重要的smoke test,就需要把這些記錄起來,未來透過自動化測試的腳本來覆蓋。
  2. automation:這是工作中最主要的部分,而自動化測試又分為兩種,一種是模擬使用者使用路徑的E2E testing,另一種則是測試response schema和 status的api testing。在我們LINE Travel團隊中,自動化測試主要用兩大框架,分別是Cypress和playwright。
  3. CICD:現在程式開發講求CICD,加速軟體開發流程。相關pipeline的撰寫或是refactor也是AE的職責之一。
  4. monitoring:軟體開發不是開發完功能release出去後就完成任務了,後續的監控也是很重要的部分。我們監控的pipeline每五分鐘就會執行次,相關的alert處理或是dashboard數據的觀察,也是我們平常工作的項目。

如何準備面試

在競爭激烈的實習職缺中,如何在眾多候選人中脫穎而出?從硬技術到軟實力,這邊將介紹一些準備面試的方向,可以幫助大家得到軟體工程師實習的通行證。

一、技術篇

1. 準備 side project

在面試之前,投入時間進行幾個 side project 是非常重要的。這不僅可以磨練技能,還可以讓您在面試時展示自己的實力。比如完成一個全端專案,這樣就可以同時展示前端和後端的技能。例如,前端使用了 React框架,而後端使用 Flask框架,並且串接 MongoDB。這種技術既能展現技術實力,也能讓面試官知道你有整合的系統的能力。

  2. 強調技術應用

而在面試中,就能談論在 side project 中使用到的技術。例如,您可以講述如何使用 React 創建網頁前端,不同Componnt和api是如何串接的。或是MongoDB 中schema是如何設計的。但這邊要注意的,關於這些技術的基本概念或是設計理念要清楚,不然基本的問題被問倒,面試官可能就會有你在履歷偷灌水的疑慮。像是如果有介紹使用到docker的相關專案,VM跟Container的比較這種基本概念就一定會被問到。

二、軟實力篇

1. 了解公司文化

每一間公司都會有不同的企業文化,在面試前了解公司的文化和價值觀是成功面試的關鍵之一。例如,再2023年1月,LINE就有推出LINE style 3.0 就有列出一些希望LINER能一同維護的文化。

2. 故事包裝

在了解公司文化後,就可以將公司文化中的某個元素包裝成自己的故事,以彰顯您的人格特質。例如,有個LINE style內容有關要有擁抱挑戰的精神,就可以在被問到遇到困難相關情境題中,把自己的故事包裝進去。這樣一來,不僅能展示出自己的軟實力,還能讓面試官覺得你非常符合該公司文化。

關於我和 Data Dev 變成家人的那件事 - Maggie Lee

Data Dev是為了幫助各種服務有效利用數據科學和機器學習技術,包括Today、Shopping、Music、Voom、廣告相關服務......等等。Data Dev提供的服務範圍也從基礎數據科學和機器學習理論應用,到機器學習平台的開發。Data Dev在許多AI應用上皆有對應的服務,例如:NLP相關的像是文章分類,命名實體辨識 (NER),自動關鍵詞擷取,甚至是文章生成、另外還有Martech相關專案、語音識別、計算機視覺

在我們團隊中有以下角色於ML pipeline中進行合作,皆在pipeline的諸多環節中扮演重要角色:

  1. 資料工程師 (Data Engineer):設計、建立和維護數據架構和管道(pipeline),以確保數據能夠有效地被處理、存儲和查詢,為Data Scientist提供可用及可靠的資料
  2. 資料科學家 (Data Scientist):對資料進行探索及分析,並從數據中發現規律、探索數據的意義、提出假說、驗證準確性,其中會使用統計方法和機器學習算法進行數據分析和建模
  3. 機器學習工程師 (Machine Learning Engineer):主要負責將機器學習模型應用於實際問題,並進行模型開發、訓練、評估、部署和維護等工作

MLOps 是什麼?

MLOps(Machine Learning Operations)主要是指將機器學習模型應用於實際生產環境中並進行運維管理的一套實踐方法和工具集。它結合了機器學習(ML)和DevOps(Development Operations)的概念,旨在確保機器學習模型在生產環境中的可靠運行、高效部署和持續改進。

MLOps 主要涉及以下幾個方面的工作:

  1. 模型開發與訓練管理:包括模型的開發、訓練、評估和驗證。這包括模型選擇、特徵工程、超參數調整等。

  2. 模型部署與運行管理:包括將訓練好的模型部署到生產環境中,並確保模型的穩定運行。這包括模型的佈署、容器化、自動化部署、服務器管理等。

  3. 監控與日誌管理:包括對模型運行時的監控和管理,例如監控模型性能、健康狀態、日誌管理、異常檢測和警報。

  4. 模型更新與版本管理:包括模型的更新和版本管理,例如持續集成/持續交付(CI/CD)的實踐,確保模型的更新能夠平滑地部署到生產環境中。

  5. 數據管理與版本控制:包括對機器學習模型所使用的數據進行管理和版本控制,確保模型的數據質量和一致性。

  6. 安全與合規性:包括對機器學習模型的安全性和合規性進行管理,確保模型運行符合相關的法規和政策。

  7. 自動化與自動化測試:包括自動化模型部署、測試、驗證和回滾,確保模型的自動化管理和測試的高效執行。

總之,MLOps 的主要目標是確保機器學習模型在生產環境中的可靠運行、高效部署和持續改進,以實現更好的模型性能、更高的生產力和更快的模型交付速度。

Machine Learning Engineer的使命是什麼?

機器學習工程師(Machine Learning Engineer)是一個擁有機器學習專業知識和軟體工程技能的角色,主要負責將機器學習模型應用於實際問題,並進行模型開發、訓練、評估、部署和維護等工作。以下是機器學習工程師主要的工作內容:

  1. 問題定義和需求分析:與領域專家和業務部門合作,理解和定義實際問題,確定機器學習應用的需求和目標。

  2. 數據準備和特徵工程:負責收集、清理、整理、轉換和準備數據,進行特徵工程,將數據轉換成適合機器學習算法訓練的格式。

  3. 模型選擇和開發:根據需求和數據特性,選擇合適的機器學習模型,並進行模型開發、優化和驗證。這包括選擇模型算法、調整模型參數、進行模型訓練和驗證等。

  4. 模型評估和性能優化:對訓練好的模型進行評估,分析模型的性能,並進行優化,例如調整模型參數、特徵選擇、模型組合等,以提升模型的預測能力和泛化能力。

  5. 模型部署和集成:將訓練好的模型部署到生產環境中,並與應用系統進行集成。這可能涉及模型的佈署、容器化、API設計和開發等。

  6. 模型監控和維護:監控模型在生產環境中的運行情況,檢測異常,進行故障排除,並進行模型的維護和更新。

  7. 模型優化和自動化:持續優化模型的性能,例如模型壓縮、加速、量化等,並利用自動化工具和技術提高模型訓練、部署和維護的效率。

如何實踐 MLOps

在ML workflow中實踐MLOps有三大要點:

  1. 版本管理:在pipeline當中除了source code要進行版本控管外,data pipeline的版本、model的版本、packaging的版本也至關重要,版本控管可以保證模型訓練的可重現性,模型的版本控制可以保證模型的一致性,方便回溯和保持預測品質,而packaging的版本控管可以確保環境以及模型的一致性。這些版本控管可以讓pipeline更加穩定和可靠,來更好地管理資料和模型及服務品質。
  2. 持續整合和持續部署:實現CI/CD流程以自動化所有操作,包括測試、打包、部署,除了加速上線流程,也能利用自動化測試,確保上線的程式碼的品質。
  3. 模型及資料監控:實現自動化監控和alert機制,以便及時發現性能下降,來達到持續訓練。另外,在pipeline的運行穩定性及資料品質上,可紀錄table的來源及schema並針對特定重要指標進行監測(例如:UU/AU)來提高服務的可靠性並防止數據問題。

將諸多open source工具(例如:Airflow協助持續訓練/MLflow協助模型版本控管/Bentoml協助ML service打包)結合pipeline的設計,就可以幫助我們輕鬆將MLOps導入專案當中。

團隊如何分配任務

團隊分配任務主要由三個面向來決定如何分派任務:

  1. 任務適配程度:需與主管於年初訂定組內及個人OKR,並於每個月1:1 meeting進行進度追蹤,若有任務可以滿足某位夥伴的個人key Result要求,則可考慮優先考慮分派給該夥伴
  2. 工作優先序:視任務緊急程度來分配(如果夥伴A目前有緊急任務且當前分配的任務也十分緊急,那就不適合分派給夥伴A)
  3. 工作量:視組員的工作量來進行分配(比較組員間的工作量)

而「工作優先序」以及「工作量」可以透過trello工具來進行管理,除了可以在個人版面編輯任務的優先程度外,也可以追蹤ticket數、專案任務數來作為工作量的衡量指標。

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

活動小結

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

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

關於「LINE 開發社群計畫」

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