写点什么

以 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:0012140
用户头像

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

关注

评论

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

LeetCode题解:111. 二叉树的最小深度,递归,JavaScript,详细注释

Lee Chen

大前端

记一次MySQL日期范围查询优化

李印

MySQL SQL优化

java安全编码指南之:lock和同步的正确使用

程序那些事

java安全编码 java安全 java安全编码指南 java编码

20年开源老司机手把手教你玩开源——openEuler入门指南

openEuler

Linux 开源 系统操作

架构师训练营第1期第四周作业二

道长

极客大学架构师训练营

内存条的讲解

亚兰—硅的传奇official

原创 内存 硬件 计算机 哔哩哔哩

讲一讲我所认为的「人生三最」,你或许能够参悟到什么

非著名程序员

程序员 个人成长 时间管理 精力管理

架构师训练营第三周作业

Wee权

JDK 中的栈竟然是这样实现的?

王磊

Java 数据结构和算法

用NOSql给高并发系统加速

架构师修行之路

nosql redis 分布式 微服务

产品分析

时间是一个人最好的证明

产品经理 产品设计

建筑行业区块链应用场景是怎样的

CECBC

区块链 行业资讯

架构1期第四周作业1-大型互联网系统技术梳理

道长

极客大学架构师训练营

关于国际化语言 Intl

西贝

Java 大前端 国际化 格式化

古北水镇的夜

张晓楠

生活 摄影

典型的大型互联网应用系统的技术方案和手段

从联想ThinkStation工作站,窥见工具文明的新纪元

脑极体

2020第十三届(南京)智慧城市技术与应用产品展览会

InfoQ_caf7dbb9aa8a

MySQL事务隔离级别

长沙造纸农

MySQL 事务隔离级别 mysql事务 事务 MySQL 运维

快讯2020第十三届亚洲国际物联网展览会-南京站

InfoQ_caf7dbb9aa8a

坚持写技术博客一年能有多少收获!

小傅哥

Java 面试 架构师 编程经验 技术博客

Spring Cloud 微服务实践(7) - 日志

xiaoboey

kafka 微服务 Spring Cloud 日志 spring cloud stream

做好分库分表其实很难之二

架构师修行之路

微服务 分库分表

“海外同步优惠”与“中国专享折扣”十大必败榜抢先放送

爱极客侠

手把手教你AspNetCore WebApi:Serilog(日志)

AI代笔

ASP.NET Core web api serilog

LeetCode题解:104. 二叉树的最大深度,递归,JavaScript,详细注释

Lee Chen

大前端 LeetCode

全屋智能2020第十三届(南京)国际智能家居展览会

InfoQ_caf7dbb9aa8a

区块链教育 丨 首批区块链专业新生正式入学

CECBC

区块链技术 区块链教育

架构师作业第三周学习总结

Wee权

对不起,学会这些 Linux 知识后,我有点飘

苹果看辽宁体育

Linux 后端 操作系统 计算机

架构师训练营第 1 期 - 第四周学习总结

Anyou Liu

极客大学架构师训练营

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