Hello, CloudNative

Posted DevOps SIG

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hello, CloudNative相关的知识,希望对你有一定的参考价值。

前言

我曾经在通信领域做过开发,非常喜欢通信领域的一个术语LTE(Long Term Evolution,长期演进),演进这个词很有内涵和深意,它意味着一种持续、长期的变化,但是变化不是断崖式的,而是渐进式的,每次的"新"必然由"旧"积淀而来,CloudNative也是符合演进这个规则的,一定是有基础的,并不是凭空出来的。

CloudNative的由来

CloudNative 这个术语是由Pivotal公司的Matt Stine在2013年首次提出的,Matt Stine是一名有着多年IT经验的老兵,借着多年丰富的架构和咨询经验,他提出了这个概念,暂且不说他最开始是怎么定义的(在 "Migrating to Cloud-Native Application Architectures" 这本书中有写)。先自我解读一下, CloudNative 是由 CloudNative 两个词组成的, Cloud 就是常说的云计算,也是现在亚马逊,微软,谷歌,阿里巴巴, IBM等大公司着力布局的一个行业。Native 原生之意,即 生于斯,长于斯,两个单词合起来也就是说,生于云,长于云,由于IT行业的价值都体现在应用程序,所以从字面意思看,CloudNative就是关于生于云,长于云的应用程序的一个概念。

Cloud与CloudNative的关系

IT行业围绕基础设施和应用程序而展开: 基础设施层提供资源(CPU,内存,网络,存储),应用程序吸收来自基础设施资源所提供的营养,为终端用户提供相应的价值。基础设施能够提供的能力决定了应用程序发展的能力。

在单体应用时代,受限于基础设施资源提供的方式,分布式特点需要在应用程序的设计与开发中加以考虑,这意味着应用程序在考虑业务功能的时候还要照顾非业务功能(比如分布式),很多时候需要在两者之间找个平衡点。

在云计算时代,云平台天然具有弹性伸缩,分布式的特点,这时候应用程序就能够自然享受这种福利,将主要精力放在应用程序业务功能的开发上。

在CloudNative时代,服务发现,负载均衡,服务熔断等功能由基础设施来提供,此时应用程序就可以更进一步的关注在业务本身。

从整体来看,不是说非业务功能丢失了,而是非业务功能"下沉"到了基础设施层(也可以说是基础设施提供了非业务功能的代码),这便是一种演进的方式,从这种演进方式可以看到,双方的发展逐渐"解耦",基础设施的强大,也使可用性高,稳定性好,维护性强的应用程序成为了现实。

由此便可以很容易理解Cloud和CloudNative的关系了:云计算是对于计算机资源的一种重新计算与提供方式,一般主要包括 计算,网络,存储,其中 计算最基础,网络最复杂,存储最重要。云计算更多关注于基础设施层,Cloud将基础设施所涉及的计算、网络、存储资源提供给需要这些资源的应用程序;CloudNative 恰恰关注的是应用程序,关注应用程序的设计,部署,交付,功能,性能等。两者关注点不一样,但却相互依赖。云计算有着 按需所取、弹性伸缩、分布式等特点,CloudNative就要设计开发出具有上述特征的应用程序,真正分享云计算带来的红利,同时将云计算提供的资源的利用率最大化。

CloudNative 包含的内容

CloudNative 在2013年提出,但是我个人觉得2015年可以定义为 CloudNative 的元年,因为在这一年CNCF(Cloud Native Computing Foundation)基金成立,而且Matt Stine在他的书中定义了关于 CloudNative 的几个特点:

  • 12-factor applications(符合12要素之应用)

  • microservices(微服务)

  • self-service agile infrastructure(自敏捷基础设施)

  • API-based collaboration(API协同)

  • anti-fragility(反脆弱)

在2017年,他又做了些微改变

  • modularity(模块化)

  • observability(可观测性)

  • deployability(可部署性)

  • testability(可测性)

  • replaceability(可替换性)

  • handleability(可操作性)

在这过程中CNCF也有过自己的定义云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。到这儿大家就发现了,一个概念的提出,总有一个仁者见仁,智者见智的过程(这个和DevOps的认知过程有点像),但是最终 Pivotal 公司官方提供了一个大家相对而言都比较认可的定义,CloudNative 是一种充分利用云计算交付模式来构建和运行应用程序的一种方式方法,而用这种方法开发的应用程序通常具有以下四个特征:

  • DevOps

  • Continuous Delivery

  • Microservicers

  • Containers

Hello, CloudNative

1) DevOps

2) Continuous Delivery

持续交付。指企业和组织能够在Agile的项目管理模式下,进行快速迭代的开发,尔后将应用快速,持续,自动地部署到生产环境上,并且能够源源不断的从终端用户那儿得到反馈,从而为用户交付更有价值的产品。其实在DevOps中也有这个概念,在CloudNative中将它拿出来再次强调,说明CloudNative是真的关注于应用程序本身,提高应用程序的交付效能。

3) Microservices

微服务。是一种软件架构模式,相对于以前的单体应用架构而言。指将应用程序按照微服务的拆分规则拆分成多个微小的应用程序,每个微小的应用程序都是可以独立提供某种服务的,服务与服务之间通过HTTP API的方式来进行信息交互,单个服务可以单独进行部署、升级、扩容等。这种架构方式增加了应用程序的灵活性,可维护性。而且很重要的一点是,在这种模式下,异构语言的开发将变得可行,每个微服务可能采用不同的编程语言来实现,这些特点在单体应用中是想都不敢想的事情。

4) Containers

容器化。应用已经非常成熟的容器技术,让应用程序运行在容器内。方便移植的同时,还能够用这个方法来确保开发环境,测试环境,生产环境的一致性,避免环境不一致导致的失败。

CloudNative 技术栈

  • 容器技术

这里面包含以 docker 为代表的容器相关技术和以 kubernetes 为代表的容器编排和调度技术,近些年 kubernetes 在容器编排领域的快速发展,现已成一枝独秀之势,Kubernetes是容器编排领域的Linux,而且kubernetes eco-system 正在快速形成。

  • Service Mesh

服务网格为以云平台为基础设施,以微服务为架构的应用很方便的提供服务发现,服务治理,负载均衡,熔断,降级等等功能,目前主流的是Istio和Linkerd,由于Istio的出生很好(由Google,IBM,Lyft联合开发并力推),现在发展势头很好。(从这儿都可以看出: 出身好,真的可以为所欲为)

  • Serverless

Serverless概念在2006年由亚马逊提出,并推出了自己的产品——Lambda。Serverless是云计算极致弹性的一种方式,也被称为无服务器云计算,能够最大限度的利用云计算资源。其中Google,IBM都在致力于Knative的开发与推进。

CloudNative 的挑战

  • 思维模式的转变

ClouNative对于IT行业的改变是全方位的,从架构模式(单体模式--微服务--Serverless)、开发模式(面向过程--面向对象--面向服务(MOA)--面向Kubernetes)、运维模式(传统运维--DevOps--No Ops);项目管理模式(Waterfall--Agile)都在发生变化。新事物会带来思维模式的改变,只有及时改变思维模式才能将新事物应用自如。

  • 新技术的应用

围绕 Cloud & CloudNative 出现了海量的新技术,docker,kubernetes,serverless等等,新技术的选择是困难的,但是技术的选择有一条准则:没有最好的,只有合适的。选择适合自己项目的,让项目变得稳定,有价值才是最重要的。

  • 组织架构的变化

CloudNative 对软件的全生命周期(管理,设计,开发,运维等)都有着改变,多方位,多层次的改变会对组织架构产生影响,组织架构的改变会是组织或者企业向CloudNative转变的重要一环。

几点思考

1) 拥抱开源

软件改变世界,开源改变软件,以开源软件为基础开发商用产品的商业模式正在形成,拥抱开源能够加速产品的开发。

2) 快

"快"字是IT行业(全社会也是如此)的主旋律,哪个组织或者企业能够更快的感知到市场的变化,并很快的作出响应,就会获得收益,而这就迫使应用程序要能够尽可能的缩短发布周期,提高发布频率,并且整个过程要可靠性要高,稳定性要好。

3) 专而灵"专"指专业人做专业事: 基础设施与应用程序在演进的过程中逐渐解耦,基础设施提供强大的能力,而应用程序只管关注于业务本身;"灵": 微服务开发的应用程序能够独立部署,升级,灵活性增强了。

4) Stay hungry Stay foolish

行业发展之快,概念层出不穷,技术推陈出新,应该保持清醒的头脑,跳出舒适区,抱着 stay hungry stay foolish 的态度跟随这行业演进的步伐。

5) 善于思考,勤于思考

CloudNative 带给我们更多的是思考,IT的发展方向;企业、组织、个人在IT行业角色的定位以及能为整个行业以及社会带来什么样有价值的东西。

如果感兴趣CloudNative DevSecOps技术或者觉得本文观点有误,欢迎随时通过下面的二维码沟通交流。


以上是关于Hello, CloudNative的主要内容,如果未能解决你的问题,请参考以下文章

sublime text3 添加新片段

如何从URL获取片段标识符(hash#之后的值)?

sublime代码片段

sublime text3 增加代码片段(snipper)

[linux][c/c++]代码片段02

指针练习:输出Hello