- LegiNote 專案開發故事3 - Go 語言中的 Request
- 本文介紹使用 Go 語言開發 LegiNote 專案,從國會 OpenAPI 取得法律資訊的過程。內容涵蓋 HTTP 請求、資料結構定義等。
大家好,我是StatPan。
我正在撰寫LegiNote側邊專案的開發歷程。
請參考以下連結觀看之前的內容。
LegiNote的第四篇開發歷程,將會和以往略有不同,這次要談談基礎架構的建置。
要開發服務,勢必需要伺服器資源來運行服務。
當然,如果只是想體驗一下,而非持續運行服務,可以考慮使用個人電腦或許多公司提供的免費方案。
可以利用AWS、Azure、GCP等主要雲端服務商提供的免費方案來臨時使用,或者考慮使用Cafe24、Gabia等主機服務。
我選擇了Oracle Cloud的免費方案。可以說是雲端服務中,擁有最佳免費方案政策的服務。
簡單來說
可以全天候使用OCPU 4、RAM 24GB、SSD 200GB的虛擬機器來運行服務(雖然流量並非無限,但如果用量達到這個程度,可能就需要付費服務了)
但是,要使用這台虛擬機器,必須先通過惡名昭彰的Oracle卡註冊測試。
就這樣獲得了一台24小時不間斷運行的虛擬機器。
仍然感到不足的資源
在開發過程中,只有一個節點是不夠的。
根據我的經驗,需要可以區分開發和營運環境的資源,以便進行部署。
可惜的是,Oracle免費方案通常只能使用一個(標準情況下),所以我希望能獲得更多24小時不間斷運行的虛擬機器。
虛擬機器的替代方案:迷你電腦
為了達到與Oracle免費方案相同的規格,同時又能24小時不間斷運行,我需要一台性能足夠且功耗低的伺服器。
在搜尋相關資訊的過程中,我從DC線上論壇獲得了最大的幫助。
在n100、eqr6、ser8等候選機型中,因為我想要與上述虛擬機器規格相近的規格,所以我選擇了eqr6,並以非常低的價格購買了伺服器。
裸機eqr6 24萬元
SSD 256GB 2.2萬元
RAM 8GB * 2 1.8萬元
總計28萬元
如果考慮到將類似的虛擬機器不間斷運行1到2年,這筆費用是完全可以接受的,所以我決定購買。
到這裡都還算順利,但是…
問題的開始
久違的快遞
是的,這些迷你電腦在現今一兩天就能送達的時代,送貨時間卻非常久。
等待快遞的兩個星期漫長無比,甚至讓我懷疑是不是被中國海關扣押了,直到終於收到貨。
當然,沒有組裝迷你電腦經驗的朋友,可以在等待期間閱讀迷你電腦論壇上的許多實用文章。
(例如準備好除了隨附的USB驅動程式以外的開機磁碟,以及要一起安裝的驅動程式等等)
迷你電腦組裝
是的,組裝迷你電腦也是另一種獨特的經驗。因為我曾經自己組裝過桌上型電腦,所以我以為很容易,但迷你電腦的機殼很小,裡面塞滿了各種零件,所以組裝過程比我想像中困難許多,尤其是螺絲掉了之後再拿出來更是困難重重。
為了取出那顆螺絲,我稍微拆解了電源部分,但因為鬆動的連接,只要機殼稍微晃動,電源就會關閉,發生了很多有趣的事情。
事後回想起,這只是偽裝成回憶的痛苦而已。
迷你電腦設定
這次是與BIOS的戰爭。安裝Ubuntu後,發現系統預設會占用8GB的VRAM,導致可用記憶體只剩下8GB。
因為我打算將其用作伺服器,所以幾乎不需要VRAM,為了解決這個問題,我費了好一番功夫在舊版的BIOS選單中尋找相關功能。BIOS版本較舊,網路上找到的指南選單與實際情況並不完全一致。
最後,我終於在某個不知名的YouTube影片中找到了解決方法。
在此致謝,不知名的開發者…
家庭網路設定
我使用的是SK電信的網路,因為安裝時我不在現場,所以我不清楚具體的安裝過程,而且我主要使用的是KT電信的網路,所以一開始我並沒有太在意。
也就是說,我只考慮到使用從一個數據機延伸出來的路由器。
一開始我並不知道這一點,客廳的路由器和房間的路由器不斷使用不同的頻段,我還以為是房間路由器有問題,重複進行了幾次無謂的初始化。
後來經過搜尋,我終於發現了另一個路由器的存在,並在隱密的角落裡找到了那個數據機。
為了報復這一天的痛苦,我果斷地將擁有公開IP的數據機設為橋接模式,並將內部的SK路由器配置為NAT,以控制所有網路,但它又增加了一些變數,讓事情變得不那麼簡單。
目前還不清楚原因,但結果是我獲得了兩個公開IP。
雖然獲得額外的IP地址對服務來說是個不錯的結果,但我仍然不太習慣這種與其他電信公司截然不同的服務精神。
如果各位使用SK電信網路來建置家庭網路,請先了解以上事項,這樣就能輕鬆解決問題。
DDNS和DNS、端口轉發
如果我額外獲得了Oracle虛擬機器,其實就不需要進行這些步驟了,但我認為這也是一個很好的學習經驗。
家用IP通常會分配動態IP,因此如果只將IP對應到DNS伺服器,路由器重置後可能就需要重新進行對應作業。
為了解決這個問題,路由器本身也可能提供DDNS服務。
SK電信的路由器似乎沒有直接提供這項服務,而是建議使用第三方服務。
幸好我使用的是ASUS路由器,所以我沒有使用任何額外服務,而是使用了ASUS路由器管理介面中內建的DDNS功能,並將其對應到DNS伺服器,解決了這個問題。
因為我之前購買網域時有使用過DNS,所以這個部分處理起來比較順利。
問題解決後的感想
在只計算24小時運行虛擬機器的成本時,可能會覺得費用相當高昂,但如果考慮到初始設定的費用和時間成本,就能理解為什麼雲端服務如此受到歡迎。
儘管如此,為了持續運營這個非營利專案,以及為了個人的學習,我仍然計畫持續改進這套基礎架構。
事實上,目前還沒有需要緊急擴展規模的使用者。
未來,我可能會在文章中加入更多關於維護這個專案基礎架構的內容。
如果您有類似的問題或計畫,歡迎隨時提出。
以上就是StatPan的分享!
评论0