历史发展
- 云计算&虚拟机发展
云计算的重要里程碑之一是2001年VMWare带来的可用于X86的虚拟化计划。通过虚拟机,可以在同一台物理机器上运行多个虚拟机,这意味着可以降低服务器的数量,而且速度和弹性也远超物理机。
https://skyao.io/learning-cloudnative/docs/introduction/history.html
- 容器技术
有两个重要的里程碑:
- 2013年,Docker发布,容器逐步替代VM,云计算进入容器时代
- 2017年底,Kubernetes 赢得容器编排的胜利,云计算进入 Kubernetes 时代
https://skyao.io/learning-cloudnative/docs/introduction/history.html
3.大势所趋 随着互联网的发展,企业的规模不断增长壮大。云计算的模式,开始变得必要起来,其优势也愈发凸显。与之相匹配的,云原生也由此诞生。
云原生定义
云原生很难准确的定义出技术含义,更多的关于其【文化】。可以阅读下这个文章: https://cloudnative.to/blog/cloud-native-culture-not-container/
根据 jimmysong 的总结,大致可以分为这三种:
- Pivotal最初定义
- 符合 12 因素应用
- 面向微服务架构
- 自服务敏捷架构
- 基于 API 的协作
- 抗脆弱性
- CNCF最初定义
- 应用容器化
- 面向微服务架构
- 应用支持容器的编排调度
- 重定义 云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。
我们可以说,符合云原生设计哲学的应用架构才是云原生应用架构。
云原生特征
- 隔离性(Isolation):与物理设备和操作系统的隔离性、子系统间的隔离性
- 可组合(Composable):服务可称为其他应用程序的一部分
- 容器化(Containerized):打包实现轻量级、弹性等优点,实现了 dev/prod 的一致性,促进代码和组件重用并简化运维
- 模块化(Modularity):应用分解为更小更易于理解的部分,多个模块相互协作,组成完整的应用程序,对外提供功能和服务。最典型的表现为微服务。
- 弹性(Resiliency):应用程序在基础设施中断或故障期间生存并保持在线的能力
- 可替换性(Replaceability):创建、销毁、替换
- 自动化(Automation):自动化管理大型复杂应用程度,从底层抽象出来
- 可观测性(Observability)
- 可测试性(Testability):持续集成和持续交付
- 可移植性(Portable)
- 安全(Security)
- 移动性(Mobility):支持移动设备
- 可扩展性(Scalability):自动按需缩放
- 可用性(Availability):可用性和业务连续性
- 成本(Cost)
- 效率(Efficiency):通过中央编排过程实现了微服务的动态管理和调度,提高了效率和资源利用率
- 敏捷(Agility)