Jasonmel Online

個人網站砍掉重練

2024/02/09 (Fri.)

睽違十年,終於再度下定決心,把個人網站做了一次大重寫,也把底層架構整個全部翻新。

讓人感到興奮的新版個人網站架構。讓人感到興奮的新版個人網站架構。

在 Yahoo 工作期間,第一次接觸到 Node.js 搭配 CI/CD 的開發流程,就深深被這套模式給吸引。那時就覺得,這才是網站開發應該有的樣子:網站可以在本機端運行起來,只要檔案一變動,馬上就反應在瀏覽器上,開發完成把程式碼推上 repo 之後,CI/CD 流程自動進行測試,然後自動部署到 staging 機器上,由 QA 進行最後的把關,最後再一鍵自動部署到 production 機器上。當時的個人網站還是以 Apache/PHP 運行的,光是要在本機端開發就不那麼直覺了。同時,當時公司的 CI/CD 是使用 Jenkins 的內部版本,如果要自己去架設維護這套系統,是還蠻殺雞用牛刀的。因此也就只能在公司裡好好享受這樣的開發環境了。

後來到了微軟,網站開發清一色都是圍繞在 .NET, C#, Visual Studio, Windows Server 等等的微軟方案,大概也只能在公司跟著用,難以套用在個人網站上。

再來到了 Google,雖然網站開發表面上用的是 Angular,是個蠻開源的東西,但底層還是奠基於許多很強大的公司內部的生態系統,也是個只能在工作當中好好享受的開發環境。

終於,到了 NVIDIA,第一個被指派的任務,就是把某個重要的內部工具網站整個翻修改寫。由於某個專門在搞網頁的部門推薦使用 Next.js,就硬著頭皮去接觸這個當初並不熟悉的 Node.js + React.js 的框架。而在開發完成後,也順帶把 GitLab 的 CI/CD 給串起來。配合 Ansible 和 Docker,使得運行環境的設定得以自動化和模組化,又讓整件事更加單純和可靠,不用再像以往,重新設定一台新機器都要手動安裝一堆有的沒的,還要擔心在機器裡面操作,一不小心就會把東西搞壞。如今機器壞了也沒差,再開一台,Ansible 一跑,Docker 一上,就都設定好了。甚至,因為有了 Docker 的關係,使得一台機器上同時跑 Apache/PHP 和 Next.js 成為可能,只要前面以 Nginx 來做分流,就有機會讓新舊網站同時並存。這才發現,這一整套唾手可得的方案,不就是自己夢想中網站開發應該有的樣子嗎?沒想到這是有可能以如此廉價、如此優雅的方式辦到的!既然如此,心動不如馬上行動,終於讓個人網站又更接近自己喜歡的樣子一步了!

這時候,再回頭看看 1997 年做的現在看起來很智障的第一代個人網站,有種說不出的感動。沒想到寫網頁可以一路寫到現在,還能靠著這門技術在各大公司之間走跳,一路體驗著各種不同的 web 技術,隨著 web 的技術演進學習成長,應該算是很幸運的人了吧。