从微服务到 Serverless | 开源只是开始,终态远没有到来
開源只是開始,終態(tài)遠(yuǎn)沒有到來。
從微服務(wù)開源,到 Serverless 開源,我們正持續(xù)將阿里沉淀的技術(shù)能力進(jìn)行開放。
只是這一次不同的地方在于,借助 Serverless 能力的釋放,將幫助前端進(jìn)入一個嶄新的時代,只需寫幾個函數(shù)即可實現(xiàn)后端業(yè)務(wù)邏輯,推動業(yè)務(wù)快速上線,讓整個前端研發(fā)效能大幅提升。
什么是 Mindway Serverless
自7月初發(fā)布 V1.0 以來,Midway Serverless 已經(jīng)獲得了超過 2.7k 的 star。Midway Serverless 是一套面向 Serverless 的解決方案,包括框架、運行時、工具鏈、配置規(guī)范4個部分,這4部分組合之后,就能提供了一些面向 Serverless 體系的特有能力:
1、平臺間遷移更容易
通過提供統(tǒng)一的配置規(guī)范以及入口抹平機(jī)制,讓代碼在每個平臺基本相同;
擴(kuò)展不同云平臺的運行時 API,不僅能加載通用的平臺間擴(kuò)展,也能接入公司內(nèi)部的私有化部署方案。
2、讓應(yīng)用更易維護(hù)和擴(kuò)展
提供了標(biāo)準(zhǔn)的云平臺函數(shù)出入?yún)⑹录x;
提供了多套和社區(qū)前端 React、Vue 等融合一體化開發(fā)的方案;
使用了 TypeScript 作為基礎(chǔ)語言,方便應(yīng)用擴(kuò)展和定義;
提供了完善的 Midway 體系標(biāo)志性的依賴注入解決方案。
3、生態(tài)更輕量和自由
函數(shù)體系復(fù)用 koa 的生態(tài)和 Web 中間件能力,在處理傳統(tǒng) Web 時更加得心應(yīng)手;
提供 egg 組件復(fù)用 egg 插件的生態(tài)鏈,企業(yè)級開發(fā)鏈路更簡單順暢;
Midway 體系的裝飾器能力統(tǒng)一,讓傳統(tǒng) Web 遷移到 Serverless 體系更快更好。
**Midway Serverless @GitHub
https://github.com/midwayjs/midway**
防平臺鎖定
Vendor Lock-in 是每個使用云平臺的的人都會拷問靈魂的問題,Midway Serverless 一開始的初衷就是讓一套代碼能夠運行在不同的平臺和運行時之上,我們不建議在不了解全貌時去自定義運行時,那非常的危險。事實上,官方的運行時是運行最穩(wěn)定,也一定是性能最好的,所有的基準(zhǔn)跑分都是基于此。
我們了解的大多數(shù)企業(yè)在面對 Serverless 的第一個問題就是,我的代碼是不是一定得綁死到阿里云、騰訊云或者 AWS 等等。
面對這個問題,Midway Serverless 提供了一套 “隱藏式” 入口加上通用化定義來解決這個問題。
針對每個平臺,Midway Serverless 提供了不同的運行時啟動器,用于抹平各個平臺的差異,并且通過這些啟動器,將各個平臺的出入?yún)?#xff0c;以及各個 event 結(jié)構(gòu),網(wǎng)關(guān)的返回格式進(jìn)行規(guī)則化,讓用戶盡可能不感知底層容器以及協(xié)議的差異。
除此之外,Midway Serverless 提供了一套 Spec 定義,來抹平多個平臺的差異,同時也能方便的在多個平臺間復(fù)用相同的工具鏈和函數(shù)邏輯。
這樣,不管是 API Gateway,還是普通的 HTTP 觸發(fā)器,都能在統(tǒng)一的編程平面中提供 API,讓編寫代碼變的簡單。
前端賦能
云 + 端的開發(fā)體驗是 Midway Serverless 目標(biāo)之一,傳統(tǒng)應(yīng)用的開發(fā),前端和后端分離,多倉庫開發(fā),部署分離。就算使用了 Node.js 的膠水層,也無法避免人員開發(fā)體感上的割裂。而在 Serverless 體系下,這不是什么問題。
由于后端的大幅簡化,再加上云服務(wù)的 BaaS 化,讓數(shù)據(jù)聚合,頁面渲染變的更容易,也能更快的讓前端上手和開發(fā)。
一體化慢慢成為了這一塊的前端訴求,所謂的一體化,不僅僅是傳統(tǒng)倉庫的融合,也是整個開發(fā)模式的演進(jìn),從工程體系加上代碼,CI/CD 的整套體系重塑的機(jī)會。
如今的 Midway Serverless,提供了和前端一體的開發(fā)方案,囊括了社區(qū)現(xiàn)有的 React、Vue 等生態(tài),也對整個工具鏈(Webpack,ice scrips,umi 等)做了定制化方案,對不同的場景,比如博客等也提供了開箱即用的解決方案。
至于詳細(xì)的前后端一體化能力,我們后續(xù)將單獨開一篇文章來介紹前端一體化的細(xì)節(jié)和思考。
應(yīng)用和函數(shù)
Serverless 是未來一段時間的方向,也是前端邁向更高層次的鋪路磚。
之前一直在思索,如今的函數(shù)式開發(fā)的終態(tài)和應(yīng)用的關(guān)系到底是什么?
現(xiàn)階段,我們的答案是趨于統(tǒng)一,在被無數(shù)次的靈魂拷問和用戶需求的追問中,我們得出了這個答案,函數(shù)即是應(yīng)用在當(dāng)前業(yè)務(wù)中的最小體現(xiàn),更簡單的來說,是在最小規(guī)格容器中運行應(yīng)用的部分代碼。
之后的一段時間,我們將聚焦于更多平臺的接入,以及傳統(tǒng)應(yīng)用的遷移方案上,讓之前的用戶也能享受到 Serverless 彈性的紅利,讓企業(yè)成本更低,業(yè)務(wù)上線更容易。
社區(qū)和未來
在阿里大中臺、小前端業(yè)務(wù)架構(gòu)日趨深化的背景下,借助其云原生/Serverless 的發(fā)展,去年 Node.js 在業(yè)務(wù)端到端交付場景上看到了未來。
新一代云 + 端的前臺業(yè)務(wù)交付模式逐漸成為現(xiàn)實,這可以幫助技術(shù)團(tuán)隊塑造有業(yè)務(wù)整體交付能力的特種兵,幫助業(yè)務(wù)快贏。但其路漫漫仍諸多不完善,為了盡早達(dá)到這一步,需要高度聚焦在兩個核心問題上:1. 規(guī)模化成本、2. 交付速度。
期望在未來透過我們對規(guī)模化成本、交付速度的持續(xù)投入,Node.js/Serverless 體系可以體現(xiàn)出全面的先進(jìn)性。
生態(tài)體系:
社區(qū)合作伙伴:
Koa、Egg、icejs、ykfe/ssr
本文作者:
陳仲寅,花名張挺,淘系高級前端技術(shù)專家,長期耕耘于 Node.js 技術(shù)棧,為淘寶和阿里其他 BU 提供框架和中間件解決方案,阿里集團(tuán) Serverless 標(biāo)準(zhǔn)化規(guī)范負(fù)責(zé)人,負(fù)責(zé)淘寶整體的 Node.js 體系基礎(chǔ)建設(shè),解決全棧開發(fā)的各種維護(hù)和穩(wěn)定性問題,也同時負(fù)責(zé) MidwayJs 系列內(nèi)部和社區(qū)開源產(chǎn)品,包括 Midway、Sandbox、Pandora.js、Injection 等開源產(chǎn)品的開發(fā)、維護(hù)等工作。
原文鏈接:https://developer.aliyun.com/article/769406?
版權(quán)聲明:本文內(nèi)容由阿里云實名注冊用戶自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。具體規(guī)則請查看《阿里云開發(fā)者社區(qū)用戶服務(wù)協(xié)議》和《阿里云開發(fā)者社區(qū)知識產(chǎn)權(quán)保護(hù)指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫侵權(quán)投訴表單進(jìn)行舉報,一經(jīng)查實,本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。總結(jié)
以上是生活随笔為你收集整理的从微服务到 Serverless | 开源只是开始,终态远没有到来的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何认识物联网?还云里雾里不?
- 下一篇: 客户端稳定性优化实战,Crash率最高下