现代应用程序的需求
- 零停机时间(一直运行)
- 缩短反馈周期(频繁发布)
- 移动端和设备支持
- 互联设备(物联网)
- 数据驱动
为了满足这几个需求要解决什么问题?有哪些痛点?
- 弹性(解决需求1)
- 敏捷性(解决需求2)
- 大量及大幅波动的请求和数据(解决需求3,4)
为了解决这几个问题,应当如何去应对?设计时需要注意的能力是什么?
- 冗余性,实现高可用(解决痛点1)
- 可适应性(不同的云服务厂商,不同机器,基础设施)(解决痛点2)
- 模块化(目标是单独模块扩缩容,因为发布模块越小,发布周期越短)(解决痛点1,2)
- 动态伸缩能力
总结一下现代应用程序的特点
- 高度分布式(对应能力1,3,4)
- 不断变化(对应能力2,4)
云原生的定义
为了解决现代应用程序的特点,得到了以下云原生的定义:
云原生应用是高度分布式的,必须在一个不断变化的环境中运行,而且自身也在不断发生变化
传统的云原生定义:CNCF的云原生定义
云原生技术组织能够在现代,动态环境(共有云,私有云,混合云构建运行可扩展应用程序,容器,服务网格,微服务。)这些技术松散耦合的系统具有弹性,可管理性和可观察性,结合强大的自动化能力,他们使工程师可以频繁且可预测的以最小的工作量响应。
友商的云原生定义:AWS的云原生定义
AWS云原生架构充分利用以下优势:按需交付,全球部署,弹性,高品质服务(SLA)在以下方面得到显著提高:开发者生产率,业务敏捷性,扩展性,可用成本。