作為前端工程師,我們的使命是為用戶提供良好的前端用戶體驗。隨著云原生時代的到來,顯而易見的,我們能做的更多了。 產品的特點是免運維、按量付費和自適應彈性,所以我們可以利用云上的各種 能力,用相對更低的成本開發出更酷的產品,為我們的客戶創造更多價值。
如何構建云原生現代化的 Web 應用?
讓我們先回顧一下,我們是如何把一個靜態網站發布出去的。
在云原生時代之前,我們想到的可能是需要先找一臺服務器,安裝 Nginx,然后上傳靜態文件,再經過一系列的配置,最終完成網站的發布。完成這些以后,發現已經花掉了小半天的時間,實際上這些花在運維上面的時間其實并沒有為我們的客戶創造價值。但這其實還只是一個開始,隨著業務的發展,穩定性、彈性、安全和成本等問題,我們都要逐一解決,我們花在運維上的時間和精力會越來越多。否則,這個網站可能只是一個玩具。
但是隨著云原生時代的到來,發布靜態網站簡單了很多,我們可以通過云產品,輕松地托管我們的網站。例如,可以將網站通過阿里云對象存儲 OSS 提供的工具,將靜態資源上傳到 OSS,然后開啟一鍵托管。此外,為了讓客戶能夠更快地打開頁面,還可以通過阿里云 CDN,將 OSS 設置為 CDN 的源站,從而讓靜態資源離客戶更近,讓客戶的使用體驗更好。這兩款產品都是按量付費的免運維 產品,它們大大地減少了我們各種繁雜的運維成本。我們可以把更多的時間花在研發和體驗上,為我們的客戶創造更多價值。
但是隨著業務的發展,我們的網站如果并不只是一個靜態網站了呢?
●對外服務的 API(需要對接緩存,數據庫,消息隊列,文件存儲等)
●定時執行任務,甚至是執行海量任務
●發送電子郵件/短信/即時消息(釘釘,微信,飛書),撥打智能語音電話
●對用戶上傳的圖片,音視頻等進行處理(轉碼,縮略圖,鑒黃,加水印,GPU 推理)
●服務端渲染 SSR 頁面
●大促,秒殺
面對這些需求,難道我們又要去找服務器?為了保證服務的穩定性,彈性,安全和成本,難道我們又要把大量的時間花在運維上?有沒有云產品可以像 OSS/CDN 解決靜態網站的運維問題一樣,解決我們的這些后端需求呢?
面對這些挑戰,阿里云的 產品函數計算 FC是一個不錯的選擇。除了通過函數計算 FC 處理 API 請求和大規模任務之外,還可以在函數計算 FC 中訪問阿里云的 RDS、SLS、、NAS 等豐富的云服務或者是其他第三方服務,從而滿足對存儲,計算web應用安全研究價值,網絡,安全,大數據,人工智能等各種業務的需求。
各種 云產品就像是前端工程師的“武器庫”,我們可以使用這些云產品來為我們的客戶提供高質量的服務。
函數計算 FC 的優勢和相關原理介紹 極致彈性,輕松應對流量洪峰
函數計算 FC 會根據請求量自動進行毫秒級彈性擴容,快速調度計算資源。從而使我們可以輕松應對海量 API 請求和大規模的并發任務。
在使用函數計算時,可以為函數配置一個“實例并發度”,這個并發度代表一個函數實例最多可以同時處理多少個請求。函數實例本質上是一個 Linux 安全容器,它是函數對外提供服務的最小單元。
例如,在“實例并發度”設置為 20 時,如果函數計算平臺同時收到了 100 個請求,則會拉起 5 個函數實例來處理這些請求。處理完這些請求后函數實例會被凍結,如果在接下來的 2~5 分鐘內(實例凍結以后就不再計費了)如果沒有新的請求,函數實例將被自動銷毀。在某些場景下,如果業務對延遲非常敏感,或者業務代碼啟動很慢,可以通過配置彈性規則,設置最小函數實例數量,這樣函數計算 FC 會預先啟動好函數實例,從而保證用戶的使用體驗。也可以通過設置函數實例的最大數量,限制函數實例的最大數量,從而保護下游服務,并控制成本。
對比傳統服務器模式下需要自己進行服務器的擴容縮容的操作,函數計算 FC 這種自動彈性的方式不僅可以減少此類繁鎖的擴縮容運維操作,也可以避免傳統服務器模式下由于擴容不及時導致的業務不可用,從而提高系統的穩定性。
降低成本,提高資源利用率
函數計算 FC 中可以自由配置 CPU,內存,GPU 等實例的規格。最小可以創建 0.05 核,128 MB 的函數,并提供了極小梯度的規格選擇,基本可以做到應用需要什么規格就配置什么規格。
函數計算 FC 的計費是毫秒級別的,比如我們的代碼業務邏輯執行的時間為 5 毫秒,那么我們只需為這 5 毫秒進行付費。并且在無流量時,函數計算 FC 會將函數實例縮容到 0。這對業務量還沒有起來的新業務,或者是一些調用本身就很少的中長尾業務非常友好,我們無需為它們付出固定的服務器費用。
自由配置規格,毫秒級別計費,縮容到 0 等特點可以幫助我們大幅提升資源利用率,極大的降低成本。
免運維,更安全
在傳統的服務器架構中,我們時刻需要關心運行應用的物理機的資源使用情況。在函數計算 FC 中,我們無需關心底層物理機的資源使用情況,函數計算 FC 平臺會自動調度并運維資源。但是如果是我們的業務代碼消耗了過度的資源,例如發生OOM 等,函數實例會自動重啟,請求會失敗,這時我們需要根據監控指標和日志找出代碼中的問題,或者修改函數的規格,給函數實例更多的資源。
函數計算 FC 也提供了函數默認的 HTTP/HTTPS 域名,從而方便我們訪問函數。同時也支持綁定自己的域名到函數。所以相對于傳統的服務器架構,在使用函數計算時,我們就免去了對應用服務器和負載均衡服務器的運維和購買成本。
從安全的角度出發,由于傳統服務器需要一直運行著,在安全配置不合理時,或是沒有及時修復代碼漏洞時,黑客可以通過掃描 IP 和端口,發現并攻入服務器。函數計算FC因為不會一直起著實例,也不會直接將 IP 暴露在公網上,因此可以避免此類被掃描攻破的問題發生。
除此之外,操作系統的安全漏洞我們也無需關心,在出現安全漏洞時函數計算 FC 會第一時間完成修復。
在需要訪問其他服務時,函數計算 FC 也會根據配置,自動生成臨時密鑰,這個臨時密鑰的有效期是 36 小時,所以無需將重要的訪問密鑰寫在代碼里或配置文件中,從而降低由于密鑰泄漏產生的風險。
隨著業務的不斷發展,也可以額外購買阿里云的 Web 應用防火墻 WAF 產品來保護函數安全。
零改造,研發效率高
函數計算支持創建 3 種類型的函數,“內置運行時”,“自定義運行時”和“容器鏡像”。并且提供了 API,SDK,控制臺和 Devs 工具,幫助我們完成應用的開發、構建、部署和觀測。
在使用“內置運行時”時,我們需要按照函數計算 FC 定義的接口規則編寫代碼處理請求。例如,下面為一個 Node.js 的 API 示例,使用這幾行代碼創建完函數之后,我們就可以立刻在我們的網站中使用這個 API 了。
使用“自定義運行時”時,我們無需改造代碼就可以將 、Flask、、、、Gin 等 Web 框架開發的應用跑在函數計算上。只需在函數計算中配置應用監聽的“端口號”和“啟動命令”即可。它和使用傳統服務器的部署方式非常類似。下圖中的代碼,對熟悉 框架的同學來說,應該是再熟悉不過了。
使用“容器鏡像”時,我們可以完全定制應用的執行環境,不用學習如何更新函數計算運行環境中的 Linux 版本,GCC 版本,安裝各種依賴,字體等問題。此外,因為容器鏡像的可移植性極好,我們不用擔心被云廠商綁定,同一個容器可以運行在云上或本地數據中心的服務器上,或者是云上或本地數據中心的 集群里。甚至您可以同時將一個鏡像部署在服務器、 集群和函數計算里,通過幾款不同的產品完成災備。
總結
通過函數計算 FC 等 云產品,我們無需管理服務器等基礎設施, 云產品會為我們準備好資源,以彈性、安全、可靠的方式運行我們的應用,存儲我們的數據web應用安全研究價值,并為我們提供其他額外的附加價值。
的免運維特性與前端工程師天然互補,前端工程師只需編寫業務代碼,即可快速搭建云原生的現代化的 Web 應用。讓前端工程師可以將更多的時間專注在為用戶創造價值上。