使用 Laravel 和 Serverless ,降低人力成本,提高開發人員生產力

youxx發表於2021-01-14

什麼叫 Serverless ?

Serverless 中文的含義是 “無伺服器”,但是它真正的含義是開發者再也不用過多考慮伺服器的問題,但是並不代表完全去除伺服器,而是我們依靠第三方資源伺服器後端,比如使用 Amazon Web Services(AWS) Lambda. 計算服務來執行程式碼。在 Laravel 中我們可以使用 Vapor 這種整合工具去在專案中使用 Serverless 服務。

Serverless 的適用場景

我維護過國內一家公司的 Web 專案的維護,他們的主要業務在海外,他們可能一年內可能將業務擴充到10多個國家,以前的做法是買 10多個 Aws 伺服器,然後分別將程式碼分別部署到這些不同的伺服器上面。

這裡面就存在幾個問題

  • 管理問題

    10 多個伺服器的 ssh 賬號密碼難以管理,你登陸 A 伺服器你需要像張三要登陸賬號密碼,登陸 B 伺服器需要向李四要賬號密碼。不方便管理,特別麻煩。
  • 成本問題

    隨著業務量越來越大,海外擴充了 50 個國家的業務,這時候你需要購買 50 臺 Aws 的伺服器,其中有些小國家可能一年訪問量都沒多少,但是伺服器不會因為使用少而不收取你的費用。同時在伺服器太多的時候你可能還需要聘請一個專業的運維人員去管理你的伺服器。
  • 安全問題

    可能面臨 Ddos 攻擊,或者框架自帶漏洞被攻擊,或者因為程式設計師的疏忽導致漏洞被攻擊,常見的就是程式碼檔案被篡改,跳到賭博網站之內,這種事情對公司還是有蠻大影響的。

用 Serverless 去解決這些問題

我這邊使用的是 Laravel-vapor 去管理的我的專案。

  • 如何解決管理問題

    藉助 Laravel-vapor 我們可以在一個皮膚管理部署在多個國家的專案。我們不再需要買很多臺伺服器,只需要一個 Laravel-vapor 賬號即可。
    使用 Laravel 和 Serverless ,降低人力成本,提高開發人員生產力

  • 成本問題

    Serverless 是按請求次數去收取的費用,這是 AWS 官方給出的定價,AWS Lambda 包含每月 1M 次免費請求以及每月 400000GB-秒的計算時間。下面是一張香港地區價格參考。
    使用 Laravel 和 Serverless ,降低人力成本,提高開發人員生產力

  • 關於 Serverless 安全問題

    Serverless 的架構,黑客是無法進行持久化操作,也就是無法篡改我們的任何檔案,同時我們也無需擔心伺服器當機這些我們以前需要操心的問題,這些 Aws 這些供應商幫我解決,我們只關注業務層面即可。
    我目前不清楚面對 Ddos 攻擊的時候,Aws 供應商是否會對請求進行限流。我這邊是自己設定每秒最大併發數量去達到這一效果。

需要注意的地方

我目前已經部署一個 Demo 到 Aws Serverless,這個程式碼裡面涉及了佇列,定時任務,以及檔案上傳等我們在 Web 專案中常見的場景。

程式碼地址

在 Serverless 上傳圖片
使用 Laravel 和 Serverless ,降低人力成本,提高開發人員生產力
在 Serverless 定時任務跑佇列自動寫文章
使用 Laravel 和 Serverless ,降低人力成本,提高開發人員生產力

線上預覽 賬號:admin 密碼: admin

我遇到過的問題

  • 我使用的 Demo 是 Dcat-admin, Laravel-vapor 在部署的時候會自動把 public 目錄的靜態資原始檔上傳到 Aws S3,但是當 public 的資原始檔大於 300 個的時候會上傳失敗。導致部署不成功。這時候我們應該手動上傳,如下:
    使用 Laravel 和 Serverless ,降低人力成本,提高開發人員生產力
    這裡說句題外話,Laravel-vapor 部署自動上傳的時候,還自動給我們加了 cloudfront 服務,我以前寫過一篇關於這玩意的文章 如何使用 AWS 的 CloudFront 服務助力企業網站海外訪問加速,有興趣的可以看看。

  • Laravel-vapor 幫我們做了很多自動化處理,比如上傳預設 s3,佇列什麼的都給你預設好了,開始的時候你可能一頭霧水。我這邊有個自己的方法可以方便了解他預設的一些配置。

    先登入到 Aws 主介面輸入:

    使用 Laravel 和 Serverless ,降低人力成本,提高開發人員生產力

    點選箭頭所示:

    使用 Laravel 和 Serverless ,降低人力成本,提高開發人員生產力

    這裡可以看到專案環境變數,有些是自帶的在這裡一目瞭然。

    使用 Laravel 和 Serverless ,降低人力成本,提高開發人員生產力
    使用 Laravel 和 Serverless ,降低人力成本,提高開發人員生產力

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章