云端进化
如果无法正常显示,请先停止浏览器的去广告插件。
1. 云端进化
从 “All in Cloud” 到 “Cloud Native”
蔡超
2022.9
2.
3. Mobvista
No.1 C h i n a
200+ C o u n t r i e s / R e g i o n s
TOP 10
2.2B
world-
wide
D M P ’s D A U
430M Mintegral SDK DAU
110B
Daily Ads request
4. All in Cloud
Publisher
Advertiser
Big Data & ML
Tracking Service
Volume Processing Service
EMR
S3
S3
Kinesis
Spot Fleet
ElastiCache
Auto
Scaling
Auto
Scaling
Kinesis
Metrics & Alarm
CloudWatch
Lambda
function
Offer management
RDS
instances
SQS
instances
Online DMP
ES
DynamoDB
Redshift*
Spot Fleet
RTB
5. “Pain + Re ection = Progress”
– Ray Dalio
6. 变异:应对变化的生存环境
7. 适者生存
单体架构
C/S
多层架构
SOA/EDA
微服务
?
软件架构
基础设施
{SOAP , Restful}
?
8. 云计算特点对架构的影响
快速弹性伸缩
非确定性失效
高可伸缩性
高可用性
按需获取
低成本
按使用付费
高可维护性
资源维护托管
9. 微服务化更有效利用弹性
10. 更细粒度的伸缩
更细粒度的伸缩
更合理的计算资源
更低的成本
11. 计算资源收费模式
付费模式
特点
按需实例-OD
$
$ $
$ $ $
$ $ $ $
预留实例-RI
竞价实例-Spot
$
$ $
$ $ $
根据需求随时获取 ⻓期持有,固定套餐
按使用时间付费,价格最贵 价格相对优惠
$
云商闲置资源
灵活获取,随时可能被回收
价格最低可达按需实例价格的10%
12. 竞价实例调度
Report Interruption Data
• 利用大数据及机器学习技术对不同
类型实例的回收率进行预估,并以
CloudMeta
Scored Instances
Availability Predictions
Real Time Learning
Collect
Interruption
Data
Big Data & ML
此持续优化集群构成,大大降低集
群实例中断的发生
• 通过实时学习预测大规模中断,预
先替换包括按需实例在内的稳定型
Collect
Interruption Data
Optimize Cluster
Composition
实例,提前获取将有效避免资源紧
缺时的无法补偿
Cluster
13. “Everything fails all the time!”
— Werner Vogels, Amazon AWS CTO
14. 微服务更好的应对失效
面向失效的设计 单体 vs 微服务
• 错误隔离 • 进程级的错误隔离
• 熔断与服务降级 • 多级熔断与服务降级
• 冗余 • 更细粒度的冗余
• 限流控制 • 分级多层次的限流控制
15. 面向恢复的设计
• 不要采用单体系统
• 保持无状态
• 在依赖系统失效的情况下,仍可提
供服务
• 可以快速重启
• 健康检测
https://www.infoq.cn/article/k4atypotbb-5icoakuvq
16. 更快更精准利用弹性
Microservice
Function
Function
Microservice
Function
Function
Monolith
Microservice
Function
Function
Microservice
Function
17. 更具弹性的无服务架构
Collect
Transfer
Analyze
Android
Real time
Kinesis
iOS
Lambda
function
S3 bucket
Lambda
function
Kinesis
Druid
Batch
S3 bucket
EMR
18. 进化的不只是架构
19. 宠物 vs 牛群
弹性伸缩让“宠物”变成“牛群”
Scale Out
V.S.
Scale Up
20. 发布变更
发布
发布
Patch2
Patch1
应用
运行环境
VM
镜像1 镜像2
应用 应用
运行环境 运行环境
发布
发布
VM
“宠物”模式
“牛群”模式
21. Make The Things Immutable
Immutable => Stable + Repeatable
Lock Business logic
Compile
.Java
0101110001100
1001
11110000000
……
Lock runtime
Build
Lock solution topology
Define
Lock environment
Deploy
.yaml
22. 康威定律
Any organization that designs a system will produce a design
whose structure is a copy of the organization's communication
structure.
— Melvin E. Conway
23. 把组织映射到Kubernetes集群
Cluster
1
1..*
Namespace
1
*
Service
1
1..*
Organization
*
Developer
*
*
Project
1
apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-resources
spec:apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-resources
spec:
hard:
requests.cpu: 64
requests.memory: 256Gi
limits.cpu: 64
limits.memory: 256Gi
24. DevOps需要开发者视⻆
DevOps的应用视⻆
将资源
聚合到
25. GitOps
Keep all the historical versions
Bundle V1.0.0
Bundle V1.0.1
Service
Con gMap
Auto sync to multi-cluster
Deployment
Quick setup for GitOps
Secret
Auto-package the resources according to the dependencies
26. 运维自动化
Desired State Oriented Management
Kubernetes Operator Pattern
获取和恢复该应用程序状态的备份
处理应用程序代码的升级以及相关的更改,例
如数据库模式或额外的配置设置
接入Kubernetes外的服务
混沌工程,模拟失效
27. 云原生技术的定义
•
•
•
应用容器化
面向微服务架构
应用支持容器的编排调度
2015
云原生技术有利于各组织在公有云、私有云和混合
云等新型动态环境中,构建和运行可弹性扩展的应
用。云原生的代表技术包括容器、服务网格、微服
务、不可变基础设施和声明式API。这些技术能够
构建容错性好、易于管理和便于观察的松耦合系
统。结合可靠的自动化手段,云原生技术使工程师
能够轻松地对系统作出频繁和可预测的重大变更。
2018
“云原生”是一种充分利用云计算模式
的优点来构建和运行应用的方法。
28. 进化 = 变异 + 遗传
29. “I very frequently get the question: ‘What’s going to change in the
next 10 years?’ And that is a very interesting question; it’s a very
common one. I almost never get the question: ‘What’s not going to
change in the next 10 years”
– Je Bezos
30. 不变的核心复杂性
软件项目的关键复杂性在于理解领域本身。
31. “I believe that the hardest part of software projects, the
most common source of project failure, is
communication with the customers and users of that
software.”
— Martin Fowler
32. 不变的好架构标准
• 好的架构应该向读者展示的你的系统是什
么,而不是用了什么样的framework
• 一个好的软件架构允许最大程度的推迟有
关框架、数据库、Web 服务器和其他环境
问题和工具的决策。
33. “DDD”分层结构
Application
Execute the users’ transactions/tasks
•
领域模型可以用于实现不同的业务
Domain
Business Domain Model
•
Stable
领域模型可以使用不同技术栈来实现
Infrastructure
Evolvable
Framework/Lib/MessageQueue/Database/…
34. 不变的基本原则
Saga Pattern for Distributed Transaction
35. 不变的软件设计思想
• 关注点分离
• 单一责任原则 SRP
• 面向接口
• 封装及适配
36. New Building Block
Function
Class
Component
Container
Service
37. Sidecar Pattern
Single Responsibility
Reusable
Pod
Main Container
Localhost
Sidecar
Adapter/Isolate
Volume
38.
39. 为云而生,共筑未来
SpotMax
智能调度Spot instance,在不妥协可用性的情况
下,实现最高90%的计算成本节省。
MaxCloud
封装云原生技术栈的复杂性,提供开发者视⻆的运维平
台,内置DevOps的最佳实践。
40.
41. “Stay hungry, stay foolish.”
— Steve Jobs