返回作品列表

Housing Crisis Analysis System

用雲端處理社群資料的分析系統

在大學雲端專案中整合資料蒐集、處理、儲存與分析服務,並將約 33 萬筆文件的初次索引時間從超過 4 小時降至約 1 小時。

Kubernetes(K8s)Elasticsearch雲端資料分析

專案概述

Housing Crisis Analysis System 是一個分析 Reddit 與 Mastodon 上澳洲住房危機討論的大學團隊雲端專案。系統透過 Kubernetes、Fission 與 Elasticsearch,串起定期資料蒐集、處理、儲存與分析;Jupyter Notebook 再透過 API 取得分析結果。

我負責部署與系統整合,包括 Fission 設定、自訂 Docker runtime、分析 API、Elasticsearch 資料匯入與效能調校。資料蒐集、NLP 處理、Elasticsearch mapping 與視覺化主要由其他團隊成員負責。

問題脈絡

團隊需要把分別開發的資料蒐集、處理、可搜尋的資料儲存、分析 API 與 Notebook 呈現串成一套能運作的雲端系統。初次將約 33 萬筆文件寫入 Elasticsearch 時,耗時超過 4 小時,拖慢後續驗證與分析迭代。

專案使用 NeCTAR 提供的課程環境。我負責讓既有平台、functions、runtime 依賴、資料流與 API route 能接起來並穩定運作。

範疇

我在 NeCTAR 提供的環境中,主要負責 Kubernetes 與 Fission 的部署設定、服務整合與除錯、自訂 Docker image、分析 API 部署,以及 Elasticsearch 匯入效能調校;也使用 CronJob 執行排程工作,並以 Kubernetes Secrets 注入服務憑證。

我的工作範圍限於課程提供的環境,不包含 Kubernetes 叢集佈建、autoscaling、SRE 維運或完整的 production security architecture。

我做了什麼

我設定 Fission 部署環境與 HTTP routing,讓 Jupyter Notebook 能呼叫分析 functions。為了讓 NLP 與 API 工作負載使用一致的依賴,我建立自訂 Docker image 並整合到 function 的部署流程。

針對 Elasticsearch 初次匯入,我調整成 bulk ingestion、批次寫入與平行化處理。部署與效能觀察時,我使用 kubectl top 與 Kibana 協助除錯,並以 GitLab 集中管理整合後的程式碼與部署資源。

技術架構

定期資料蒐集透過 Kubernetes CronJob 與 Fission functions 執行;Python 工作負載使用自訂 Docker runtime;Elasticsearch 負責儲存與聚合;Fission HTTP routes 提供分析 API,最後由 Jupyter Notebook 透過 API 取得分析結果。平台部署在 Melbourne Research Cloud(NeCTAR)的 Kubernetes 環境。

專案影片介紹

Housing Crisis Analysis System 的專案介紹影片。

專案資料

PDF · 21 頁 · 2025 年 5 月

Housing Crisis Analysis System 完整專案報告

共 21 頁的完整技術報告,內容包含系統架構、實作方式、分析結果、效能調校、限制與團隊分工。

關鍵決策

挑戰

目前成果

系統最後可處理約 33 萬筆社群資料,並提供能由 Jupyter Notebook 呼叫的分析 API。最明確的量化成果是 Elasticsearch 初次索引時間,從超過 4 小時降至約 1 小時。

  • 在 NeCTAR Kubernetes 環境整合 Fission functions、Docker runtime、Elasticsearch 與分析 API。
  • 以 CronJob 排程定期工作,並以 Kubernetes Secrets 注入服務憑證。
  • 將約 33 萬筆資料的初次索引時間由超過 4 小時降至約 1 小時。

4h → 1h

初次索引時間

33萬筆

處理文件量