云原生理念:你掌握了多少?

发表时间: 2022-07-06 09:49

云原生定义

本篇文章只是提出一些和云原生时代相关的名词,不做过多阐述,后续再针对感兴趣点展开学习

CNCF-云原生计算基金会,2015年由谷歌牵头成立,充分利用云的分布式和弹性特点,Cloud Native云原生应用的三大特征

  • 容器化封装:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。
  • 动态管理:通过集中式的编排调度系统来动态的管理和调度。
  • 面向微服务:明确服务间的依赖,互相解耦。

云原生以容器、微服务、DevOps等技术为基础为代表的敏捷基础架构组成,用于帮助企业快速、持续、可靠、规模化的交付业务软件,云原生需要考虑是从开发-测试-运维一体化的需求。

云原生基于云计算为基础,而云计算核心三大部分包括Iaas、Paas、Saas,这三个概念拿做番茄炒蛋来比喻,Iaas则我们只租用厨房,然后自己完成各个烹饪过程包括先炒蛋,然后再炒番茄,然后再混着一起炒完成番茄炒蛋;Paas则是厨房已提供一些基础功能,比如我们给厨房番茄则会输出给我们炒好的番茄,给厨房鸡蛋输出给我们炒好鸡蛋,最后我们最后完成番茄炒蛋;Saas则是直接给我们番茄炒蛋类似点外卖;云原生生态丰富,发展极为迅速

容器化和服务编排

Docker

容器化最为典型代表就是Docker,Docker让开发工程师可以将他们的应用和依赖封装到一个可移植的容器中。Docker背后的想法是创建软件程序可移植的轻量容器,让其可以在任何安装了Docker的机器上运行,而不用关心底层操作系统。Docker可以解决虚拟机能够解决的问题,同时也能够解决虚拟机由于资源要求过高而无法解决的问题。其优势包括:

  • 隔离应用依赖
  • 创建应用镜像并进行复制
  • 创建容易分发的即启即用的应用
  • 允许实例简单、快速地扩展
  • 测试应用并随后销毁它们** **自动化运维工具可以降低环境搭建的复杂度,但仍然不能从根本上解决环境的问题。在看似稳定而成熟的场景下,使用Docker的好处越来越多。

Kubernetes服务编排

Kubernetes——让容器应用进入大规模工业生产。 Kubernetes是目前世界上关注度最高的开源项目,它是一个出色的容器编排系统。Kubernetes出身于互联网行业的巨头Google公司,它借鉴了由上百位工程师花费十多年时间打造Borg系统的理念,通过极其简易的安装,以及灵活的网络层对接方式,提供一站式的服务。** **Mesos则更善于构建一个可靠的平台,用以运行多任务关键工作负载,包括Docker容器、遗留应用程序(例如Java)和分布式数据服务(例如Spark、Kafka、Cassandra、Elastic)。Mesos采用两级调度的架构,开发人员可以很方便的结合公司业务场景自定制MesosFramework。

他们为云原生应用提供的强有力的编排和调度能力,它们是云平台上的分布式操作系统。在单机上运行容器,无法发挥它的最大效能,只有形成集群,才能最大程度发挥容器的良好隔离、资源分配与编排管理的优势,而对于容器的编排管理还有:Kubernetes、Mesos(资源调度管理)和基于Docker集群管理的Docker Swarm。Kubernetes成为了无可争议的最终赢家,作为容器编排首选

微服务

Spring Cloud传统微服务

这个我们最为熟悉,开发微服务Spring Boot框架工具的发布,微服务是当今软件开发趋势,容器化的出现和发展,一定程度上带动了微服务架构。架构演化从单体式应用到分布式,再从分布式架构到云原生架构,微服务在其中有着不可或缺的角色。微服务带给我们很多开发和部署上的灵活性和技术多样性,但是也增加了服务调用的性能开销、分布式事务、调试跟踪与服务治理等方面的难题。微服务我们有专题学习探讨Spring Cloud Alibaba微服务一站式解决方案,这里我们就不多说了

Service Mesh新一代微服务

除了Spring Cloud微服务解决方案还有新一代微服务模式Service Mesh即服务网格,

  • 屏蔽分布式系统通信的复杂性(负载均衡、服务发现、认证授权、监控追踪、流量控制等等),服务只用关注业务逻辑;
  • 真正的语言无关,服务可以用任何语言编写,只需和Service Mesh通信即可;而Spring Cloud是基于Java技术栈的微服务生态
  • 对应用透明,Service Mesh组件可以单独升级;

Service Mesh目前也面临一些挑战:

  • Service Mesh组件以代理模式计算并转发请求,一定程度上会降低通信系统性能,并增加系统资源开销;
  • Service Mesh组件接管了网络流量,因此服务的整体稳定性依赖于Service Mesh,同时额外引入的大量Service Mesh服务实例的运维和管理也是一个挑战;

DevOps

  • DevOps是一种思想和方法论,涵盖开发、测试、运维整个过程
  • 强调使用自动化方法来管理软件集成和变更
  • 可以使软件从构建、测试、发布更加快速和可靠的交付软件

向 DevOps 的过渡需要从文化理念和心态上的转变。简单来说,DevOps 的宗旨就是消除两个传统上孤立的团队(开发团队和运营团队)之间的壁垒。有些组织甚至没有独立的开发团队和运营团队,工程师可能身兼两职。利用 DevOps,这两个团队可以携手合作,共同提高开发人员的生产力,同时增强运营的可靠性。他们力求频繁沟通、提高效率,并改善客户服务的质量。他们能够完全掌控自己的服务,并且经常越过自己的既定角色或职能的传统工作范畴,思考最终用户的需求以及解决这些需求。 质保和安全团队也可以与这两个团队紧密协作。凡是采用 DevOps 模式的组织,无论组织结构如何,参与团队都会将整个开发和基础设施生命周期视为己任。

如果简单实战一个CICD持续集成持续交付,可以看下之前<Devops之CICD实战入门篇>的文章,较少一点CICD的工具,重点是理念和方法

Server Less

概念

无服务器计算是一种按需提供后端服务的方法。无服务器提供程序允许用户编写和部署代码,而不必担心底层基础结构。从无服务器供应商处获得后端服务的公司将根据其计算费用,而不必保留和支付固定数量的带宽或服务器数量,因为该服务是自动扩展的。请注意,尽管称为无服务器,但仍使用物理服务器,但开发人员无需了解它们。

真正的含义是开发者再也不用过多考虑服务器的问题,但是并不代表完全去除服务器,而是我们依靠第三方资源服务器后端,比如使用 Amazon Web Services(AWS) Lambda. 计算服务来执行代码,那么Serverless架构分为 Backend as a Service(BaaS) 和 Functions as a Service(FaaS) 两种技术,Serverless 它是由开发者实现的服务端逻辑运行在无状态的计算容器中,它是由事件触发,完全被第三方管理的。

BaaS后端即服务,它的应用架构由大量第三方云服务器和API组成的,使应用中关于服务器的逻辑和状态都由服务提供方来管理的。比如我们的典型的单页应用SPA和移动APP富客户端应用,前后端交互主要是以RestAPI调用为主。只需要调用服务提供方的API即可完成相应的功能,比如常见的身份验证,云端数据/文件存储,消息推送,应用数据分析等。

FaaS函数即服务。通常以云函数存在如国内也有阿里云和腾讯云的云函数,以后有时间我们实践下,开发者可以直接将服务业务逻辑代码部署,运行在第三方提供的无状态计算容器中,开发者只需要编写业务代码即可,无需关注服务器,并且代码的执行它是由事件触发的。其中AWS Lambda是目前最佳的FaaS实现之一。

Serverless的应用架构是将BaaS和FaaS组合在一起的应用,用户只需要关注应用的业务逻辑代码,编写函数为粒度将其运行在FaaS平台上,并且和BaaS第三方服务整合在一起,最后就搭建了一个完整的系统。整个系统过程中完全无需关注服务器。

Serverless 的技术特点

这里提到的技术特点的对象,特指 Serverless 产品中的计算产品,也就是云函数。云函数包含了如下的技术特性:

事件驱动**

  • 云函数的运行,是由事件驱动起来的,在有事件到来时,云函数会启动运行
  • Serverless 应用不会类似于原有的「监听 - 处理」类型的应用一直在线,而是按需启动
  • 事件的定义可以很丰富,一次 http 请求,一个文件上传,一次数据库条目修改,一条消息发送,都可以定义为事件

单事件处理**

  • 云函数由事件触发,而触发启动的一个云函数实例,一次仅处理一个事件
  • 无需在代码内考虑高并发高可靠性,代码可以专注于业务,开发更简单
  • 通过云函数实例的高并发能力,实现业务高并发

自动弹性伸缩

  • 由于云函数事件驱动及单事件处理的特性,云函数通过自动的伸缩来支持业务的高并发
  • 针对业务的实际事件或请求数,云函数自动弹性合适的处理实例来承载实际业务量
  • 在没有事件或请求时,无实例运行,不占用资源

无状态开发

  • 云函数运行时根据业务弹性,可能伸缩到 0,无法在运行环境中保存状态数据
  • 分布式应用开发中,均需要保持应用的无状态,以便于水平伸缩
  • 可以利用外部服务、产品,例如数据库或缓存,实现状态数据的保存

云原生时代运用

云计算已经进入了新的时期,目前上云已经不是应不应该,而是如何上云的问题。在这种情况下,云原生的概念也随之而生。云原生的架构或应用,是基于云而设计的,充分利用现代云计算平台所具备的弹性和分布式特性来实现应用架构。

而 Serverless 架构、产品、以及应用,均是完全依托于云而构建的,是典型且完全的云原生的架构、产品或应用。Serverless 产品所具备的产品特性、技术、费用等优势,将成为新一代云产品的发展方向;而基于 Serverless 架构推进完成开发的应用或架构,将充分享受到云时代带来的强大助力,使得云计算能真正成为业务的助推器。

****Serverless 的计算产品 —— 云函数,作为云虚拟机、容器技术之后的下一代计算形态,将引来云计算中新的热潮。****围绕着云函数而建设的产品能力、工具、生态、以及应用开发,也将引来新的一轮发展。随着无服务器的产品和生态走向成熟,将逐步承载起企业核心业务。在这个持续向前高速发展的过程中,腾讯云的云函数,将作为腾讯云云原生的重点发力领域,跟随客户需求、行业发展、技术发展,为用户提供完整的 Serverless 解决方案。

Paas平台

Paas平台即(Platform-as-a-Service:平台即服务),把应用服务的运行和开发环境作为一种服务提供的商业模式。指一组基于云的服务,可帮助企业用户和开发人员以本地部署解决方案无法企及的速度创建应用程序。由于 PaaS 是基于云的服务,所以没有安装和维护服务器、修补、升级、身份验证等烦恼。用户只需考虑如何创建最佳用户体验。PaaS 还会提供更多丰富的服务,如工作流和设计工具以及多个 API,帮助企业用户和开发人员在平台上打造出让用户满意的应用程序。 商业模式一般分为两种,一种是按量付费,一种是一次性付费

云原生应用PaaS平台建设实践—SOFAStack CAFE

低代码平台

定义

低代码开发,是指用少量代码(Low Code)快速生成应用程序。通常提供可视化设计工具快速搭建界面、设计数据模型、创建业务逻辑和工作流。 低代码开发是一种用于应用程序开发的模块化方法,可有效减少应用程序的开发时间。它使用可重用的、基于组件的体系结构进行开发,从而加快了应用程序的开发和交付周期。在构建具有可重用组件的应用程序时,开发人员将有机会在不同的应用程序中使用现有组件,而不仅仅是原始开发应用程序,这里的组件是一个可重用的对象,它将一段代码转换为模块,这些组件可用于具有类似功能的不同应用程序中。通过将这些模块添加到新的应用程序中,开发人员可以避免针对类似的通用功能进行重复编码。这种灵活性极大地减少了测试和开发的工作量和时间。

低代码平台常见功能

  • 拖放界面

**  每个已建立的低代码平台都具有拖放功能。它是使开发过程轻松进行的最有用和最重要的功能之一。市民开发人员和专业开发人员都可以从创建应用程序时提供的便捷拖放功能中受益。**

  • 开箱即用的功能

**  领先的低代码开发平台提供了即用型功能,从而无需从头开始为应用构建核心模块。例如,某些低代码平台包括用于数据管理的模块或用于面向客户的应用程序的模块,例如服务管理或销售流程管理。**

  • 视觉建模工具

**  使用可视化方法和模型创建应用程序比使用代码进行开发要快。具有可视化建模功能的低代码平台使用内置组件以任何人从没有技术技能的常规企业用户到专业开发人员都以可读的形式表示任何信息。**

  • 可重用性

**  低代码开发平台的即用型功能的一个主要方面是为应用程序使用预配置的模块和功能。这些模块具有几个应用程序所需的通用核心功能,并且可以复用以更快地开发不同的解决方案。能够重用预先构建或新开发的模块、插件,以更快地开发必要的应用程序。**

  • 安全

**  不管低代码工具的功能和用户友好程度如何,如果它不安全,那么它都不是完美的解决方案。在开始使用低代码开发平台之前,请确保其具有适当的安全性,以保护正在构建的应用程序和整个平台。**

  • 跨平台可访问性

**  多设备兼容性是低代码平台的一项重要功能。除了可以在运行主要操作系统的任何设备上使用低代码平台之外,它的跨平台兼容性还允许用户构建还可以在所有核心平台和设备上运行的应用程序。**

  • 报告与监控

**  使用低代码开发的应用可以监视工作流程,以跟踪其有效性。**

  • 应用程序生命周期管理

**  低代码工具简化了软件开发生命周期中的多个阶段,例如调试,测试和部署。它们使用户可以访问有关已创建的应用程序及其开发信息,并使其能够还原到以前的版本,以便更好地进行应用程序生命周期管理。**

  • 可扩展性

**  低代码系统应具有可扩展性。它应该能够构建新的应用程序,以应付随着业务增长而增长的用户。低代码开发平台的出现,将一些通用的功能实现代码封装成组件,开发应用程序的时候无需编写重复的代码只需要调用组件就能够完成应用程序的开发工作。**

Red Hat OpenShift

构建基于PaaS的DevOps平台 **红帽® OpenShift® 是一个企业就绪型 Kubernetes 容器平台,可以实现全堆栈自动化运维,以管理混合云、多云和边缘部署。红帽 OpenShift 已进行过专门优化,可以有效提高开发人员的生产力并推动创新。 ** 红帽 OpenShift 是领先的企业 Kubernetes 平台,专为*开放混合云策略构建。凭借红帽 OpenShift 的全堆栈自动化运维、跨所有环境的一致体验以及面向开发人员的自助服务置备,团队可以紧密携手合作,更有效地从构思想法过渡到生产阶段。 红帽 OpenShift 既可作为领先公共云中的全托管式云服务提供,也可作为自我管理软件提供给需要更高定制化程度的企业。


原文来自IT小神博客 http://www.itxiaoshen.cn