Skip to main content

技術選擇的力量:Lichess 如何以少勝多

· 7 min read
Darrenjon
Blogger

在科技產業,大型專案通常我們都會想到背後需要龐大的團隊來開發和維運。然而,開源的國際象棋平台 Lichess 卻打破了這一常規。每天支援超過 500萬場棋局 的 Lichess,其背後竟只有少數的核心開發者。這究竟是如何實現的?本文從影片 How 1 Software Engineer Outperforms 138 - Lichess Case Study 分享關於 Lichess 的成功秘訣,了解這位工程師如何透過獨特的技術選擇和開發理念,超越了擁有數百名工程師的競爭對手(Chess.com)。

架構與理念:簡化即是美

單體架構與微服務的結合

Lichess 採用了「帶有衛星的單體架構」:核心功能由主伺服器處理,特定任務(如 Stockfish 分析和 WebSocket 通訊)則由獨立的服務來承擔。這種架構既保持了系統的整體性,又擁有微服務的靈活性,達到了兩者的最佳平衡。透過將關鍵功能集中管理,同時分離特定的模組,Lichess 能夠高效運行並輕鬆擴展。

開發者的心態:專注與自律

  • 簡化程式碼:每新增一行程式碼,都需要仔細考慮其長期維護成本。Lichess 的開發者始終追求程式碼的簡潔與高效,避免不必要的複雜性。這種自律使整個 code base 保持清晰,降低了未來出現錯誤的風險。
  • 控制技術債:與龐大的團隊不同,單一開發者能及時處理技術債,防止系統變得臃腫不堪,保持了軟體的高品質。快速解決問題和優化程式,確保了平台的穩定性和可靠性。
  • 使用者體驗優先:Lichess 更關注 使用者體驗(UX),而非華麗的 使用者介面(UI)。這確保了功能的實用性和高效性,為玩家提供流暢的體驗。簡潔的設計使得新手也能輕鬆上手,增強了平台的吸引力。

作為開發者我們可以從 Lichess 學到什麼?

  1. 擁抱簡潔:減少不必要的功能和依賴,保持程式碼簡潔與及時處理技術債務。

    過多的功能和依賴會增加系統的複雜性,導致維護困難。Lichess 的成功在於專注於核心功能,避免不必要的臃腫。這也提醒我們簡潔的系統更易於維護和拓展,同時也能提高開發效率。精簡的程式讓問題更容易掌握,更新更為效率。

  2. 精簡前端,強化後端:將複雜的邏輯放在後端處理,確保前端高效簡潔,專注於使用者體驗。

    前端的簡潔設計可以提升使用者的操作效率和滿意度。Lichess 選擇將複雜的計算和邏輯交給後端伺服器處理,減輕了前端的負擔。這不僅提升了網站的響應速度,也使得前端的開發和維護更加容易。對於使用者而言,他們關心的是流暢的體驗,而非繁瑣的介面。

  3. 選擇合適的工具:根據需求選擇最佳的技術棧,高級語言用於處理複雜系統,性能語言用於關鍵組件。

    不同的技術有其特定的優勢和適用範圍。Lichess 在後端使用 Scala 來處理複雜的業務邏輯,同時在需要高性能的部分採用 Rust 等語言。語言的選擇是希望能確保了系統的高效運行和可維護性,也提醒我們根據專案的實際需求,選擇最適合的技術,而非盲目跟風選最流行的。

  4. 長期視角:使用有助於長期維護的工具,如靜態類型和函數式程式設計,接受並計畫處理不可避免的 bug。

    軟體開發不僅僅是完成當前的功能,更需要考慮長期的穩定性和維護成本。Lichess 採用了靜態類型和函數式程式設計等能夠降低錯誤率的技術,這使得程式更可靠、更易於測試。

  5. 價值導向:專注於為使用者提供價值和獲得個人滿足感,而非追求名利,倡導開放和協作的開發文化。

    Lichess 的開發者以熱情和使命感為驅動力,而非金錢和名聲。他們致力於為全球的國際象棋愛好者提供一個優質的平台,這種價值觀吸引了更多志同道合的人加入。專注於為他人創造價值,最終也會為自己帶來滿足感和成就感。開放和協作的文化,能夠凝聚社群的力量,創造出超乎想像的成果。

專注與簡化是往卓越的路前進

Lichess 的成功證明了專注和簡化的力量。在 Thibault Duplessis 的帶領下,Lichess 依靠捐贈運營,所有資金都用於產品的持續改進。他以極低的薪資工作,體現了對項目的熱愛和奉獻。

在適當的技術選擇和開發理念下,一位軟體工程師也能創造出影響深遠的產品。Lichess 的故事激勵著更多的開發者去探索簡潔、高效且有意義的工作方式,專注於為使用者帶來真正的價值。