国产精品chinese,色综合天天综合精品网国产在线,成午夜免费视频在线观看,清纯女学生被强行糟蹋小说

    <td id="ojr13"><tr id="ojr13"><label id="ojr13"></label></tr></td>
        • <source id="ojr13"></source>
            <td id="ojr13"><ins id="ojr13"><label id="ojr13"></label></ins></td>

            Article / 文章中心

            從運維域看 Serverless 真的就是萬能銀彈嗎?

            發(fā)布時間:2022-01-17 點擊數(shù):787

            作者 | 蒲松洋(秦粵)


            作者說


            在開始本篇內(nèi)容前我想與各位開發(fā)者達成幾個共識。


            第一個共識,軟件工程沒有銀彈, Serverless 也不是銀彈,它并不是解決所有問題的萬能公式。


            第二個共識,Serverless 能夠解決的是運維域的問題,它是解決特定領(lǐng)域問題的一個技術(shù),并不是無限延伸的,與低代碼沒有關(guān)系。


            第三個共識是復(fù)雜度守恒定律-泰斯勒定律(Tesler’s law)。典型例子就是蘋果,蘋果的產(chǎn)品很容易上手操作。但本質(zhì)上它整體復(fù)雜度是守恒的,它其實是把復(fù)雜的事情留給了系統(tǒng)開發(fā)工程師和軟件開發(fā)的工程師,讓用戶可以順滑體驗。同理 Serverless 也是如此,把部署 or 運維應(yīng)用、網(wǎng)站的煩復(fù)轉(zhuǎn)交給了云服務(wù)商,但整體的復(fù)雜度是不變的。


            第四個共識是鄧寧-克魯格效應(yīng)(The Dunning-Kruger Effect),大家在認(rèn)知學(xué)習(xí)過程中,都會出現(xiàn)這樣的發(fā)展曲線:從剛開始一無所知,到對新知識的幻想,再到失望的低谷,緩慢爬坡。我們學(xué)習(xí)任何一個新事物都會經(jīng)歷這樣一個曲線過程。Gartner 采用鄧寧-克魯格曲線,來解釋新技術(shù)的發(fā)展周期。

            鄧寧-克魯格曲線


            個人認(rèn)知曲線

            Gartern 技術(shù)發(fā)展曲線

            Gartern 技術(shù)發(fā)展曲線


            作為開發(fā)工程師經(jīng)常會有這種體感,新的技術(shù)層出不窮學(xué)的很累。Serverless 剛推出來時也一樣,大家對這個技術(shù)充滿了無限的想象,當(dāng)想象到了一個巔峰以后,會慢慢認(rèn)識到想象與現(xiàn)實的差距,切身去體會在產(chǎn)品中使用時就會掉到技術(shù)的低谷,然后再緩慢的爬坡。


            Serverless 正當(dāng)時


            本文將會通過三個部分,為各位介紹 Serverless:


            第一個部分是 “復(fù)雜化 for 云開發(fā)商”


            第二個部分是 “簡化 for 開發(fā)者”


            第三個部分,會介紹一些我自己和我們團隊使用 Serverless 的最佳場景。


            復(fù)雜化 for 云開發(fā)商


            (1) Serverless 架構(gòu)


            復(fù)雜化 for 云開發(fā)商



            Serverless 是一個集大成者,它的整發(fā)展歷史是站在巨人的肩膀上的?,F(xiàn)在很多云服務(wù)商去跑一個函數(shù),底層都是這樣架構(gòu)。首先 Serverless 的運行底層會有一個 CaaS 層。它是一個 Serverless 化的容器服務(wù),大部分的應(yīng)用服務(wù)都會跑在這一層上面,容器調(diào)度現(xiàn)在開源的比較好的解決方案就是 K8s,用 K8s 來調(diào)度容器,底層 laaS 就是虛擬機,最底層則是物理機。


            CaaS 的實現(xiàn)的方式有很多,Serverless 應(yīng)用底層必須有 CaaS 服務(wù)的支撐。除了Docker 以外,vm 也可以是 CaaS ;例如 Node.js 的 vm 也可以做 CaaS ,webassembly 也可以做 CaaS 等等。另外在做整體架構(gòu)設(shè)計的時候,還需要一個 Component 層去解決網(wǎng)絡(luò)東西流量和南北流量的問題,例如 service Mesh 和 ingress 的方案,總體來說 Serverless 背后的架構(gòu)設(shè)計基本都是如此。


            (2) 云開發(fā)商:不可變基礎(chǔ)設(shè)施


            CNCF 的架構(gòu)整套框架是根據(jù)配置文件去遷移的,可以部署在阿里云、也可以騰訊云、亞馬遜的云上,甚至自己搭建的私有云。當(dāng)所有云服務(wù)作為不可變基礎(chǔ)建設(shè),復(fù)雜度下沉到 K8s 層,架構(gòu)會變得通用。


            另外對云服務(wù)商來說,他們以前積累的傳統(tǒng)的優(yōu)勢(虛擬機 laas 層的運維優(yōu)勢和 PaaS 層的平臺級的優(yōu)勢)就會漸漸失去。所以如果是 vendor-unlock 云服務(wù)商之間就會白熱化地打價格戰(zhàn),看誰能提供更優(yōu)質(zhì)便宜的服務(wù)。


            云服務(wù)商運維體系的 Serverless 化

            廣義的 Serverless 是整個云服務(wù)商運維體系的 Serverless 化。如傳統(tǒng)提供一個MySQL 或 Redis,必須讓開發(fā)者意識到這是跑在服務(wù)器上的,需要提供出來個 ip ,但 Serverless 化(BaaS 化)后,開發(fā)者不需要再去關(guān)心這個服務(wù)到底是運行在哪里,只需要申明需要一個 DB,應(yīng)用就可以自動去鏈接并消費 DB。


            狹義的 Serverless 不僅僅是 Severless Computing,還指一個 FaaS 的應(yīng)用,是由 trigger(也可以歸并為BaaS) + FaaS + BaaS 的架構(gòu)組成的?,F(xiàn)在云開發(fā)商在 Serverless FaaS 的這一層的核心競爭力是不斷推出新的 BaaS (Backend as a Service) 能力,而 BaaS 主要是跟 FaaS 配套去使用的。


            上面講到的云服務(wù)商的不可變基礎(chǔ)建設(shè),如下圖所示,開發(fā)者在最上面這層去部署應(yīng)用,根本不用關(guān)心底層的這些基礎(chǔ)建設(shè)?,F(xiàn)在云服務(wù)商提供的 BaaS SDK 實際上已經(jīng)包含在你的這個 FaaS 的 runtime 里面,開發(fā)者只需要把它當(dāng)成一個函數(shù)接口去直接調(diào)用,不用關(guān)心數(shù)據(jù)庫部署在什么地方、要不要保持長鏈接等等。

            復(fù)雜化 for 開發(fā)者



            簡化 for 開發(fā)者


            簡化 for 開發(fā)者

            此圖是 Gartner 在 2017 年推出的新興技術(shù)發(fā)展?fàn)顟B(tài),當(dāng)時 Gartner 覺得 Serverless 還是一個比較新的概念,大家對它的認(rèn)知還處于爬坡階段;但實際上到今天,Serverless 已經(jīng)進入了平緩爬升期了,大家對 Serverless 可以解決運維域的問題,有哪些邊界的限制等等這些問題已經(jīng)有了清晰的認(rèn)知。


            為什么最近這幾年沒有什么特別新的東西推出了?原因在于 Serverless 這層沒有特別新的概念誕生,大家更多是在做 FaaS 應(yīng)用基礎(chǔ)建設(shè)。現(xiàn)有的各種 Web 應(yīng)用場景場景是否可以 Serverless 化,比如近期已經(jīng)支持了的,數(shù)據(jù)庫 BaaS 化, websocket 支持 FaaS,另外還有很多 Web 應(yīng)用場景都是通過諸位的努力慢慢爬坡實現(xiàn),使其能夠接近理想中的 Serverless 。

            2021 年 Gartner 技術(shù)采納建議圖

            2021 年 Gartner 技術(shù)采納建議圖


            圖中畫框的位置就是 Serverless,綠色代表已經(jīng)成熟,可以看出,現(xiàn)在的 Serverless 已經(jīng)是一個比較成熟的技術(shù)了,支持大部分 Web 應(yīng)用的場景了,所以各位開發(fā)者大家可以放心大膽地去嘗試 Serverless。


            (1) 運維領(lǐng)域的 Serverless

            運維領(lǐng)域的 Serverless

            國內(nèi)很多人把 Serverless 翻譯成無服務(wù)器或者叫無服務(wù),這都不太準(zhǔn)確,Severless的反義詞是 Serverful,Serverful 的意思是需要特別關(guān)注服務(wù)器,Serverless 的本質(zhì)是為了降低心智負(fù)擔(dān),不需要十分關(guān)心服務(wù)器,只專注部署函數(shù)就行,至于它怎么運行、底層有多少容器、底層有多少服務(wù)器來支撐它,開發(fā)者都不需要關(guān)心。


            傳統(tǒng)的模式的前后端開發(fā)模式是由:后端提供數(shù)據(jù)服務(wù),以前叫 SOA 是面向服務(wù)的編程,現(xiàn)在比較流行的是領(lǐng)域驅(qū)動微服務(wù),前端消費組裝數(shù)據(jù)。后端數(shù)據(jù)接口傳統(tǒng)的方式是提供 HTTP API,到現(xiàn)在的流行的 BFF (Backend For Frontend) 膠水層函數(shù)編排。配合微服務(wù)提供全量數(shù)據(jù),是目前業(yè)界比較流行的做法。那么未來的趨勢將會全部 BaaS 化,理想的狀態(tài)是前后端一體化模型驅(qū)動,不再需要再寫接口。


            (2)結(jié)合 Serverless 做技術(shù)變革

            Serverless

            當(dāng)下 Serverless 所處的階段的優(yōu)勢是跟其他領(lǐng)域的技術(shù)結(jié)合, Serverless 結(jié)合其他領(lǐng)域來引爆許多技術(shù)變革。例如,傳統(tǒng)的微服務(wù) + Serverless 結(jié)合起來后,可以做成 BaaS 化微服務(wù)。以前提供一個微服務(wù),是需要開發(fā)者去關(guān)心這個微服務(wù)部署在哪里,但是加上 Serverless 后,便不用管部署在哪里,只需要關(guān)心怎么去調(diào)用即可。LowCode 加上 Serverless 可以讓搭建出來的頁面快速部署并上線;之前的接口函數(shù)編排如傳統(tǒng)的 BFF,在未來都可以 Serverless 化,變成 SFF(Serverless for frontend),很適合做前后端一體化方案。


            (3)開發(fā)角色的轉(zhuǎn)變:前后端一體化


            Serverless 出現(xiàn)后,未來還會出現(xiàn)前后端一體化的局面。現(xiàn)在已經(jīng)出現(xiàn)邏輯編排可視化的工具,例如狼叔的 iMove ,目前已經(jīng)可以做到后端接口的可視化編排,前端工程師去做一個后端的接口編排變得非常簡單。由此可以預(yù)見,前端工程師未來的職責(zé)可以往后端去延伸。


             BaaS 化服務(wù)級別的開發(fā)


            而原來的后端工程師會從傳統(tǒng)的應(yīng)用部署逐漸轉(zhuǎn)化去做 BaaS 化服務(wù)級別的開發(fā),而未來運維工程師也會更偏向于向云端遷移。這個就是 Serverless 對研發(fā)生產(chǎn)鏈路帶來的一系列變革。


            Serverless 的最佳場景實踐


            對于 Serverless 使用最近場景的判定,最便捷的方式就是去看云開發(fā)商支持哪些 Trigger 事件觸發(fā)。

            Serverless 的最佳場景實踐

            所以目前這個階段,各個云開發(fā)商都在不停的增加新的 Trigger。如圖所示,開發(fā)人員在寫 FaaS 時,是將 HTTP request 包裝成了 Trigger,可以把 FaaS 函數(shù)想象成在封閉的一個包裹里面,要如何喚醒這個包裹,怎么打開這個包裹呢?其實就是通過 Trigger 來喚醒。


            另外 Serverless 的現(xiàn)階段,開發(fā)語言的重要性沒那么高了,語言只是去實現(xiàn)功能所需要的工具。CNCF 推出來以后 FaaS 就已經(jīng)是與語言無關(guān)的了,那么其實到底是 Node.js,PHP,Python 亦或是其他主流語言的代碼 FaaS 都可以,你甚至可以自建一個鏡像自定義語言和執(zhí)行環(huán)境。因此在 Serverless 后,多語言的優(yōu)勢我們都可以借用,比如用 Python 去處理 AI 數(shù)據(jù),Node.js 去處理高并發(fā)網(wǎng)絡(luò) I/O 等等。


            1)SFF 數(shù)據(jù)編排


            最佳實踐就是 BFF + Serverless,這在阿里集團內(nèi)部是十分常見的。由于阿里內(nèi)部的大多場景后端都是 Java 工程師,前端團隊需要跟工程師去對接,而后端工程師提供的就是 HSF 微服務(wù),可以把它理解為一堆 RPC 接口。以前就是部署一個 Node.js 應(yīng)用去調(diào)接口,拿到數(shù)據(jù)后對這些數(shù)據(jù)進行是清洗、處理,放到前端頁面去渲染。但是采用 Serverless 部署 BFF 的 Node.js 應(yīng)用后,基本不需要考慮跟進流量擴縮容、節(jié)省成本等問題。

            SFF 數(shù)據(jù)編排

            (2)GitOps 模型


            GitOps 對于小企業(yè)來說,是非常適用的場景,相當(dāng)于可以自建一套自動發(fā)布上線的管道,不再需要像以前一樣,修改一個版本便要測試一遍,目前整個方案已經(jīng)十分成熟了。Git 本身支持大量的 hook 函數(shù),所以打造這樣一個流程也是非常容易的。需要關(guān)注的是要結(jié)合云開發(fā)商的能力,比如阿里云發(fā)布流程便十分自動化,在云下平臺發(fā)布上線后可以支持線上的流量錄制、回放。

            (2)GitOps 模型

            (3)小而美的技術(shù)團隊


            最后一點是打造小而美的團隊。在我的認(rèn)知中,技術(shù)架構(gòu)有個強大制約就是:組織架構(gòu)會決定我們的技術(shù)架構(gòu)。


            就像前后端分離,大多是因為組織架構(gòu)定義了:前端有前端的領(lǐng)導(dǎo),后端有后端的領(lǐng)導(dǎo),所以就會產(chǎn)生前端由前端的開發(fā),后端由后端的開發(fā),需要中間去聯(lián)調(diào)基于 API溝通。那我們?nèi)绻氪蛟煲粋€小而美的團隊怎樣打破這個隔閡呢?


            Serverless 一個比較適合的場景就是,通過前端的服務(wù)編排 SFF 將解決掉中間 API溝通的問題,后端去提供全量的服務(wù)即可。這種變革會迫使后端去做微服務(wù)化,甚至后端研發(fā)采用 Serverless 去做 BaaS 化,這是反向的導(dǎo)推過程。如果我們的前端團隊掌握了 Serverless, 有三個優(yōu)勢:前端的數(shù)據(jù)編排便不再需要再找后端工程師了;GitOps 解決部署運維,可以降低前端心智負(fù)擔(dān);前端同學(xué)能夠?qū)P某橄髽I(yè)務(wù)模型。