AWS Serverless

什麼是 Serverless 架構?優勢劣勢為何?

Serverless 是一個非常好用且省錢的方式讓您在商業情境中要快速製作一個可行的應用。有了 Serverless 的架構相信你在下次建置新的服務時,會想要用看看!想了解更多嗎?

什麼是 Serverless?

Serverless 是不是在很多地方你都會看到或聽到這個詞呢?許多主流雲端供應商都開始提供類似的服務。如下:

雖然大家流行講 Serverless,但筆者認為 Serverless 並不是單純只是一個潮流而已。而是一個新穎的實作方式讓企業以及開發人員能夠更簡單以及節省成本的情況達到一樣的應用。

聽起來非常不錯吧!簡單又省成本!

Serverless 最重要的宗旨是

專注在您的應用,而不是架構。

用一個非常簡單的例子讓您了解,以前要建置一個小爬蟲機器,去抓一些定時獲取的資訊。在沒有 Serverless 的情況下,會需要在 AWS EC2 建置一個 instance 然後用 Cron Jobs 定期的去獲取資料存到例如 S3 或是資料夾中。但這個時候就出現一個問題,你只是要跑一個簡單的爬蟲,就需要一直持續維護一整台 EC2 ,而且不論你有沒有執行這段程式碼都需要收錢。

對, Serverless 可以讓你不需要再額外架設一個全新的伺服器,而是寫一個 Function 就能夠去定期執行或是轉變成一個 API 達到同樣的應用,只有執行的時候才需要收費

以下為傳統以及 Serverless 架構的比較

Source: https://www.gocd.org/2017/06/26/serverless-architecture-continuous-delivery/

AWS Lambda 的收費機制,用到才收錢:

AWS Lambda 費用

Serverless 框架

Serverless 最常用的框架就是 – Serverless Framework,是一個開源的專案 Github. 使用 Serverless 框架有許多優勢方便研發、發布、監控,能夠對 Serverless 架構簡單的做版本控制。後續有機會會再寫文章介紹應用。

可以看一下 Serverless Framework 官網上面的服務宗旨

  1. Build only what differentiates you, outsource what doesn’t.
  2. Favor serverless cloud services, stateless compute, events, APIs & open-source.
  3. Code is a liability. Keep it to a minimum.
  4. No instances, servers or containers, unless there is no other way.
  5. Establish customer satisfaction as the highest priority of engineering.
  6. To deliver the best possible outcomes, maintain the freedom to choose the best possible services.
  7. Focus on product goals and experience over technology.
  8. Compose and configure, before writing code.
  9. Own the full lifecycle of everything you build.
  10. Deploy is the new commit.

Serverless 最重要的想法是讓使用者不需要管理系統,而是只專注在自己要做的應用層面!讓程式碼最簡單化,不需要伺服器以及 containers。

Serverless 優勢:

  1. 價格最大的一項 Serverless 優勢就是價格,因為他只有在觸發的時候才會收費,所以不會有伺服器運算的浪費。
  2. 減少維護成本以前需要一個後端工程師去維護伺服器,現在有了 Serverless 的架構可以完全不需要後端工程師的維護成本。
  3. 可擴充性使用 Serverless 他會自己自動的擴充到他所需要的 RAM。
  4. 加速產品開發由於部署以及撰寫程式碼的流程可以大大減少,加速產品開發
  5. 安全性不需要顧慮伺服器整體的安全性,只需要管理好每個 Serverless function 的應用問題。

Serverless 缺點:

  1. 綁在雲端供應商環境由於目前 Serverless 框架都需要仰賴雲端供應商所建置的環境,所以當他們有 API 改變或是應用越來越複雜時可能 Serverless 就不敷使用。
  2. 價格問題:雲端供應商未來價格可能會異動等問題。
  3. 效能問題:由於 Serverless 可能會有 cold start 的問題,也就是說當函數在被調用時,一般 Serverless 是在多個 micro-containers 去做管理,當一個呼叫進來的時候函數會去查看有無容器可以執行這個函數。如果有可以用的容器 (warm) 他就會執行,如果沒有他會重新開啟一台容器,此時就叫做 cold start。這會有延遲時間的問題。

結論

Serverless 是一個非常好用且省錢的方式讓您在商業情境中要快速製作一個可行的應用。有了 Serverless 的架構相信你在下次建置新的服務時,會想要用看看!

2 comments

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: