什么是云原生
云原生概念理解
- 一种构建和运行程序的方法
- 一个不断丰富的理念和技术体系
不是一个产品,是一套技术体系和方法论,是一种文化,是云计算的必然导向。
传统云计算的三层概念
- Iaas
- Paas
- Saas
云原生出现的背景
在云时代,更多的应用会被迁移到云上,基于云的架构设计和开发模式需要一套全新的理念去承载,因此出现了云原生。
云原生应用
简单来说,就是把传统的应用不做任何改变放到云平台上,此时仅仅是把虚拟机当作物理机来使用,没有真正地发挥云平台的作用。
真正的云化不只是基础设施和平台的改变,应用也需做出相应改变,eg:应用的架构、应用的部署和开发方式、应用的部署和维护,需要充分发挥传统IT所不具备的能力,eg:弹性、动态调度、快速部署、自动伸缩等等。
云原生应用最大的特点:可以快速部署到新业务里。利用这一特点可以快速试错改错,降低软件发布的风险,提高竞争优势。
云原生计算基金会(CNCF)
2015年由谷歌牵头成立,基金会目前已有上百家企业。CNCF致力于培育和维护一个厂商中立的开源生态系统,用来推广云原生技术,通过将最前沿的模式民主化,让这些创新为大众所用。基金会认为云原生系统需要包含的属性:
- 容器化封装。以容器为基础,提高整体开发水平,形成代码和组件的重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。
- 自动化管理。统一调度和管理中心,从根本上提高系统和资源利用率,同时降低运维成本。
- 面向微服务。通过松耦合方式,提升应用程序的整体敏捷性和可维护性。
云元素的四要素
- 持续交付
- DevOps
- 微服务
- 容器
持续交付——小步快跑
敏捷开发要求持续交付。持续交付缩短交付周期,快速交付,每次都可以重新确认方向,尽量避免与未来期待的误差,从而适应快速变化的市场。
为了满足持续交付,出现了“蓝绿部署”的概念。什么是“蓝绿部署”?
可以保证系统在不间断提供服务的情况下上线的部署方式。蓝绿部署中包含两个集群,在没有新上线时,两个集群一样,同时对外提供服务。当系统需要升级时,把其中一个集群(集群A)从负载列表中摘除,进行新版本的部署;另一个集群(集群B)保持原系统对外提供服务。当集群A升级完成后,把负载均衡重新指向集群A,把集群B从负载列表中摘除,进行新版本部署,升级完成后重新恢复到负载列表中。通过这样一个过程,两个集群的版本都已经升级,而且对外服务也没有停止过。
蓝绿部署可以延伸出滚动部署。
微服务
微服务是一种架构的改变,最关键的部分是切割。如何切割,可以用1968年康威提出的康威定律,根据组织架构的功能来划分系统的服务,这样划分有以下优势:
- 把所有遵循同一业务准则的人内聚到一起,容易解决问题。
- 服务解耦,变更容易,更加敏捷。
什么是微服务架构?
一种软件开发技术-面向服务的体系机构(SOA)架构样式的变体,将应用程序构造为一组松散耦合的服务。
微服务是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。
什么时候需要微服务?
- 有HA(high available)的需求时。
- 有性能调校的需求时(eg:图片的呈现或者搜寻)。
- 需求经常变更时。
微服务组织架构有什么优势和问题?
- 优势:微服务需要关注的源代码范围较小,使得各个服务解耦和变更更加容易,内聚更强,都会集中在服务里。
- 问题:APP团队如何分工?环境怎么配合?如何实现自动化部署?
容器技术
在机器上运行的容器是主机操作系统上的一个进程,容器之所以受欢迎,是因为这个进程被隔离和限制的方式,这种方式可以简化开发和运维。
什么是容器技术?
有效地将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求。
DevOps
打开开发和运维之间的围墙,形成闭环,让开发团队和运维团队一体化。具体可参见学习笔记之DevOps。
总结
- 云是云化战略成功的基石。
- 四个要素都是云原生不可或缺的一部分。
- 云原生可以理解为一种思维模式、一种理念、一种技术体系、一种构建和运行程序的方法。