技術創新只有起點沒有終點,繼容器技術之後,新的技術又推成出新。最近了解到一種新的技術方案Serverless,寫篇日誌記錄下自己的感想。

目前市面上提供Serverless雲函數的解決方案的有Google Cloud Functions,Azure Funcions,IBM OpenWhisk,阿里雲函數計算,騰訊雲伺服器雲函數,在初步接觸之後,帶來了認知上的巨大震撼。

一個人的認知決定了他的思維模式,決定了一個人所能達到的高度。比如在馬車時代,人們追求的是如何擁有千里馬,汽車時代,人們追求的是超跑。冷兵器時代,俠客們為了一把屠龍刀攪得江湖血雨腥風,熱兵器時代,人們追求的更加強大的機關槍。那麼當飛機,大炮,原子彈的時代到來的時候,小米加步槍顯得那麼的弱小,時代在進步,新的認知決定了新的高度,只有不停的提高對世界的認識,才能在激烈的競爭中取得一線先機。那麼在軟體領域也同樣如此,使用先進的思想,能夠最大程度的提升效率,幫助企業創造更多的利潤。

軟體開發領域,一個古老又年輕的行業,在這裡充滿了各式各樣的奇思妙想。目前大部分公司主要還是使用微服務架構,使用SpringCloud技術棧來解決互聯網各式各樣的業務問題,支撐了一家又一家互聯網公司的蓬勃發展。

那麼細想一下,微服務架構到底解決了什麼問題,又帶來了什麼問題? SpringCloud是標準的微服務架構解決方案,通過業務拆分將一個龐大系統分解為一個個高內聚低耦合的小型業務系統,減少業務間變動帶來的整體系統的風險和影響,眾所周知,軟體公司以業務需求變更頻繁而出名,互聯網公司更是出類拔萃,頻繁的業務改動,不斷迭代演化的需求,要求技術架構必須靈活又穩定,以往SOA是針對於企業級業務中拆分的優秀解決方案,微服務架構更是業界翹楚,擁有眾多擁躉。然而Serverles架構最大化做到這一點,API級別的拆分力度,是解決業務拆分的利器,並且帶來了認知上面的全面升級,讓人不禁感嘆,原來架構設計還能這樣玩。 同時也因為無止境的系統拆分,帶給了系統運維上面的巨大挑戰,因此在微服務架構中運維是十分重要的一環。為瞭解決這個問題產生了很多的方法論,例如自動化運維,DevOps,AiOps等等,這些方案的核心在於盡量通過自動化或者Paas的方式給企業提供整體的運維解決方案。

虛擬化一個問題是虛擬化Hypervisor管理軟體本身的資源消耗與磁碟IO性能降低,另一個是虛擬機仍然還是一個獨立的操作系統,對很多類型的業務應用來說都顯得太重了,導致我們在處理虛擬機的擴縮容與配置管理工作時效率低下。

然後k8s出現了,Kubernetes:Google 開源的容器管理系統,起源於內部歷史悠久的 Borg 系統。因為其豐富的功能被多家公司使用,其發展路線注重規範的標準化和廠商「中立」,支持底層不同的容器運行時和引擎(比如 Rkt),逐漸解除對 Docker 的依賴。Kubernetes的核心是如何解決自動部署,擴展和管理容器化(containerized)應用程序。 至此微服務架構輔以容器化技術,把這個浪潮推到高峯,微服務架構如火如荼。 那麼,有沒有更好的辦法能夠一勞永逸? 答案是必然的,在這裡,Serverless帶來一種新的運維模式,在這種模式下用戶需要管理的只有Code,一定程度上可以認為Serverless就等同於NoOps。

無伺服器雲函數(Serverless Cloud Function)是騰訊雲提供的無伺服器(serverless)執行環境,幫助用戶在沒有購買和管理伺服器時仍能運行代碼。用戶只需要使用雲平臺支持的語言編寫核心代碼及設置代碼運行的條件,代碼即可在騰訊雲基礎設施上彈性、安全地運行,並可完全管理底層計算資源,包括伺服器CPU、內存、網路、代碼部署、彈性伸縮、負載均衡等服務。

Serverless可以讓用戶無需關心伺服器的部署運營,只需開發最核心的業務邏輯,即可實現上線運營;具備分佈容災能力,可依據負載自動擴縮容,按照實際調用次數與時長計費。加快用戶服務上線時間,用戶只需實現業務演算法及流程,上線時間縮短為分鐘級。減少用戶的運營負擔,用戶無須承擔服務擴容,故障恢復運維工作。消除用戶的資源成本,用戶無需承擔資源閑置費用,只為實際調用消耗付費。一切都是那麼的美好! 當一個新鮮事物來臨時,你可以懷疑,但不要盲目的拒絕,擁抱改變,或許能夠得到更多。

推薦閱讀:

相關文章