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