LY Corporation Tech Blog

支持 LY Corporation 和 LY Corporation Group (LINE Plus, LINE Taiwan and LINE Vietnam) 服務,宣傳技術和開發文化。

LINE 購物幕後推手 @ 中原大學企業參訪

前言

後端工程師在軟體開發過程中扮演著不可或缺的角色。他們負責處理伺服器端的邏輯、資料庫管理以及 API 的設計與實作,確保前端與後端的順暢溝通。這些工作不僅影響系統的效能與穩定性,也直接關係到使用者的體驗。

因此,今天的企業參訪活動中,我們希望與各位同學分享,身為 LINE 購物的後端工程師在實際工作中的應用與挑戰。透過這次的分享,希望能讓大家更深入了解這個角色的重要性,以及如何在未來的職涯中做好準備。

LINE 購物功能介紹

LINE 購物是一個以回饋 LINE Points 為主的導購服務,透過整合大量商品與價格資訊,幫助使用者做出更聰明的購物選擇。使用者可以進一步被引導至合作商家的網站完成消費,並最終獲得回饋。

這項服務的實現背後,凝聚了許多前後端工程師的努力。接下來,我們將深入探討主要功能的實現過程,並分享後端工程師在其中所扮演的關鍵角色與付出的努力,這些可能是各位同學尚未了解的部分。

後端工程師職責

後端工程師的主要職責包括:

  1. 伺服器端邏輯處理:設計並實現高效的業務邏輯,確保系統能夠穩定運行,並滿足業務需求。
  2. 資料庫管理:負責資料庫的設計、優化與維護,確保資料的完整性與安全性,並提升查詢效能。
  3. API 設計與實作:開發穩定且易於擴展的 API,為前端提供可靠的數據接口,並確保接口的安全性與一致性。
  4. 系統效能優化:分析並解決系統瓶頸,透過監控與調整,提升整體效能與用戶體驗。
  5. 問題排查與修復:快速定位並解決系統中的錯誤與異常,確保服務的穩定性,並減少對使用者的影響。

這些職責需要後端工程師具備扎實的技術基礎、良好的溝通能力與靈活的應變能力,才能在快速變化的開發環境中脫穎而出,並為團隊創造價值。

以購物車功能為例

以下將會以 LINE 購物中的購物車頁面作為一個練習,試著以後端工程師的角度下去思考,可能會需要有哪些任務需要完成。

待買清單頁籤(顯示對應數量)

在購物車頁面中,頁籤分為「降價商品」和「加碼商品」,並以捲動方式呈現。這裡需要實現的功能包括:

  1. 待買清單列表 API:提供商品清單的數據接口。
  2. 頁籤商品總數 API:提供每個頁籤下商品總數的數據接口。

後端工程師需要定義 API 規格,並設計待買清單的資料存放方式,確保查詢效能最佳化,同時降低儲存成本。

商品到架通知提醒

可以針對任意商品設定理想價格通知,一旦商品價格調整後滿足目標價格,使用者就會收到對應的通知訊息。

需要實作的功能包括:

  1. 到價通知設定功能:提供 Create、Update、Delete API。
  2. 定時任務(Cron Job):檢查使用者設定與當前商品價格的差異。
  3. 通知類型:支援多種通知渠道,例如 APP Notification、LINE Flex Message、LINE 購物站內通知與 Email。

考慮到提供使用者設定的介面,以及後續參考對應設定的排程任務,最終再考慮會使用何種通知渠道來讓使用者得知。

導購用戶旅程

經過上面一些範例的練習,各位同學已經比較清楚後端工程師所負責的業務內容,再來就回到最初分享的導購的用戶旅程。在這過程中,一樣可以在背後發現許多後端工程師所需要負責的任務。

開發容易,維護難

從學生到業界的轉變

單純介紹後端工程師的職責或許略微單調了點,所以我想再多分享一些關於自身從學生到業界轉換過程中的感受,其中最大的差別在於對「維護」的重視。

在學生時期,大多數開發的程式都是一次性的,可能是為了概念驗證,或者是練習資料結構、演算法等目的而寫的。這些程式通常不需要長期運行,也不需要考慮後續的維護問題。然而,進入業界後,開發的服務往往需要長期穩定地運行,並且隨著需求的變化進行持續的更新與優化。

這樣的轉變讓我深刻體會到,開發、維護與監控三者之間是息息相關的。開發時需要考慮程式的可讀性與可擴展性,為未來的維護打下基礎;維護時則需要快速定位問題並進行修復,確保服務的穩定性;而監控則是維護的基石,透過即時的數據與警報,幫助我們及早發現潛在問題,避免對使用者造成影響。

這些經驗讓我明白,後端工程師的價值不僅在於能夠開發功能,更在於能夠確保服務的長期穩定運行,並在面對挑戰時快速應對。這也是我認為從學生到業界最大的心態與技能上的轉變。

開發

開發選擇與維護成本

專案開發所選擇的程式語言、框架與套件,往往不僅影響開發效率,也直接關係到日後的維護成本與普及度。選擇一個穩定且廣泛使用的技術棧,能夠確保在未來遇到問題時,能夠快速獲得漏洞修補,並且更容易找到具備相關技能的人手接替開發。

在選擇技術時,除了考慮當下的需求與團隊的熟悉程度,也需要評估該技術的社群活躍度與長期支持性。這樣的選擇不僅能降低技術債的風險,也能讓專案在長期運行中更加穩定與高效。

監控

在開發時期就需要評估需要留下哪些方便定位問題的指標訊息,後續可以透過像是 Grafana 的服務來建立一個高效的 dashboard,來得知目前服務在哪邊出現了問題,影響範圍有多大,是否需要人工介入。

此外,監控不僅僅是用來發現問題,還可以用於預測潛在的風險。例如,透過分析歷史數據,發現某些資源的使用量逐漸接近臨界值時,可以提前進行擴容或優化,避免問題發生。這樣的主動式監控能夠大幅提升系統的穩定性與可靠性。

最後,監控系統的設計也需要考慮到擴展性與可維護性。隨著服務的成長,監控的範圍與指標可能會不斷增加,因此需要選擇一個靈活且可擴展的監控解決方案,確保能夠滿足未來的需求。

告警疲乏

有了監控以及相關的錯誤訊息後,就需要考慮到告警疲乏的問題。如果警告持續發生,但每次都被視為已知錯誤而不作為,久而久之,這套機制的效用將會逐漸減弱。正確的方式應該是:

  1. 錯誤分級:將錯誤依據嚴重程度進行分級,例如高、中、低優先級,確保高優先級的問題能夠即時處理。
  2. 修復時限:界定每個錯誤等級需要在多少時間範圍內修復,並設置相應的 SLA(服務級別協議)。
  3. 告警頻率管理:避免重複告警,對於已知問題可以設置靜默期,確保新問題能夠被及時發現。
  4. 定期檢視:定期檢查告警規則與處理流程,確保其仍然符合當前系統的需求與狀態。

透過這些措施,可以有效減少告警疲乏的情況,讓監控系統真正發揮其價值,幫助團隊快速應對問題並提升系統穩定性。

衍生閱讀與資源

在設計與實現監控系統時,建立高效的 Dashboard 是不可或缺的一環。以下是一些資源,幫助我們更深入地理解如何構建與優化監控面板,並有效應對告警疲乏的挑戰:

  1. Grafana Dashboard Best Practices
    提供了建置高效 Grafana Dashboard 的實用建議,幫助你快速定位問題,提升監控效率,並確保系統的穩定性。

  2. Prometheus Monitoring Fundamentals
    深入了解 Prometheus 的核心概念與使用方式,為你的監控系統奠定堅實基礎,並學習如何有效收集與分析指標數據。

  3. Reduce Alert Fatigue
    探討如何透過分級管理、靜默期設置與定期檢視等方式,減少告警疲乏,讓監控系統真正發揮其價值。

透過這些資源,可以進一步提升監控系統的設計與實現能力,為系統的穩定性與可靠性提供更強有力的保障,並在面對挑戰時更加從容應對。

結語

後端工程師在現代軟體開發中扮演著舉足輕重的角色,不僅是技術的實踐者,更是系統穩定性與效能的守護者。從伺服器邏輯的設計到資料庫的管理,從 API 的開發到系統效能的優化,每一項工作都需要深厚的技術基礎與縝密的思維。

透過今天的分享,我們希望能讓大家對後端工程師的角色有更全面的認識。無論是技術能力的培養,還是面對挑戰時的應變能力,這些都是未來職涯中不可或缺的技能。

最後,無論你是剛踏入軟體開發領域的新手,還是已經有一定經驗的開發者,希望這篇文章能為你提供啟發,幫助你在後端開發的道路上走得更遠、更穩。未來的技術世界充滿挑戰,但也充滿無限可能,期待你成為其中的一份子,為技術的進步與創新貢獻自己的力量。

image