版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、Midway Serverless新一代云端一體研發(fā)框架概述打破云和端的那堵墻,享受真正的云端一體研發(fā)大綱阿里巴巴 Node.js Serverless 建設(shè)Midway Serverless 體系介紹新一代云端一體研發(fā)方案未來規(guī)劃阿里巴巴Node.jsServerless建 設(shè)2019 -2020 前端方向搭建服務(wù)智能化ServerlessIDE阿里經(jīng)濟體前端委員會四大技術(shù)方向集團 1600+ Node.js 應(yīng)用常年 cpu 利用率 10%,乃至 5%服務(wù)器利用率低DevOps 成本高前端維護乏力Docker、進程,限流,日志、跨語言傳統(tǒng)應(yīng)用開發(fā)的劣勢 正是函數(shù)開發(fā)的優(yōu)勢需要賦能前端,讓云
2、原生給前端降本增效前端業(yè)務(wù)訴求:“ 前端同學(xué)希望將中臺服務(wù)快速組合為各類業(yè)務(wù)接口,和端側(cè)同步快速交付前臺,以更快的響應(yīng)業(yè)務(wù)需求變化來幫助業(yè)務(wù) 試錯?!薄?后端往大后臺下沉,前端往小前臺發(fā) 力,提升生產(chǎn)力?!北尘昂蛦栴}集團 Node.js 進入 Serverless 的迫切性突破與成果新零售,飛豬,ICBU,天貓精靈,UC,高德,業(yè)務(wù)平臺事業(yè)部,考拉等業(yè)務(wù)開始使用匯吃酷玩門票任意門考拉充值海關(guān)后臺成果:多 BU 業(yè)務(wù)落地,平穩(wěn)度過雙促極有家哇哦視頻美妝高鐵游簽證 wifi淘寶導(dǎo)購飛豬考拉ICBU1順利度過雙促,0 故障,函數(shù)架構(gòu)穩(wěn)定性 得到驗證8 c vs 1c使用函數(shù)整體人效提升 48%(此數(shù)
3、據(jù)根據(jù)用戶使用工具埋點 + 調(diào)用時長 + 代碼量測算)業(yè)務(wù)增效降本傳統(tǒng)業(yè)務(wù)機器成本降低 30%中后臺業(yè)務(wù)機器成本降低 87%(按業(yè)務(wù)平均2臺機器,默認(rèn)4c8g 測算)一定程度上解決服務(wù)器利用率低下的問題Midway Serverless 體系介紹Midway Serverless 簡 介Framework: Midway Serverless用戶函數(shù)代碼index.jsInner Runtime函數(shù)容器請求/調(diào)用響應(yīng)Midway Serverless 體 系數(shù)據(jù)模擬環(huán)境配置IoC 注入能力增強平臺入口包裹框架本地觸發(fā)器模擬本地調(diào)試 debugger 一體化工具鏈 多平臺發(fā)布FaaS CLI(f
4、)工具鏈請求適配組件擴展yml 標(biāo)準(zhǔn)前端調(diào)用標(biāo)準(zhǔn) 運行時標(biāo)準(zhǔn)一體化開發(fā)標(biāo)準(zhǔn)標(biāo)準(zhǔn)化新一代云端一體研發(fā)方案我們遇到的問題我們在使用Serverless 交付應(yīng)用時遇見的問題上手難度高前后端割裂研發(fā)成本高我們的探索:云端一體應(yīng)用開發(fā)模式云端一體在社區(qū)的定義端技術(shù):React/Vue云服務(wù):數(shù)據(jù)庫/云存儲架構(gòu)視角端側(cè)使用云資源(BaaS 服務(wù))進行開發(fā)代碼視角前后端同倉庫,通過 Monorepo 的方式開發(fā)只是機械的將資源組合在一起,沒有發(fā)揮出JavaScript 語言的優(yōu) 勢Midway Serverless 的云端一體方案定義:云+端一同開發(fā)、無縫融合易于開發(fā) 易于維護 易于部署Midway Se
5、rverless 云端一體特性1函數(shù)即接口。我們通過函數(shù)來統(tǒng)一前后端的體驗,減少不必 要的樣板代碼,加速應(yīng)用研發(fā)函數(shù)式研發(fā)Functional R&D Solutions3通過 Hooks 開發(fā) Node.js 應(yīng)用。是全新的體驗,也是 你熟悉的語法。更為函數(shù)式開發(fā)帶去了完善的能力支持HooksUsing Node.js like React Hooks2從此不再手動調(diào)用 Api。在新框架中,你可以直接從服務(wù) 端導(dǎo)入函數(shù)并調(diào)用,就像調(diào)用普通函數(shù)一樣簡單一體化調(diào)用Api not required4簡單和復(fù)雜場景通吃。通過對于 IoC 的支持,我們可以復(fù)用 阿里 Node.js 復(fù)雜應(yīng)用最佳實踐,
6、支撐企業(yè)級應(yīng)用開發(fā)漸進式開發(fā)Progressive developmentMidway Serverless 云端一體特性1函數(shù)即接口。我們通過函數(shù)來統(tǒng)一前后端的體驗,減少不必 要的樣板代碼,加速應(yīng)用研發(fā)函數(shù)式研發(fā)Functional R&D Solutions23通過 Hooks 開發(fā) Node.js 應(yīng)用。是全新的體驗,也是 你熟悉的語法。更為函數(shù)式開發(fā)帶去了完善的能力支持從此不再手動調(diào)用 Api。在新框架中,你可以直接從服務(wù) 端導(dǎo)入函數(shù)并調(diào)用,就像調(diào)用普通函數(shù)一樣簡單4簡單和復(fù)雜場景通吃。通過對于 IoC 的支持,我們可以復(fù)用 阿里 Node.js 復(fù)雜應(yīng)用最佳實踐,支撐企業(yè)級應(yīng)用開發(fā)H
7、ooksUsing Node.js like React Hooks一體化調(diào)用Api not required漸進式開發(fā)Progressive development函數(shù)式研發(fā)當(dāng)前云廠商接口開發(fā)模式event, context, callbackreq, res, contextevent, contextevent, context, callback騰訊云AliyunAWS不同的云廠商有著不一致的標(biāo)準(zhǔn)有沒有更簡單的方式?函數(shù)式研發(fā)用最簡潔的方式開發(fā)接口像寫JavaScript 函數(shù)一樣寫接 口Post 接口(支持傳參)Get 接口函數(shù)式研發(fā)接口元信息通過函數(shù)元信息來描述接口信息Midway
8、 Serverless 云端一體特性1函數(shù)即接口。我們通過函數(shù)來統(tǒng)一前后端的體驗,減少不必 要的樣板代碼,加速應(yīng)用研發(fā)函數(shù)式研發(fā)Functional R&D Solutions23通過 Hooks 開發(fā) Node.js 應(yīng)用。是全新的體驗,也是 你熟悉的語法。更為函數(shù)式開發(fā)帶去了完善的能力支持從此不再手動調(diào)用 Api。在新框架中,你可以直接從服務(wù) 端導(dǎo)入函數(shù)并調(diào)用,就像調(diào)用普通函數(shù)一樣簡單4簡單和復(fù)雜場景通吃。通過對于 IoC 的支持,我們可以復(fù)用 阿里 Node.js 復(fù)雜應(yīng)用最佳實踐,支撐企業(yè)級應(yīng)用開發(fā)HooksUsing Node.js like React Hooks一體化調(diào)用Api
9、not required漸進式開發(fā)Progressive development一體化調(diào)用接口調(diào)用 Demo一體化調(diào)用請求一個接口需要幾步?1導(dǎo)入函數(shù)一體化調(diào)用請求一個接口需要幾步?1導(dǎo)入函數(shù)2調(diào)用函數(shù)并使用返回值一體化調(diào)用接口傳參 & Async/Await1導(dǎo)入函數(shù)2調(diào)用函數(shù)并使用返回值接口傳參& Async/Await一體化調(diào)用更自然的調(diào)用體驗和普通函數(shù)一樣寫接 口也和普通函數(shù)一樣調(diào)接 口從此忘記Ajax 和Api 調(diào) 用一體化調(diào)用實現(xiàn)原理Midway Serverless 云端一體特性1函數(shù)即接口。我們通過函數(shù)來統(tǒng)一前后端的體驗,減少不必 要的樣板代碼,加速應(yīng)用研發(fā)函數(shù)式研發(fā)Funct
10、ional R&D Solutions23通過 Hooks 開發(fā) Node.js 應(yīng)用。是全新的體驗,也是 你熟悉的語法。更為函數(shù)式開發(fā)帶去了完善的能力支持從此不再手動調(diào)用 Api。在新框架中,你可以直接從服務(wù) 端導(dǎo)入函數(shù)并調(diào)用,就像調(diào)用普通函數(shù)一樣簡單4簡單和復(fù)雜場景通吃。通過對于 IoC 的支持,我們可以復(fù)用 阿里 Node.js 復(fù)雜應(yīng)用最佳實踐,支撐企業(yè)級應(yīng)用開發(fā)HooksUsing Node.js like React Hooks一體化調(diào)用Api not required漸進式開發(fā)Progressive developmentHooks為什么會有 HooksKoa 的Context在
11、實際的開發(fā)中我們需要的不僅僅是函數(shù)參數(shù)一體化調(diào)用中“所見即所得”的 調(diào)用方式無法通過參數(shù)傳遞請求 ContextHooks通過 Hooks 獲取當(dāng)前請求上下文獲取當(dāng)前請求上下文無需手動傳入?yún)?shù)與前端保持一致Hooks通過 Hooks 獲取當(dāng)前請求上下文動傳入?yún)?shù)與前端保持一致useContext 獲取 URL 查詢參 數(shù)HooksHooks 功能速覽useLogger 獲取日志工具像寫React Hooks 一樣來開發(fā)Web 服務(wù)useContext 獲取 URL 查詢參 數(shù)Hooks可復(fù)用的 Hooks將通用邏輯封裝為Hooks獲取 HTTP Response獲取和設(shè)置 HeaderHook
12、s實現(xiàn)原理與性能問題解決社區(qū)上使用 Node.js 的 Async Hooks 模 塊來模擬實現(xiàn)請求上下文功能模塊 API 不穩(wěn)定性能問題嚴(yán)重Async Hooks 存在嚴(yán)重的性能問題Hooks實現(xiàn)原理與性能問題解決函數(shù)與 Hooks可被加載的函數(shù)Midway 編譯器(midwayjs/mwcc)Ref To Bind箭頭函數(shù)處理Source Map 生成編譯結(jié)果Midway Serverless 云端一體特性1函數(shù)即接口。我們通過函數(shù)來統(tǒng)一前后端的體驗,減少不必 要的樣板代碼,加速應(yīng)用研發(fā)函數(shù)式研發(fā)Functional R&D Solutions23通過 Hooks 開發(fā) Node.js 應(yīng)
13、用。是全新的體驗,也是 你熟悉的語法。更為函數(shù)式開發(fā)帶去了完善的能力支持從此不再手動調(diào)用 Api。在新框架中,你可以直接從服務(wù) 端導(dǎo)入函數(shù)并調(diào)用,就像調(diào)用普通函數(shù)一樣簡單4簡單和復(fù)雜場景通吃。通過對于 IoC 的支持,我們可以復(fù)用 阿里 Node.js 復(fù)雜應(yīng)用最佳實踐,支撐企業(yè)級應(yīng)用開發(fā)HooksUsing Node.js like React Hooks一體化調(diào)用Api not required漸進式開發(fā)Progressive development漸進式開發(fā)阿里巴巴企業(yè)級 Node.js 應(yīng)用開發(fā)實踐我們決定 自研 IoC 框架 作為 Midway 體系的核心 來解決復(fù)雜應(yīng)用的維護Bef
14、oreAfter挑戰(zhàn):用什么方式解決復(fù)雜業(yè)務(wù)問題?解法:業(yè)界成熟的的 IoC 設(shè)計已經(jīng)能夠解決復(fù)雜業(yè)務(wù)的問題。思考:軟件設(shè)計的經(jīng)典原則:SOLID 軟件設(shè)計原則(依賴倒置原則 Dependency Inversion Principle)Spring淘系原框架Inversify使用 XML,前端不友好 開源,擴展困難成熟的 JAVA IoC 容器此外,NestJs, TypeORM 等社區(qū)框架也自建了 IoC 容器JAVAJS漸進式開發(fā)IoC 使用例子控制反轉(zhuǎn)模塊解耦依賴注入漸進式開發(fā)函數(shù)式與 IoC 的結(jié)合使用了 IoC 的復(fù)雜業(yè)務(wù) 類通過 Hooks 來使用復(fù)雜業(yè)務(wù) 類函數(shù)式與IoC 的無縫結(jié)合,從簡單到復(fù)雜場景都能處 理Midway Serverless 云端一體特性1函數(shù)即接口。我們通過函數(shù)來統(tǒng)一前后端的體驗,減少不必 要的樣板代碼,加速應(yīng)用研發(fā)函數(shù)式研發(fā)Functional R&D Solutions3通過 Hooks 開發(fā) Node.js 應(yīng)用。是全新的體驗,也是 你熟悉的語法。更為函數(shù)式開發(fā)帶去了完善的能力支持HooksUsing Node.js like React Hooks2從此不再手動調(diào)用 Api。在新框架中,你可以直接從服務(wù) 端導(dǎo)入函數(shù)并調(diào)用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆福建廈門灌口中學(xué)物理高二第一學(xué)期期末達標(biāo)檢測試題含解析
- 湖南省婁底市2025屆物理高二上期中質(zhì)量檢測模擬試題含解析
- 2025屆福建省龍巖市一級達標(biāo)學(xué)校物理高三上期中統(tǒng)考模擬試題含解析
- 陜西省育才中學(xué)2025屆高二物理第一學(xué)期期末復(fù)習(xí)檢測試題含解析
- 山東省濱州市(2024年-2025年小學(xué)五年級語文)統(tǒng)編版小升初模擬(下學(xué)期)試卷及答案
- 思修緒論部分課件
- 2024年加工房設(shè)備安裝合同范本
- 快拆腳手架施工工法課件
- 2024年衣服印花紙采購合同范本
- 2024年貨車租賃到工地合同范本
- 居民自建樁安裝告知書回執(zhí)
- 施工方案 誰編
- 滬教牛津版八上英語Unit-6-單元完整課件
- 新能源及多能互補互補技術(shù)
- 混凝土攪拌站安裝及拆除方案
- 電力電子技術(shù)在新能源領(lǐng)域的應(yīng)用
- 《管道營銷策略》課件
- 裝配式建筑預(yù)制構(gòu)件吊裝專項施工方案
- 繪本分享《狐貍打獵人》
- 防詐騙小學(xué)生演講稿
- 小學(xué)英語-Unit4 There is an old building in my school教學(xué)設(shè)計學(xué)情分析教材分析課后反思
評論
0/150
提交評論