Cloud Native

学习学习什么是Cloud Native

Posted by zhangzhaorui on November 27, 2018

请对生产环境保持敬畏之心!!!!

什么是CloudNative?

  Cloud Native是一个思想的集合,包括DevOps、持续交付、微服务、敏捷基础设施、康威定律等,以及根据商业能力对公司进行重组。可以说Cloud Native即包含技术(微服务,敏捷基础设施),也包含管理(DevOps,持续交付,康威定律,重组等)。Cloud Native也可以说是一系列Cloud技术、企业管理方法的集合。

Cloud Native的对于我们的意义

  企业采用基于Cloud Native的技术和管理方法,可以更好的把业务迁移到云平台,从而享受云的高效和按需获得资源的能力。

Cloud Native和传统Cloud的区别

Cloud Native的技术部分是建筑在传统Cloud的三层(IaaS、PaaS、SaaS)概念之上的:

  • 敏捷基础设施对应IaaS部分。
  • 微服务则可以对应PaaS和SaaS部分。

cn.png

Cloud Native的五个层面

  1. 康威定律:业务云化推行,从某种意义上讲也是一种变革。既然是变革,必然会涉及组织的各个层面,开发、质量、运维等等都会涉及。康威定律则准确的描述了系统架构和组织的关系:组织架构决定系统架构!一个云系统最终长成什么样子,则完全是企业的组织结构决定的,是组织内部、组织之间的沟通结构。
  2. DevOps:过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、运维、质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到为了按时交付软件产品和服务,开发、测试和运维必须紧密合作。
  3. 持续交付:是一系列的开发实践方法,用来确保让代码能够快速、安全的部署到产品环境中,它通过将每一次改动都提交到一个模拟线上环境中,使用严格的自动化测试,确保业务应用和服务能符合预期。因为使用完全的自动化过程来把每个变更自动的提交到测试环境中,所以当业务开发完成时,你有信心只需要按一次按钮就能将应用安全的部署到产品环境中。持续交付可以采用:CI(持续集成)、代码检查、UT(单元测试),持续部署等方式,打通开发、测试、生产的各个环节,持续的增量的交付产品。
  4. 微服务:字面意思理解,微服务首先是一个服务,其次该服务的颗粒比较小。微服务可以采用Docker、rkt、LXC等技术手段实现。
  5. 敏捷基础设施:提供弹性、按需的计算、存储、网络资源能力。可以通过Openstack、KVM、Ceph、OVS等技术手段实现。

为什么会出现Cloud Native?背后的诉求是什么?

  • Speed 更快的上线速度
  • Healthcheck 细致的故障探测和发现
  • Fuse故障时能自动隔离
  • Self-recovery故障时能够自动恢复
  • AutoScaling方便的水平扩容

Cloud Native能否解决上述的诉求?可以的!

  • 持续交付、DevOps、微服务解决–>更快的上线速度
  • 微服务解决–>细致的故障探测和发现
  • 微服务解决–>故障时能自动隔离
  • 敏捷基础设施、微服务解决–>故障时能够自动恢复
  • 敏捷基础设施、微服务解决–>方便的水平扩容

如何推行Cloud Native

软建设

  • 组织变革:根据康威定律,如果要达到比较理想的云化效果,必须进行组织变革。一个合理的组织架构,将会极大提高云化的推行。相信很多公司,在决定搞云计算后,都大大小小进行了部门合并和组织结构调整。这块水比较深,相信很多人有变革的切肤之痛。
  • 推行DevOps文化:在公司层面推行DevOps文化,倡导开放、合作的组织文化,打破“部门墙”。
  • 推行持续交付:联合开发、qa、运维各个环节,打通代码提交、代码检查、单元测试、开发环境部署、测试环境部署、线上环境部署等流水线。 硬建设
  • 建设敏捷基础设施:这部分是整个Cloud Native的根基。这部分可以采纳的技术非常多,开源的、商用的都比较多。
  • 采用微服务架构:微服务架构是Cloud Native的一个核心要素。微服务包含几方面的内容: (1)有支撑微服务的平台:支撑微服务的可选技术框架比较多,每个公司都可以根据自身情况选择合适的技术框架,如kubernetes mesos openshift swarm等 (2)有符合微服务平台规范的APP:12因子规范。 (3)如何引入微服务:代码层解耦,前后端分离,编写不同Dockerfile。 (4)微服务核心技术点:版本控制的分布式配置中心,服务注册和发现,路由和LB,容错,API网关。

CNCF(云原生计算基金会)

  CNCF(Cloud Native Computing Foundation)于2015年7月成立,隶属于Linux基金会,初衷围绕“云原生”服务云计算,致力于维护和集成开源技术,支持编排容器化微服务架构应用,为了统一云计算接口和相关标准,2015 年 7 月隶属于 Linux 基金会的云原生计算基金会(CNCF)应运而生。谈到 CNCF,首先它是一个非营利组织,致力于通过技术优势和用户价值创造一套新的通用容器技术,推动本土云计算和服务的发展。CNCF 关注于容器如何管理而不是如何创建,因为如果没有一个成熟的平台去管理容器,那么大型企业无法真正放心接受并使用容器。概括的讲CNCF的使命包括以下三点:

  • 容器化包装。
  • 通过中心编排系统的动态资源管理。
  • 面向微服务。

每个CNCF项目都需要有个成熟度等级,申请成为CNCF项目的时候需要确定项目的成熟度级别。成熟度级别(Maturity Level)包括以下三种:

  • sandbox(初级)
  • incubating(孵化中)
  • graduated(毕业)