HackMD 圖片大搬遷,9 百萬張圖片備份大解密! | HackMD Blog
May 19, 2023

HackMD 圖片大搬遷,9 百萬張圖片備份大解密!

Ann
Ann
負責行銷的那個女生

HackMD 圖片大搬遷,9 百萬張 Imgur 圖片備份大解密!

相信 HackMD 使用者這幾天應該都有收到我們寄出的轉移完成通知吧?

日前 Imgur 官方宣佈,於 2023 年 5 月 15 日起採用更新版本的服務條款,其中與 HackMD 最為相關的部分為「Imgur 非註冊用戶上傳的低流量圖片、未被他人使用的舊圖也將陸續遭到刪除」,這項政策可能會連帶影響上傳 Imgur 圖像的 HackMD 免費用戶。

HackMD 一直以來都相當重視用戶隱私及使用權益,所以開發團隊決定在最短的時間內將所有使用者上傳至 Imgur 的圖片全數轉移至 HackMD 的雲端空間,確保每位用戶的權益不會因為 Imgur 的更動而影響到原本的筆記內容。

簡而言之,5/15 以後、如果 Imgur 開始大量刪除圖片,HackMD 付費用戶的筆記不會受到任何影響,仍會正常顯示圖片。

Imgur 釋出消息後,同時我們也收到來自四面八方的訊息,社群平台上的討論尤其熱烈,礙於先前人力及時間有限無法一一回應大家的提問,現在就由小編和技術長 Max 與大家分享我們的處理流程吧!

目標:「0 影響」!

「Imgur之亂」似乎完全沒有影響到你的筆記,正是因為我們在 2 週內將所有使用者的圖片全部都轉移完成啦!

  • 小編 : HackMD 是如何在短時間內處理完這麼大量的筆記內容呢?

  • Max : HackMD 是一個編制相當精緻的團隊,除了日常維護工作外還有許多新項目正在進行,面對突然出現的挑戰,我們必須非常快速的釐清問題大小,以下是我列出本次的處理步驟,與大家分享:

    • 清查系統中有用到 Imgur 上傳的部分
      • 筆記中上傳的圖片
      • 使用者上傳的 avatar
      • 團隊空間的 logo
    • 統計需要處理的圖片數量
    • 定位到相關的實作程式碼,並找到熟悉該工作的工程師討論
    • 分成多階段進行
      1. 先將筆記中的圖片與關聯抽出來
      2. 逐筆進行圖片轉移到 HackMD 的圖片空間
      3. 讓全站使用者都使用 HackMD 的圖片空間,避免未來又遇到需要轉移的狀況
      4. 讓付費使用者享有圖片網址自動轉換
      5. 通知曾經有在 HackMD 上傳圖片到 Imgur 的使用者已經轉移完成
  • 小編 :實際施作上有遇到什麼困難嗎?

  • Max : 首先,統計圖片和筆記的數量時我們就已經知道會是有點複雜的工作了,這次需要處理的Imgur 圖片約有九百萬張,轉移的資料為 1.8TB,這些圖片遍佈在 127 萬份筆記中,分別屬於 15 萬個用戶以及約一萬個團隊,要如何在不變更筆記內容的狀況下轉移圖片是非常大的挑戰和困難。

  • 小編 : 是如何順利解決的呢?

  • Max : 我們有想過如果讓免費使用者繼續維持用 Imgur,或是轉用其他服務,未來還是有可能會遇到相同要轉移的狀況,為了保障使用者的隱私,這次決定讓所有使用者都能用到 HackMD 的圖片空間,強化隱私並一勞永逸。不過如此大量的圖片,原訂是需要耗費一週才能轉移完成,經過討論我們決定透過並行的方式批次處理,本次使用 AWS Lambda 同時最多跑 15 個 jobs,每秒可以備份約 50~100 張,最後花了三天才轉移完成。

  • 小編 : 有一些使用者建議我們推付費方案轉移,為什麼最後選擇直接進行轉移呢?

  • Max : 我們一直都以維護「每一位」用戶的使用權益為原則,我們無法預期使用者何時會付費也不知道 Imgur 會移除哪些圖片,有很多免費的使用者長期公開分享很多有價值的內容,因此希望所有筆記中的圖片都不會遺失(當然不包含違法使用的小部分),在這次處理時我們做得相當周全,無論是什麼時候上傳的圖片都會進行轉移,每一位使用者都可以在筆記的筆記設定(Settings → Notes)頁面看到自己總共有幾張圖片已經完成轉移。

如下:進入個人筆記頁面左下角點選 ⚙ Settings ➤ 側邊欄點選 Notes

感謝使用者們的支持與愛護 ♡

HackMD 以開發者為本,我們非常喜歡使用者之間在社群上討論解法的互動方式,透過大家的互動我們也感受到許多溫暖,在轉移的消息公布後有許多使用者轉換付費以行動支持我們,原來團隊長期默默耕耘是有被看見的(拭淚),希望我們的努力有回應到大家的討論和期待。

為了提升使用者體驗,團隊從去年開始如火如荼的進行許多功能更新和調整,也陸續的訪談許多國際工作團隊,近一步了解用戶協作的需求。預計於今年下半年推出新版的 HackMD,有興趣的朋友可以透過 Preview features 一窺新介面。

當然,Beta功能都尚在開發和不斷地測試中,有問題也歡迎透過 support@hackmd.io 回饋完整的建議給我們。

HackMD 的 Discord 來了

同時我們也新設立官方 Discord 伺服器。對!沒錯!我們終於跟上 Discord 了!🎉

👉👉👉 點此加入

這是一個嶄新的交流空間,目前試營運中,日後我們也會將 HackMD 的第一手資訊公告在頻道上,也讓各位關心、好奇 HackMD 的朋友,直接與團隊互動。

未來我們會在頻道上進行有趣活動,與你一起塑造屬於 HackMD 的社群文化。期待每一個你!