GAIA研发平台演进之路
如果无法正常显示,请先停止浏览器的去广告插件。
1. 讲师:樊冲(花名:岽篱)
2. ⼤纲
01 现状和挑战
03 切入和演进
现象和本质问题
FaaS和交付技术
02 基础设施的变化
04 展望
k8s带来变化和契机
复杂应用
3. 科普
如何容器化交付⼀个简单的java应⽤
APP
</code>
compile/build
more:
•
•
artifact
image
docker build
通过pom
安装jar依赖
Container
Run
more:
more:
•
•
通过dockefile
安装依赖软件
然⽽在真正的应⽤场景上container的内容并不简单
•
•
资源调度
应⽤实例⽣命周期维护
4. 淘系应⽤研发现状
应⽤创建
安全信息提交
基础信息
⼯作流配置
源码库配置
⼯程初始化
构建配置
测试环境机器
⽇志清理
服务透出和接⼊ 线上环境机器准备
调整构建和环境⽂件
dockerfile/env 接⼊中间件
申请/配置
预发环境机器准备
30min~6h
编码期间
创建变更
调试流量链路
写业务代码
发布
涉及中间件等SDK:10+
迭代运维
扩容
限流
升级
建站/迁移
涉及控制台:5~20+
5. 重构研发体系的挑战
问题A: 富SDK
rpc
Console
Trace
Console
APP
带来问题
rpc
Console
metaq
Console
Ratelimit
Console
Trace
RPC
ACL
Rate
Limit
redis
client Biz
Code metric
DB
Client metaq
client Config
Client
DB
Console
ACL
Console
Api-gateway
Console
Route
Gray
Console
config
Console
• 开发者应接不暇的能⼒升级
• 技术能⼒迭代受阻
• 语⾔不中⽴
• 众多术语不⼀致的控制台
6. 重构研发体系的挑战
问题B: 富容器
CI
AONE
Container
Security
App ops
Normady
SSH
syslogd
Log
agent
Pre
Hook Post
Hook
APP Star
agent
Post
Hook
Quota
Console
Crond
Route
带来问题
Staragent
Console
• 开发者需要理解并维护dockerfile
• 开发者参与局部组件的升级
• 漫⻓的发布速度
• 众多术语不⼀致的控制台
• 容器和应⽤⽣命周期不⼀致
7. 重构研发体系的挑战
问题C: 围绕富容器运维体系
构建发布平台
aone
应⽤运维平台
Normady
调度引擎
Sigma
协作开发和CICD
应⽤运维
Container
标准锁定
APP
资源调度容器交付
使得新场景、新容器定义的研发平台需要极⾼的造轮⼦成本
8. 重构研发体系的挑战
⼩结:
① 应⽤内众多的SDK侵⼊
② 富容器及背后的运维体系难以复⽤
在这个体系下为了提升研发效率,造成的局⾯:
JVM FaaS™:使⽤统⼀加载的基座技术绕开① ,使⽤固定资源池⼦并脱离容器化交付绕开②
全新封闭的运维体系:更进⼀步的直接对接sigma打造另⼀套依旧封闭的运维体系来满⾜⾃定义交付体系
9. ⼤纲
01 现状和挑战
03 切入和演进
现象和本质问题
FaaS和交付技术
02 基础设施的变化
04 展望
变化和契机
复杂应用
10. 基础设施的变化
kubernetes带来了”强势"的⼆层规范
k8s based, Not only k8s,新基础设施:ASI
• 统⼀应⽤和容器的⽣命周期 (liveness/readiness)
• 沉淀通⽤运维能⼒
• 统⼀的资源调度和弹性 (HPA/VPA)
• ⾯向过程到⾯向声明式终态
• controller/operator扩展
k8s出⾊的扩展性和强势的标准,可以把从⽽把原本分散的交付运维能⼒,沉淀为k8s原⽣能⼒
统⼀的k8s API,⼆⽅PaaS可以低成本打造⾃定义端到端的交付体系
11. 基础设施的变化
kubernetes pattern
Pod的设计带来了很多的想象⼒,提供了对通⽤组件剥离到进程/容器外的基础能⼒
从插件/SDK的集成⽅式变成了多runtime组合⽅式
12. 基础设施的变化
⼩结
✔ 基于新基础设施 ASI 可以轻松⾃定义容器化交付流程
✔ 通过对富容器的运维组件也逐步的挪到 sidecar,轻量容器可以轻松定义新容器规范
?但富SDK的剥离依旧需要⼀个漫⻓对过程
13. ⼤纲
01 现状和挑战
03 切入和演进
现象和本质问题
FaaS和交付技术
02 基础设施的变化
04 展望
变化和契机
复杂应用
14. GAIA的切⼊和演进
基于技术背景和业务痛点分析产品形态
业务场景分析:
API gateway
聚合层
领域层
DB/Redis
FaaS
1. 依赖简单,富SDK问题不显著,往往是纯计算层
2. 变化频繁,越靠近view层越频繁
3. 规模庞⼤
4. 显著的跨语⾔要求
&
云端⼀体化编程
15. GAIA的切⼊和演进
GAIA FaaS产品架构
gaiacli
Web UI
Partners
Get:
GAIA platform
✔ ⼀体化发布平台
✔ 多种语⾔畅快开发
✔ 本地研发集成
ASI
16. GAIA的切⼊和演进
GAIA FaaS产品模型
Get:
✔ ⾃动化服务透出
✔ ⼀键发布切流灰度
✔ ⼿⾃⼀体
✔ 声明式⾯向终态
✔ 特⾊/复杂能⼒封装
17. GAIA的切⼊和演进
GAIA FaaS交付实现
平台层
OPS
Revision
Deploy
mode
Trigger
Schedule
CR渲染/集群分发(fed)/git化
ingress
CRD
Revision
Ingress
route
Template
deployment deployment
HPA HPA
CRD
ref
RevisionService
controller controller
负责实际流量的切流
可能是调⽤对应的控制⾯API 负责workload交付
服务透出
弹性扩缩
k8s
ConfigMap ConfigMap
Service Service
ServiceKey
k8s native的打造了新的交付链路,同时也成为基础设施的native的能⼒
Service discovery
18. GAIA的切⼊和演进
GAIA FaaS多运⾏时容器架构
Pod
Get:
main
函数/应⽤运⾏时容器
✔ 语⾔中⽴的能⼒建设
下沉SDK的运⾏时容器
•
•
EventBroker
✔ 轻量的业务容器
staragent
✔ ⽆感升级
去中⼼化的api gateway
消息客户端
运维相关的组件运⾏时容器
充分应⽤k8s pattern的容器架构,对组件剥离到独⽴运⾏时中
19. GAIA的切⼊和演进
GAIA FaaS数据⾯
Metaq
Service
msg
http
http
EventBroker
http
GRPC
Function
BaaS
Function
API
gateway
EventBroker充当了⼤使,会为多种协议统⼀接驳,然后转发/转化到后端Function上
20. GAIA的切⼊和演进
GAIA FaaS⼩结
业务价值:
技术成果:
✔ 降低了“聚合层”类型应⽤的开发⻔槛 ✔ 基于 k8s(ASI) 的打通⾃定义的交付体系
✔ 全新的模型降低开发者⼼智 ✔ 容器内的组件解耦到运维容器
✔ 极速交付体验(从分钟到秒级) ✔ 完成了部分应⽤依赖的 sidecar 解耦,语⾔中⽴
✔ 移动端云端⼀体化的探索
在这个直播系列的第三篇flutter云端⼀体化探索实践,3.25 20:00
,,,3.25
闲⻥架构组同学会给带来更详细的分享
进⼀步思考:
? 是否可以把交付技术推⼴到传统JVM FaaS
21. GAIA的切⼊和演进
GAIA交付体系
GAIA FaaS多运⾏时容器架构v2
Pod
函数/应⽤运⾏时容器 main artifact
下沉SDK的运⾏时容器 EventBroker staragent
去中⼼化的api gateway
消息客户端
在之前的容器架构基础上增加artfact容器,来完成数据热加载能⼒
助⼒传统JVM FaaS技术升级
负责交付产物的运⾏时
运维相关的组件运⾏时容器
22. GAIA的切⼊和演进
GAIA交付体系助⼒传统JVM FaaS技术升级
Pod
4.2.拉取镜像(⾸次)
main
Container
5.reload
Artifact
container
共享卷
http通知
4.1.拉取镜像
3. Create pod(if not have)
K8s
1.打包镜像
2.K8s yaml
声明式交付
GAIA
platform
建设main-artifact容器共享通信规范,可以⽀持热更新,同时也兼容原地更新
23. GAIA的切⼊和演进
GAIA JVM FaaS升级⼩结
价值:
关键技术:
• main-artifact容器规范
• 原地升级技术
✔ 容器化隔离替代类/线程隔离
权衡:
•
•
✔ 端到端的交付体系,统⼀交付链路
⼀定程度上破坏了不可变基础设施原则
但是在演进阶段⽐较合适的让步
在此鸣谢:基础设施ASI团队
✔ 资源⼀体化调度
✔ ⽀持多种语⾔的热加载技术 (dart/java)
24. ⼤纲
01 现状和挑战
03 切入和演进
现象和本质问题
FaaS和交付技术
02 基础设施的变化
04 展望
变化和契机
复杂应用
25. 展望
回顾
✔ 利⽤ k8s 打造了轻量研发平台
✔ 通过交付技术通⽤化和容器架构的规范化,对存量 FaaS 的技术升级
GAIA场景扩展:复杂应⽤接⼊
• 更多的SDK下沉到sidecar(和service mesh⼀起推动)
• 统⼀编程平⾯简化编程(Event还不够)
• 复杂应⽤的声明式交付(OAM)
26. 【淘系技术】微信公众号
扫码获取本期PPT内容及回放
加⼊我们
【淘系基础平台部-基础服务】
⼀起探索⽀撑千亿级流量新⼀代架构