開源人年會 2022

從零開始用 Go 語言開發網頁桌面系統!
2022年7月31日 , TR209
語言: English

你有想過用 Go 語言自幹雲端桌面作業系統嗎?

從 2016 年開始,我因為個人需要開發了一個名為 ArozOS 的開源網頁桌面作業及雲端硬碟系統,不僅持續不斷地更新至今,使用者人數也在不斷地增加。在這 30分鐘的議程中,我會跟您分享在開發及維護上的種種趣事與挑戰,包含:

  • ArozOS 系統的設計流程
  • 從 PHP 轉移到 Go 的原因
  • 重寫的過程和得到的改善
  • 如何設計可熱插拔的模組
  • 在 Go 內執行 JavaScript Interpreter 讓用戶進行 scripting

等等多種意想不到的開發技巧與實作方法!


如果你剛好有一片閒置的派(Raspberry Pi),想要建置一套個人用的雲端硬碟系統,你會選用甚麼方案?

ArozOS 是一套開源網頁桌面作業及雲端硬碟系統,誕生於 2016 年春天並在 2018 年時於 GitHub 上開源。最初是以 Raspberry Pi 為主要平台,不過也相容於 x64 的 Linux 伺服器、arm64 / armv7+ 的開發板,甚至相容 Windows、 Mac 及 OpenWRT 等平台。除此之外,ArozOS 在設計上參考了很多不同的商用及開源系統,包括 OS.js、Synology DSM 及 Google Drive 等,讓使用者可以很簡單的部署和存取到放在伺服器上的各種不同檔案。

隨著系統及使用者人數的成長,我們在效能和功能實現上逐漸遭遇到瓶頸,最終決定將整套系統由原本的 PHP 7 改用 Go 1.14 重寫。但不可避免的我們也在過程中遇上了很多問題,比如不知道如何正確的處理 Error、沒辦法進行模組的熱插拔、如何自己設計 sandbox 執行 ArozOS 的 WebApp 等等。

本次議程的內容大綱如下:
- ArozOS 系統及其作者簡介
- 從 PHP 轉移到 Go 的原因與痛點
- 基於 Reverse Proxy 的高相容性模組熱插拔架構
- Otto - Go 語言寫的 ECMA5 intepreter 與 ArozOS WebApp 的連接架構
- 透過 Go 語言進行系統 OTA 更新的方法分享與實作

Github:https://github.com/tobychui/arozos


內容難易度

Skilled

目標聽眾族群

想學 Go 的 PHP 開發者、對雲端硬碟 / NAS 有興趣的開發者

Toby Chui - 在台留學的香港人。香港理工大學電子計算學系畢業生,現為成功大學資訊工程系碩士生,同時也是開源軟體及硬體開發者,主要使用語言為 Go 及 Vanilla JS。