作為一名忠於內心的工程師,每當我看到一家公司發布有關它們技術棧的文章時,我都會泡一杯咖啡,坐下來耐心閱讀,看看有沒有新的發現。了解其他公司業務背後隱藏的一些技術十分有趣。就像娛樂八卦一樣,只不過這是技術層面的探索。
幾個月前,我開始開發另乙個 saas,該專案經歷無數次迭代。幸運的是,儘管專案仍處於早期階段,但是很多**已經對其進行了整合。
作為乙個自負盈虧的獨立創業者,我相信正是由於專注於自動化,才讓我能為來自 80 多個國家和地區的客戶提供可靠服務,並且每週持續提供新功能。當我想要了解服務的運**況或者其他方面的資訊時,我會嘗試利用我熟悉的工具。當然,我也明白,在一些特殊情況下這些工具並不會幫到我。
現在,我簡要地介紹下平時使用的一些工具。
非常重要的一點是,雖然工具列表看起來很長,並且有一些是非常規且不常用的選項,但實際上我在基礎架構上花費的時間很少,如果有的話,每個月平均下來也就是幾個小時。還有一點就是個人推薦就像是開處方一樣,我認為對我非常有用的一些工具,可能並不適合你。一定要考慮自己的實際情況,並利用好當下你熟悉的工具。
多年來,我學習和使用過好幾種程式語言,但是對於獨立專案,我特別挑選出兩種程式語言。這兩種程式語言可以在生產力以及可靠性上取得很好的平衡。
我最初將所有資料都儲存在 sqlite 資料庫中,對資料進行備份意味著要將副本資料複製到 s3 之類的物件儲存中。之前對於測試過的一些小型站點來說,沒有什麼問題。但是,隨著專案的功能及頁面越來越多,我需要更多專門的資料庫來支援這些功能:
與這篇文章描述的一樣,我不會將我的基礎設施視為寶貝一樣對待。伺服器和集群本來就是乙個工具而已。所以如果某一台伺服器出現問題,用另外一台正常的伺服器替換一下就好了。這意味著所有的操作在 git 倉庫中被描述為**邏輯,並且我不會通過 ssh 登陸伺服器進行一些操作。你可以將這個描述視為乙個模板,可以通過乙個命令將整個基礎架構轉殖到任何的 aws 服務中。
這在災難恢復時也會對我有所幫助。我只需要執行一些命令,幾分鐘後,我的應用服務就可以重建並能正常執行了。當我將應用從 digitalocean 遷移到 linode,以及最近往 aws 遷移時非常有用。所有的操作都通過**描述和執行。因此,即使在幾年後,我也很容易的跟蹤專案的相關部署和運**況。現在所有的公司都擁有 aws iam 策略或者 vpc 子網,這些都是通過一些 ui 介面點選操作完成的,現在所有人都離不開這一功能,因為確實給使用者帶來了很多便利。
我從最開始使用月費 5 美元的 digitalocean 單例項伺服器開始,逐步轉向使用 kubernetes 來管理服務,因為我正在徹底改變 kubernetes 提供的一些開箱即用的功能(比如:服務發現、tls 認證、負載均衡、日誌滾動管理、滾動發布、容量管理等)。
但是,即使在較大的伺服器例項上,使用 kubernetes 管理的 digitalocean 也同樣存在可靠性問題。集群 api 服務經常會隨機地停止工作並且無法恢復,這會破壞包括負載均衡在內的許多集群服務,也就意味著服務停機無法對外提供正常服務。每當發生這種情況時,我會重新建立乙個新的集群,儘管使用 terraform 可以很輕鬆的實現,但是這並不會增加大家對其託管服務可靠性的信心。我懷疑是他們的資源不是特別充足導致的,考慮到他們的服務收費較低,因此這是可以理解的。
不幸的是,幾周後,我就無法解決上面提到的問題了。這就是為什麼我決定遷移到linode的原因,在接下來的乙個半月的時間裡,系統再也沒有出現過任何問題。
但是,aws 向我拋來了更加誘人的優惠,所以我最近又做了一次遷移。aws 還支援使用託管服務比如 rds 來減輕 postgresql 的壓力,這對我來講是個很大的優勢。我的遷移工作沒有那麼複雜,因為我的所有基礎架構都是通過 terraform 和 kubernetes 配置清單進行描述的。系統遷移可能會花費或長或短的時間,所以一定要有耐心。這一方面的話題可以在其他文章中找到。
Vue book 乙個簡單的全棧專案
a full stack project about book 本專案實現了一些簡單的功能,後台可以對圖書進行錄入錄出 掃碼或手動 前台顯示錄入的圖書。具體請看下面的實現邏輯圖。我在自己的伺服器上把這個專案搭建好了,但是,目前不便給出登入後台的鏈結,只給出前台的鏈結,本專案只針對移動端,所以最好在手...
Vue book 乙個簡單的全棧專案
a full stack project about book 本專案實現了一些簡單的功能,後台可以對圖書進行錄入錄出 掃碼或手動 前台顯示錄入的圖書。具體請看下面的實現邏輯圖。我在自己的伺服器上把這個專案搭建好了,但是,目前不便給出登入後台的鏈結,只給出前台的鏈結,本專案只針對移動端,所以最好在手...
乙個小專案的技術選型
很簡單的乙個專案,主要分 通訊模組和服務模組。客戶端採用delphi開發,通訊方面考慮 midas技術或webservice。webservice效率上相比midas要低 拋開web防火牆的苛刻要求,midas中的socketconnection不論是在效能上還是在靈活性上應該說都是比較好的選擇。更...