- Nuclio實戰及源碼分析:基于Kubernetes的Serverless FaaS平臺
- 李彬 詹煜卓 任勝寒 張晨編著
- 4字
- 2024-08-06 16:59:52
1.1 Serverless簡介
1.1.1 Serverless的發展背景
軟件部署使開發商和開發人員常常需要花費大量的時間來管理和維護服務器基礎設施,并且還需要關注應用程序所需的操作系統和配置信息等。軟件部署的發展可以劃分為四個時期:裸金屬時期、虛擬機時期、容器化時期、Serverless時期(無服務器時期)。
1)裸金屬時期。此時期的系統管理員要為部署的軟件準備物理服務器,這涉及安裝操作系統和相關的設備驅動程序、確保有足夠的內存/磁盤/處理器可用,還要負責硬件升級等。物理硬件和部署的軟件之間存在強烈耦合,相互依賴性很強。在這里,部署單元是一個實際的服務器。
2)虛擬機時期。此時期的物理服務器上托管多個虛擬機,開發人員無須直接部署到給定的硬件,而是提供給一個虛擬機(Virtual Machine, VM)。這給升級和遷移帶來了很大的靈活性,使得部署更加可重復和靈活,而此時軟件與硬件開始分離。如果出現硬件故障,系統管理員可以將虛擬機遷移到其他硬件并避免出現問題。在這里,部署單元是虛擬機。
3)容器化時期。這個時期誕生了許多容器化技術,如Docker、OpenVZ、LXC、FreeBSD Jail和Solaris zones等。這些技術使系統管理員能夠“分割”操作系統,在同一系統上運行不同的應用程序,而不會相互干擾。它們還可以讓開發人員擁有與生產環境緊密匹配的輕量級環境,從而使不同環境之間的操作更加一致。此外,此時期還開發了許多工具來簡化容器的創建和維護,許多公司使用它們來加快開發和部署的節奏。在這里,部署單元是一個容器。
4)Serverless時期。開發人員不需要考慮服務器,只需要專注自己的業務邏輯。一切服務器的配置均交給平臺執行。業務執行是按需收費的,這讓計算資源從固定成本變為了可變成本。這對于那些流量波動大的業務來說很有吸引力。
從軟件部署層面看,在這幾個時期,都有軟件在“他處”執行的概念,無論是在本地物理服務器上,還是在云主機的虛擬機上或者是容器上。此外,無服務器從另一個方面給出了一個抽象層次:代碼本身。有了這種新的抽象層次,就不必擔心代碼托管在“哪里”。圖1-1所示是軟件部署發展歷史的一個縮略圖。

圖1-1 軟件部署發展歷史
- The Complete Rust Programming Reference Guide
- Mastering Concurrency Programming with Java 8
- 觸·心:DT時代的大數據精準營銷
- Pandas Cookbook
- 造個小程序:與微信一起干件正經事兒
- NLTK基礎教程:用NLTK和Python庫構建機器學習應用
- Python Deep Learning
- Learning Selenium Testing Tools(Third Edition)
- HDInsight Essentials(Second Edition)
- 西門子S7-200 SMART PLC編程從入門到實踐
- SQL Server實用教程(SQL Server 2008版)
- R數據科學實戰:工具詳解與案例分析
- 寫給程序員的Python教程
- JavaScript程序設計:基礎·PHP·XML
- 3ds Max 2018從入門到精通