為什麼我要使得GOLang重寫SAAS(軟體即服務)服務端

zhumingwu發表於2024-05-05

引言

“道”在中國哲學中,是一個重要的概念,表示“終極真理”。“道”這一概念,不單為哲學流派諸子百家所重視,也被宗教流派道教等所使用。大道至簡的意思就是大道理是極其簡單的,簡單到一兩句話就能說明白。所謂“真傳一句話,假傳萬卷書”。

正文

在開啟獨立創作之路之前,我主要用不用.net 和 java等技術開發後端。那麼,為什麼我要選擇一個不熟悉的技術呢?答案:大道至簡

沒有實踐,哪來真知?

過去很多年,Java的生態很成熟,社群也比較強大。各種開源框架以及jdk,版本更新都是挺快的。而且jdk也在吸收更多其他語言的優點,並不是一成不變。其次,Java門檻比較低,也比較適合企業級應用開發。軟體開發最終還是實現業務邏輯,各種框架和中間價等只是為了讓開發更加簡單和高效。業務邏輯才是王道。最後,Java經過那麼多年的發展,市面上一大把的Java程式設計師,好招人,而go相關的人才較少,那為什麼我還要選擇GoLang重寫服務端。一切都來源於實踐。

SAAS(軟體即服務)真的需要是什麼?

  1. 超低的成本

    1. 無論是CPU的效能還是記憶體的空間,我需要的是最低的成本。
    2. Go 語言具有出色的效能,特別是在併發和網路程式設計方面。對於 SAAS 服務端來說,處理大量併發請求和高效的網路通訊是非常重要的。Go 語言的輕量級執行緒(goroutines)和內建的併發原語(如 channels)可以極大地簡化併發程式設計,同時保持出色的效能。
    3. 我真不想要垃圾回收器(GC),奈何對記憶體的管理是一件相當複雜的事,所以我只能退而求其次選擇GC,GoLang的GC對於伺服器端應用來說非常友好。它能夠在保證記憶體安全的同時,減少記憶體洩漏和碎片化的風險。這對於長時間執行的 SAAS 服務端來說尤為重要。
  2. 快速的響應

    1. 易於部署和擴充套件:Go 語言編譯後的程式是靜態連結的,不依賴於外部執行時環境。這意味著你可以輕鬆地將 Go 程式部署到各種環境中,包括雲伺服器、容器和邊緣裝置等。此外,Go 語言的併發特性也使得它非常適合構建可擴充套件的 SAAS 服務。
    2. 強大的標準庫:Go 語言擁有強大的標準庫,包括網路程式設計、資料庫操作、加密、壓縮等各個方面。這使得在開發 SAAS 服務端時,你可以直接使用這些庫來快速構建功能,而無需依賴外部庫或框架。
    3. 簡潔的語法和快速的開發速度:Go 語言的語法簡潔易讀,學習曲線相對平緩。同時,由於其編譯速度快且執行時開銷小,因此開發迭代和測試過程也非常迅速。這有助於加快 SAAS 服務端的開發進度。
  3. 穩定的服務

    1. Go 語言擁有一個龐大的開發者社群和豐富的生態系統。這意味著你可以輕鬆地找到相關的教程、庫、工具和支援。這有助於降低開發風險和提高開發效率。
    2. 安全性和穩定性:Go 語言在設計和實現時非常注重安全性和穩定性。它提供了許多內建的安全特性,如記憶體安全、型別安全等。同時,由於其簡潔的語法和嚴格的編譯過程,Go 語言程式也更容易避免常見的程式設計錯誤和漏洞。
    3. 成本效益:使用 Go 語言重寫 SAAS 服務端可能會帶來一些初始的投資,但長期來看,它可以降低維護成本和提高開發效率。此外,由於 Go 語言在效能、可擴充套件性和安全性方面的優勢,它還可以幫助你構建更具競爭力的 SAAS 產品。

實踐中有很多畫蛇添足的行為

在SAAS(軟體即服務)的開發中,其實有很多畫蛇添足的行為。比如:ORM(物件關係對映):

  1. 效能:
    • 使用一些框架,通常會在執行時進行各種封裝、抽象和轉換,這可能會引入一些額外的開銷。對於需要高效能、低延遲的應用來說,直接使用最原生SQL或儲存過程可能會更高效。直接生成資料,HTML更加靈活和高效。
  2. 靈活性:
    • 很多框架通常提供了一套固定的API和模式,這可能會限制開發者的靈活性。實際上,SAAS服務並不需要適配不同的資料庫,有哪個使用者關心你使用了MySQL、Orcale還是MsSQL。
    • 使用者在意的是他的瀏覽器是否可以正常訪問我們的網站,在這樣的情況下,Vue,React的限制往往會忽略掉一些特別的使用者訪問。
  3. 學習曲線:
    • 無論我們學習什麼框架,其實都需要在掌握基本的技術原理之外,還得掌握這個框架的一些特性。所以我們為什麼要多學那些可能還會給我們帶來更多問題的技術框架呢?

總結

需要注意的是,以上原因並不是絕對的,在某些情況下,框架可能會帶來更高的開發效率和更好的程式碼質量。只是作為SAAS(軟體即服務),沒有必要為了解決一些開發效率,而引入更多的問題,我們需要的是答案。

相關文章