历史发展

  1. 云计算&虚拟机发展

云计算的重要里程碑之一是2001年VMWare带来的可用于X86的虚拟化计划。通过虚拟机,可以在同一台物理机器上运行多个虚拟机,这意味着可以降低服务器的数量,而且速度和弹性也远超物理机。

https://skyao.io/learning-cloudnative/docs/introduction/history.html

  1. 容器技术

有两个重要的里程碑:

  1. 2013年,Docker发布,容器逐步替代VM,云计算进入容器时代
  2. 2017年底,Kubernetes 赢得容器编排的胜利,云计算进入 Kubernetes 时代

https://skyao.io/learning-cloudnative/docs/introduction/history.html

3.大势所趋 随着互联网的发展,企业的规模不断增长壮大。云计算的模式,开始变得必要起来,其优势也愈发凸显。与之相匹配的,云原生也由此诞生。

云原生定义

云原生很难准确的定义出技术含义,更多的关于其【文化】。可以阅读下这个文章: https://cloudnative.to/blog/cloud-native-culture-not-container/

根据 jimmysong 的总结,大致可以分为这三种:

  1. Pivotal最初定义
  • 符合 12 因素应用
  • 面向微服务架构
  • 自服务敏捷架构
  • 基于 API 的协作
  • 抗脆弱性
  1. CNCF最初定义
  • 应用容器化
  • 面向微服务架构
  • 应用支持容器的编排调度
  1. 重定义 云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。

我们可以说,符合云原生设计哲学的应用架构才是云原生应用架构。

云原生特征

  • 隔离性(Isolation):与物理设备和操作系统的隔离性、子系统间的隔离性
  • 可组合(Composable):服务可称为其他应用程序的一部分
  • 容器化(Containerized):打包实现轻量级、弹性等优点,实现了 dev/prod 的一致性,促进代码和组件重用并简化运维
  • 模块化(Modularity):应用分解为更小更易于理解的部分,多个模块相互协作,组成完整的应用程序,对外提供功能和服务。最典型的表现为微服务。
  • 弹性(Resiliency):应用程序在基础设施中断或故障期间生存并保持在线的能力
  • 可替换性(Replaceability):创建、销毁、替换
  • 自动化(Automation):自动化管理大型复杂应用程度,从底层抽象出来
  • 可观测性(Observability)
  • 可测试性(Testability):持续集成和持续交付
  • 可移植性(Portable)
  • 安全(Security)
  • 移动性(Mobility):支持移动设备
  • 可扩展性(Scalability):自动按需缩放
  • 可用性(Availability):可用性和业务连续性
  • 成本(Cost)
  • 效率(Efficiency):通过中央编排过程实现了微服务的动态管理和调度,提高了效率和资源利用率
  • 敏捷(Agility)