什麼是無伺服器(Serverless)架構?

雲端運算

在網站開啟的第一篇文章(懶惰的技術總監,文章開始發佈了)中有提到無伺服器(Serverless)的架構,以下簡稱Serverless,而我認為這將會是軟體工程師們未來的趨勢之一。那它既然這麼重要,我們就趕快來瞭解下什麼是Serverless吧!

沒有伺服器

很明顯「無」就是「沒有」,所以Serverless就是在我們的系統架構中,去掉所有的伺服器,而改用各種雲端運算的服務來取代。

既然沒有伺服器,以往我們在系統架構中的伺服器管理和維運等相關工作都不需要了,可能有些人還不瞭解有哪些,那我就在此簡單舉幾個例子:

評估伺服器

在建置系統前,會先評估要用的伺服器規格與數量。但系統上線後,常常有兩種情況,第一種是使用量比預估的少很多,我們就會覺得很浪費;第二種就是使用量比預估的超過很多,當急著要增加伺服器時,就會產生許多的成本。

若改為Serverless架構時,我們還是會做些評估,但是我們是用來計算每個月大概要花費多少錢在這些雲端服務上,而沒有浪費或產生更多成本的問題。

安裝伺服器

若系統要在伺服器上運作,我們就需在伺服器上安裝Linux或Windows作業系統、網頁服務、資料庫、FTP、程式執行環境等軟體。

若改為Serverless架構時,我們將不需安裝這些東西。

伺服器維運

我們的系統運作在伺服器中,常常會遇到一些伺服器軟硬體發生的問題,像是服務死掉、硬碟空間太滿、IO太高導致硬碟讀寫失敗、使用量太高導致CPU或記憶體吃緊等各種問題。

所以我們需要準備遠端連線的方法、設定防火牆、監控伺服器軟硬體狀態,才能盡可能的避免或預測出這些問題,並且還得在有需要時進入伺服器進行維護調整。

若改為Serverless架構後,我們沒有伺服器的軟硬體,所以也沒有這些問題。

我們不用再管伺服器和裡面的服務了,這樣算起來今年可以多加十幾天特休了?

by Bang

用多少付多少

以往伺服器架構中,我們必須購買或租用伺服器,而這些都是依據伺服器的等級和數量在收取費用。

如前面提到的,假設今天系統真的使用量很低,那伺服器是不是就浪費了呢?

Serverless服務

在Serverless的架構中,我們將盡力避免使用需要固定收費的服務,而改為「用多少付多少」的服務。

這樣一來,若這個月系統使用量很少,成本就會跟著很低。而假設下個月使用量非常大時,成本只會跟著使用量增加,沒有其他需要擔心的事情。

依據以往許多公司使用經驗,無論是使用量少還是多,最終我們的成本都會比起租用伺服器還來得便宜。但有一種情況下可能會比較貴,那就是可以精準預測出未來一個月的使用量,並且跟著調整伺服器等級與數量時,會比較貴一些,不過我認為可以這樣預測的系統是佔少數的。

這裡由於我比較熟AWS的服務,所以下面舉幾個AWS中符合條件的服務,但不代表AWS以外的公司沒有。

AWS Lambda

AWS Lambda提供我們可以寫程式、測試與執行的地方,並且由AWS雲端直接執行程式,它是世界上最早的Serverless服務,於2014年底誕生。

收費標準是以執行次數計算,執行次數會以每次CPU使用量和記憶體使用量計價,所以沒有執行就不用錢,而且每個月還送我們一百萬次的標準執行次數。

Amazon DynamoDB

Amazon DynamoDB提供我們可以儲存資料的地方,是功能非常完整的NoSQL資料庫。

收費標準是以儲存空間和讀寫次數來計算,讀寫次數會以每次讀寫的資料量大小計價,而且每個月會送25GB的儲存空間和25個讀寫單位,這讓我們足以免費進行開發與測試,甚至運作使用量較少的系統。

Amazon S3

Amazon S3提供我們可以存放檔案的地方,並且還有可以發佈網頁和控制存取權限等功能,是非常完整的網路儲存空間服務。

收費標準是以儲存空間和傳輸量來計算,而且第一年還免費送5GB的儲存空間和足夠使用的傳輸量。


當然,除了上面三種服務以外還有很多其他符合「用多少付多少」的服務,後續有機會還會再介紹,大家想看更多也可以到AWS Serverless的官方網站詳細查看。

今天早上我都在寫文章,沒用到伺服器,這個月的費用可以少一些嗎?

by Bang

如何實踐呢?

看完了上面介紹的概念與服務,發現我們可以在雲端上開發程式、存取資料庫和存取檔案,並且將檔案放在網頁上,當然再繼續整合其他服務,將可以達到更多的功能。

而在雲端運算如此流行的今天,已經有非常多的服務符合「沒伺服器」和「用多少付多少」這兩項標準,所以我們的實踐方式就是開發系統時只選擇這些服務來作為產品上線的服務,我們就可以稱之為Serverless架構的系統。

不用管伺服器、沒用到不付錢,還在等什麼?

by Bang