写点什么

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

发布了 376 篇内容, 共 211.4 次阅读, 收获喜欢 949 次。

关注

评论

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

Spring Boot 3.0 正式发布,这份升级指南必须码住

程序知音

Java spring 微服务 springboot 后端技术

记一次TiDB数据库Insert语句执行报错的处理过程

TiDB 社区干货传送门

自制操作系统日记(8):变量显示

操作系统

不会还有人不知道,面试靠这1700道java面试八股文题库就能杀进大厂吧

程序知音

Java java面试 java架构 后端技术 Java面试八股文

linux高可用软件有哪些?重点推荐哪款?

行云管家

高可用 双机热备

Python太难懂?火山引擎数智平台这款产品可以了解一下

字节跳动数据平台

Python 大数据 数据分析

先到先得!阿里淘系内传322页Java并发编程核心讲义学习笔记

钟奕礼

Java java面试 java编程 程序员 java

新鲜出炉|基于深度学习的运维日志领域新进展

云智慧AIOps社区

人工智能 深度学习 日志分析 日志管理 运维管理

高性能数据访问中间件 OBProxy(六):一文讲透数据路由

OceanBase 数据库

oceanbase

记录一次TiDB v5.2.3迁移到v6.1.0的过程

TiDB 社区干货传送门

迁移 实践案例

多点DMALL × Apache Kyuubi:构建统一SQL Proxy探索实践

网易数帆

hadoop spark 开源 Apache Kyuubi

又一巅峰神作!14年工作经验大咖出品“JVM&G1 GC深入学习手册”

钟奕礼

Java java面试 java编程 程序员‘

OceanBase 4.0 解读:分布式查询性能提升,我们是如何思考的?

OceanBase 数据库

数据库 oceanbase

商业智能BI工具如何选择?公司方面需学习具体方法

流量猫猫头

大数据

我从外包辞职了,10000小时后,走进字节跳动拿了offer

钟奕礼

Java java面试 java编程 程序员‘

大数据培训学习方法有哪些

小谷哥

瓴羊Quick BI工具,为数据分析人员带来帮助

流量猫猫头

大数据

从零开始学Java系列之Java是什么?它到底是个啥?

千锋IT教育

java培训程序员失业后的发展方向

小谷哥

聊聊Mybatis的类型转换的别名管理

急需上岸的小谢

11月月更

宜昌市委书记王立调研数字经济发展并莅临升哲科技

SENSORO

六年三次架构迭代,OceanBase 单机分布式一体化会是大势所趋吗?

OceanBase 数据库

数据库 oceanbase

InterruptedException异常会对并发编程产生哪些影响?

冰河

并发编程 多线程 高并发 协程 异步编程

Python(文件操作)

浅辄

Python 文件 11月月更

ThreadPool的线程开启、线程等待、线程池的设置、定时功能

C++后台开发

线程 线程池 后端开发 C++开发 ThreadPool

阿里云与信通院邀您参与云原生安全用户调研

阿里巴巴云原生

阿里云 云原生

前端培训学习,就业前景怎么样

小谷哥

小间距LED显示屏既是机遇也是挑战

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

java培训学习过程中需要什么方法?

小谷哥

进腾讯了!全靠着这两份近千页的Redis+Netty技术笔记

小小怪下士

Java redis 程序员 面试 Netty

如何通过前端培训成为合格的程序员

小谷哥

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