概述
云原生介绍
所谓云原生,它不是一个产品,而是一套技术体系和一套方法论,而数字化转型是思想先行,从内到外的整体变革。更确切地说,它是一种文化,更是一种潮流,是云计算的一个必然导向。
云原生概念
云原生(Cloud Native)的概念,由来自Pivotal的MattStine于2013年首次提出,被一直延续使用至今。
这个概念是Matt Stine根据其多年的架构和咨询经验总结出来的一个思想集合,并得到了社区的不断完善,内容非常多,包括DevOps、持续交付(Continuous Delivery)、微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)和12要素(The Twelve-Factor App)等几大主题,不但包括根据业务能力对公司进行文化、组织架构的重组与建设,也包括方法论与原则,还有具体的操作工具。采用基于云原生的技术和管理方法,可以更好地把业务生于“云”或迁移到云平台,从而享受“云”的高效和持续的服务能力。
2018年CNCF重定义:云原生技术有利于各组织在公有云、 私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、 不可变基础设施和声明式API。结合可靠的自动化手段,云原生技术可进行频繁并可预测的变更。
云原生设计理念
云原生系统的设计理念如下:
- 面向分布式设计(Distribution):容器、微服务、API驱动的开发;
- 面向配置设计(Configuration):一个镜像,多个环境配置;
- 面向韧性设计(Resistancy):故障容忍和自愈;
- 面向弹性设计(Elasticity):弹性扩展和对环境变化(负载)做出响应;
- 面向交付设计(Delivery):自动拉起,缩短交付时间;
- 面向性能设计(Performance):响应式,并发和资源高效利用;
- 面向自动化设计(Automation):自动化的 DevOps;
- 面向诊断性设计(Diagnosability):集群级别的日志、metric 和追踪;
- 面向安全性设计(Security):安全端点、API Gateway、端到端加密;
图为其公布的Cloud Native Landscape,给出了云原生生态的参考体系。
云原生四要素
云原生的四要素:持续交付、DevOps、微服务、容器
持续交付——缩小开发者认知,灵活开发方向
微服务——内聚更强,更加敏捷
容器技术——使资源调度、微服务更容易
DevOps——以终为始,运维合一
云原生的DevOps、容器技术、持续交付、微服务都是云原生不可或缺的一部分,需要以全局地眼光看待问题,脱离任何一个元素,对于企业来说都是“管中窥豹”、“一叶障目”,只有加以整合才能见到云原生的全局风貌。
面对业态各异的业务上云以及碎片化的物联网解决方案部署,利用云原生思维和模式,构建基于云原生的物联网平台以及解决方案,势必将加速企业,甚至整个社会的数字化转型。
云原生应用的关键属性
1、打包为轻量级容器:云原生应用程序是打包为轻量级容器的独立自治服务的集合。与虚拟机不同,容器可以快速扩缩容。将扩展单元转移到容器,能够优化基础架构利用率。
2、使用最佳语言和框架开发:云原生应用程序的每项服务都是使用最适合该功能的语言和框架开发的。云原生应用程序是多语言的,服务会使用各种不同的语言、运行时和框架。例如,开发人员可以构建基于在Node.js中开发的WebSockets的实时流服务,同时选择Python和Flask来暴露API。开发微服务的细粒度方法使它们能够为特定任务选择最佳语言和框架。
3、设计为松耦合的微服务:属于同一应用程序的服务通过应用程序运行时来发现彼此。它们独立于其他服务而存在。正确集成时,弹性基础架构和应用程序架构可以高效地、以高性能来进行扩展。
松耦合的服务让开发人员可以在处理每个服务时都能够独立于其他服务来工作。通过这种分离,开发人员可以专注于每项服务的核心功能,以提供细粒度的功能。这种方法可以实现整个应用程序的有效生命周期管理,因为每个服务都是独立维护的,并且拥有明确的所有权。
4、以API为中心进行交互和协作:云原生服务使用轻量级API,这些API基于REST、gRPC或NATS等协议。REST通常被用作通过HTTP公开API的最低公分母。为了提高性能,gRPC通常用于服务之间的内部通信。NATS具有发布-订阅功能,可在应用程序内实现异步通信。
5、在架构中将无状态和有状态服务清晰分离:持久耐用的服务通常遵循不同的模式,以确保更高的可用性和弹性。无状态服务和有状态服务是彼此独立存在的。存储会影响容器的使用。我们必须越来越多地在有状态、无状态、微存储环境(这一点有些人可能觉得有争议)等不同语境下考虑持久性这一因素。
6、与服务器和操作系统依赖关系隔离:云原生应用程序与任何特定操作系统或单个计算机没有关联。它们在更高的抽象级别上运行。唯一的例外是微服务需要某些功能,包括固态驱动器(SSD)和图形处理单元(GPU),这些功能可能由一部分机器专门提供。
7、部署在自服务的弹性云基础架构上:云原生应用程序部署在虚拟的、共享的和弹性的基础架构上。它们可以与底层基础架构保持一致,以动态增长和缩小——根据不同的负载来自我调节。
8、通过敏捷DevOps流程进行管理:云原生应用程序的每项服务都会经历一个独立的生命周期,通过敏捷的DevOps流程进行管理。多个持续集成/持续交付(CI / CD)流水线可以协同工作以部署和管理云原生应用程序。
9、自动化功能:云原生应用程序可以高度自动化。它们与Infrastructure as Code的概念相得益彰。企业需要一定程度的自动化来管理大型和复杂的应用程序。
10、定义的、策略驱动的资源分配:最后,云原生应用程序与通过一组策略定义的治理模型一致。它们遵循CPU和存储配额以及将资源分配给服务的网络策略等策略。例如,在企业方案中,中央IT可以定义策略来为每个部门分配资源。每个部门的开发人员和DevOps团队都拥有对其资源共享的完全访问权和所有权。
“云原生”应用价值
从CNCF的定义来看,采用基于云原生的技术和管理方法,将更好地把业务生于“云”或迁移到云平台,从而享受“云”的高效和持续服务能力。
1)快速迭代
利用云原生应用程序开发,意味着使用敏捷与可扩展的组件,如以Kubernetes为代表的容器来提供离散和可重用的功能,这些功能以良好描述的方式集成,甚至跨越多云等技术边界,这使得交付团队可以使用重复的自动化和编排来快速迭代。
2)自动部署
云原生方法远优于传统的面向虚拟化的业务流程,传统方法需要投入大量的精力来构建开发环境,以及软件交付过程中的其他不同环境。而云原生架构具备自动化和组合功能,并且依赖于可靠、经过验证和审核的已知良好流程的基础,交付十分敏捷,而不再需要人工干预重复执行。
3)独立高效
云原生带来了微服务化架构,一个微服务基本是一个能独立发布的应用服务,因此可以作为独立组件升级、灰度或复用等,对整个大应用的影响也较小,每个服务可以由专门的组织来单独完成,依赖方只要定好输入和输出口即可完全开发、甚至整个团队的组织架构也会更精简,因此沟通成本低、效率高。
云原生于中国市场
在中国市场,云原生仍然是一个较为新的概念,多数中国企业在云原生的专业知识、部署开发以及管理应用的能力仍不成熟。令人欣慰的是,在云原生道路上探索公有云厂商们已经做出了许多的努力,诸如AWS的ECS产品、用友云的PaaS基础平台等容器服务已经被许多用户所认可,而云管理服务商们也已充分意识到了云原生将是企业数字化转型的加速器。作为数字化转型的引领者,云管理服务商们正努力成为云原生的先行者,不断尝试并挖掘云原生的精髓所在,突破更多的云原生部署壁垒,以帮助企业快速构建云原生应用,实现微服务架构改造以及DevOps落地。
最后
以上就是舒服柚子为你收集整理的云原生(Cloud Native)概念与实践的全部内容,希望文章能够帮你解决云原生(Cloud Native)概念与实践所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复