快手、孩子王、华为等专家分享大模型在电商运营、母婴消费、翻译等行业场景的实际应用 了解详情
写点什么

以 CNCF 的方式实现云原生意味着什么?

  • 2019-04-10
  • 本文字数:2685 字

    阅读完需:约 9 分钟

以 CNCF 的方式实现云原生意味着什么?

人们在讨论数字化转型现代应用程序开发时,其中经常出现的术语之一是云原生(Cloud-Native)。但是,云原生究竟意味着什么呢?本文将带领读者深入了解云原生的方法,以及用 CNCF 方式实现云原生的方法。


Michael Dell 曾经说过:“云不是一个地方,而是一种做 IT 的方式。”(the cloud isn’t a place, it’s a way of doing IT)。他说得对,云原生也是如此。


云原生是一种构建和运行应用程序的方法,利用了云计算交付模型的优势。云原生是关于如何创建和部署应用程序,而与在何处创建与部署无关。它适用于公有云私有云


云原生架构充分利用按需交付、全球部署、弹性和更高级别的服务。它们极大提高了开发人员的工作效率、业务灵活性、可扩展性、可用性、利用率和成本节约。

CNCF (云原生计算基金会)

Google 多年来一直使用容器,他们领导了 Kubernetes 项目,这是一个领先的容器编排平台。但单凭它们并不能真正改变现代应用领域的广阔前景。因此,行业领袖需要齐心协力,解决现代方法面临的主要问题。为了实现这一更广阔的愿景,Google 将 Kubernetes 捐赠给了云原生基金会,此举促成了 2015 年 CNCF 的诞生



https://www.cncf.io


云原生计算基金会(Cloud native computing foundation)是在 Linux 基金会中创建的,用于构建和管理现代应用程序开发的平台和解决方案。它确实是实现现代应用程序开发的惊人项目的基地。CNCF 将云原生定义为在“现代动态环境”中运行的“可扩展应用程序”,这些应用程序使用容器、微服务和声明性 API 等技术。 Kubernetes 是世界上最流行的容器编排平台,也是第一个 CNCF 项目。

实现方法

CNCF 创建了一个轨迹图(trail map),以便更好地理解云原生方法的概念。在本文中,我们将基于这种情况进行讨论。较新的版本可以在 https://landscape.cncf.io/ 获得。


云原生轨迹图是 CNCF 推荐的了解云原生图景的途径。但请注意,它并没有定义我们可以实现数字化转型的特定路径,而是要根据你的业务场景,你可以遵循许多可能的轨迹来与此概念保持一致。这只是一条简化云原生之旅的一条途径。




让我们讨论这个轨迹图中定义的步骤。

1. 容器化


如果不对应用程序进行容器化,那么就无法实现云原生。至于应用程序的大小和类型,都无关紧要。容器是一个标准的软件单元,它将代码及其所有依赖关系打包起来, 这样应用程序就可以从一个计算环境快速地、可靠地运行到另一个计算环境。Docker 是容器化的首选平台。Docker 容器镜像是一个轻量级、独立、可执行的软件包,包含运行应用程序所需的所有内容。

2. CI/CD


设置持续集成 / 持续交付 (Continuous Integration/Continuous Delivery,缩写为 CI/CD),这样源代码的更改会自动导致构建、测试并部署一个新容器,并最终(可能)部署到生产环境中。接下来我们需要设置的是自动部署、回滚和测试。CI/CD 有很多平台:Jenkins、VSTS、Azure DevOps、TeamCity、JFRog、Spinnaker 等等。

3. 编排器


容器编排主要就是管理容器的生命周期,尤其是在大型动态环境中,软件团队使用容器编排来控制和自动化许多任务。Kubernetes 是市场领先的编排解决方案。还有其他编排器,如 Docker swarm、Mesos 等。Helm Charts 能够帮助你定义、安装和升级最复杂的 Kubernetes 应用程序。

4. 可观察性分析

Kubernetes 并不提供日志数据的本机存储解决方案,但你可以将许多现有的日志解决方案集成到 Kubernetes 集群中。Kubernetes 提供了有关应用程序在这些级别上的资源使用情况的详细信息。通过这些信息你可以评估应用程序的性能,以及可以消除瓶颈的位置,从而提升整体性能。



选择用于监控、记录和跟踪的解决方案。考虑 CNCF 项目 Prometheus 用于监控、Fluntd 用于日志记录和 Jaeger 用于 TracingFor 跟踪,寻找与 Jaeger 类似的 OpenTracing 兼容实现。

5. 服务网格

服务网格,顾名思义就是连接服务、发现服务、健康检查、路由,并用于监控来自互联网的入口。服务网格通常还具有更为复杂的操作要求,如 A/B 测试、金丝雀部署(canary rollouts)、速率限制、访问控制和端到端身份验证。



Istio 提供了对整个服务网格的行为洞察和操作控制,提供了完成的解决方案以满足微服务应用程序的各种需求。CoreDNS 是一种快速灵活的工具,可用于发现服务。Envoy Linkerd 都支持服务网络体系结构。

6. 网络和策略

启用更灵活的网络层非常重要。要启用更灵活的网络,请使用符合 CNI 的网络项目,如 Calico、Flannel 或 Weave Net。Open Policy Agent(OPA)是一种通用策略引擎,其使用范围从授权和准入控制到数据过滤等。

7. 分布式数据库

分布式数据库是一种数据库,其中并非所有存储设备都连接到公共处理器。它可以是存储在同一物理位置的多台计算机中,也可以是分散在彼此互联的计算机网络上。



当你需要比单个数据库更大的弹性和可扩展性时,Vitess 是一个很好的选择,可以通过分片来大规模运行 MySQL。Rook 是一个存储编排器,它将一组不同的存储解决方案集成到 Kubernetes 中。etcd 提供了一种跨机器集群存储数据的可靠方法。


8. 消息传送


如果需要比 JSON-REST 更高的性能时,请考虑使用 gRPC 或 NATS。gRPC 是一个通用的 RPC 框架。NATS 是一种多模式消息传递系统,包括请求 / 回复、发布 / 订阅和负载平衡队列。它也适用于并处理很多更新的和使用案例,比如物联网。

9. 容器注册表与运行时

容器注册表是团队管理 Docker 镜像、执行漏洞分析以及决定谁可以通过细粒度访问控制放什么那些内容的单一位置。在市场 docker 中心有:Azure 容器注册表、Harbor、Nexus 注册表、Amazon 弹性容器注册表,此外还有很多容器注册表。



容器运行时 containerd 可用作 Linux 和 Windows 的守护进程。它管理主机系统的完整容器生命周期,从镜像传输和存储到容器执行和监控,再到低级存储、网络附件等等。

10. 软件分发

如果你需要进行安全的软件分发,请评估 Notary,实现 The Update Framework(更新框架,TUF)。


TUF 提供了一个框架(一组库、文件格式和使用程序),可用于保护新的和现有的软件更新系统。该框架应该能够使应用程序免受软件更新过程中所有已知攻击的影响。它不涉及公开关于正在更新的软件(以及客户机可能正在运行的软件)或更新内容的信息。




“云原生应用程序是专门为云基础架构上运行而设计的,因此就有了‘原生’这一说法。它们之所以越来越受欢迎,是因为它们带来了好处,包括:高可用性和响应性,以及通过自主和自修复能力(如针对故障进行设计)实现的强大恢复能力和灵活性。”

CNCF 使最先进的模式民主化,让每个人都能够接触到这些创新。




原文链接:


https://medium.com/@sonujose993/what-it-means-to-be-cloud-native-approach-the-cncf-way-9e8ab99d4923


2019-04-10 08:0012085
用户头像

发布了 375 篇内容, 共 184.3 次阅读, 收获喜欢 944 次。

关注

评论

发布
暂无评论
发现更多内容

非一线工程管理者的一对一沟通

俞凡

领导力 管理

啃透这500页高并发笔记薪资涨了20K,并连收天猫,京东等5个Offer

钟奕礼

Java 程序员 java面试 java 编程

分库分表经典15连问

架构师之道

Java MySQL 编程

分布式锁主动续期的入门级实现-自省 | 简约而不简单

小小怪下士

Java 程序员 分布式 分布式锁

工赋开发者社区 | 架构瓶颈原则:用注意力probe估计神经网络组件提供多少句法信息

工赋开发者社区

Compose把Text组件玩出新高度

Halifax

android 前端 kotlin Compose android jetpack

关于ChatGPT的一切;CUDA入门之矩阵乘;PyTorch 2.0发布|AI系统前沿动态

OneFlow

人工智能 深度学习 AI

裸辞美团花两月吃透这Java岗798道真题解析,定级阿里P7

钟奕礼

Java 程序员 java面试 java编程

Hadoop如何保证自己的江湖地位?Yarn功不可没

JAVA旭阳

Java 大数据

聊聊最适合程序员的一些画图工具?

程序员小毕

程序员 程序人生 后端 架构师 画图工具

字节大神熬夜整理MyBatis+Redis+Kafka+spring源码与实战技术齐飞

钟奕礼

Java java编程 程序员、

通过假设地图进行产品待办列表排序

Bruce Talk

Agile User Story Product Owner 敏捷、

微信朋友圈高性能复杂度

闲人Eric

架构实战营

Alibaba官方「SpringCloudAlibaba全彩学习手册」限时开源!

架构师之道

Java 架构 面试 spring cloud stream

我在哪里可以获得CleanMyMac2023许可证

茶色酒

CleanMyMac2023

面试官:断网了,还能 ping 通 127.0.0.1 吗?

Java全栈架构师

程序员 面试 程序人生 后端 计算机网络

MacBook免费的电脑管家CleanMyMac2023

茶色酒

CleanMyMac CleanMyMac X

从德鲁克管理实践看服务化架构

agnostic

微服务

基于 docker-compose 部署单机版本 ELK

忙着长大#

ELK

工赋开发者社区 | 65页数字化工厂规划与建设详细方案 !

工赋开发者社区

2022-12-10:给你一个由小写字母组成的字符串 s ,和一个整数 k 如果满足下述条件,则可以将字符串 t 视作是 理想字符串 : t 是字符串 s 的一个子序列。 t 中每两个 相邻 字母在字

福大大架构师每日一题

算法 rust 福大大

GBase 8s 之数据存储空间划分

@下一站

数据库优化 国产数据库 12月日更 12月月更

元宇宙之数字孪生 孪数科技-企业元宇宙引领者

Jerry Tan

TechSmith Camtasia Studio2023免费的屏幕录像视频编辑软件

茶色酒

Camtasia Studio2023

Mac内存清理工具CleanMyMac2023

茶色酒

CleanMyMacX CleanMyMac X CleanMyMac X2023

别研究 ChatGPT 了,来看个国产好项目!

Java永远的神

程序员 程序人生 后端 架构师 开源项目

小令案例 | 互联网消费分期产品引入令牌云服务,大幅提升进件转化

令牌云数字身份

身份认证 分布式数字身份 成功案例

HarmonyOS玩转ArkUI动效 - 水母动画

Halifax

前端 动画 HarmonyOS OpenHarmony arkui

易观分析苏筱芮:数字科技创新场景应用为王,驱动金融与实体经济同频发展

易观分析

金融

Verilog 编译指令

芯动大师

Verilog语法 Verilog编译指令

不愧是阿里资深架构师,这本“分布式架构笔记”写得如此透彻明了

钟奕礼

Java 程序员 java面试 java编程

以 CNCF 的方式实现云原生意味着什么?_云原生_Sonu Jose_InfoQ精选文章