Cloud Native 云原生概览

229 阅读7分钟

CNCF & CNCF Cloud Native Landscape

CNCF(Cloud Native Computing Foundation),是由 Google 牵头创立的云原生计算开源软件基金会。它致力于云原生(Cloud Native)技术的普及和可持续发展。CNCF 维护的 Cloud Native Landscape,汇总流行热门的云原生技术与工具并加以分类,为企业构建云原生体系提供参考,在云生态研发、运维领域具有广泛影响力。

image.png

相关链接:

云原生计算基金会(CNCF)

开源简史基础:CNCF的诞生

云原生定义

由此我们可以发现,很多我们平时听到的概念其实都属于云原生的一部分。引用微软对于云原生的定义

Cloud-native architecture and technologies are an approach to designing, constructing, and operating workloads that are built in the cloud and take full advantage of the cloud computing model.

The Cloud Native Computing Foundation provides the official definition:

Cloud-native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.

These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.

我们可以看到容器,微服务,service mesh,声明式API都是云原生的一种方案,而DevOps作为另一个我们经常听到的话题,是实践云原生的一套最佳的方法论。

Through good DevOps practices, it's possible to realize the advantages of cloud-native applications without suffocating under a mountain of work actually operating the applications.

云计算层次

像Azure、Google Cloud、AWS以及国内的阿里云和腾讯云基本都是涵盖了云计算的方方面面:IaaS、PaaS、SaaS,而像SAP BTP基本上属于PaaS加上HANA Cloud、SAP Analytics Cloud这些SaaS,BTP部署在上述几个云服务中,而SAP BTP的PaaS部分其实主要依靠Cloud Foundry,也就是业界第一个开源PaaS云平台。这些云服务提供商涵盖的内容都远不止云原生的范畴(云原生基于云计算,但还要必须符合上文提到的架构和理念),所以我们在CNCF里检索它们的话,更多的是提到它们在容器和容器编排方面的服务。 image.png

image.png

云原生Project举例

举几个在本科微服务课程上体验过的产品来展示一下如今它们的更新/使用情况以及其背后公司的相关信息:

ConsulNacosSentinelKong
HashiCorpAlibaba CloudAlibaba CloudKong
Orchestration & ManagementOrchestration & ManagementOrchestration & ManagementOrchestration & Management
Service MeshCoordination & Service DiscoveryAPI GatewayAPI Gateway
last weeklast weeklast weekthis week
$7.6B$251.8B$251.8B$169.1M
ElasticGrafanaProthmethusJaeger
ElasticGrafana LabsCloud Native Computing Foundation (CNCF)Cloud Native Computing Foundation (CNCF)
Observability and AnalysisObservability and AnalysisObservability and AnalysisObservability and Analysis
LoggingMonitoringMonitoringTracing
last weekthis weekthis weekthis week
$6.9B$535.2M$3M$3M

其中Prometheus是SoundCloud公司开源的监控系统,同时也是继Kubernetes之后,第二个加入CNCF的项目。表格最后一行有的代表整个公司的市值,有的代表Fund,但数据不一定准确,譬如Grafana Lab在2021年的估值已经达到$3B。

相关链接:

CNCF 首个中国开源项目是如何炼成的?

云原生的关键技术

6.1 容器

容器雏形最早出现在 1979 年叫 Chroot Jail ,定义于 2008 年 即 LXC(Linux Container),将 Cgroups 的资源管理能力和 Namespace 的视图隔离能力组合在一起,实现进程级别的隔离。

Build once,Run anywhere这句响亮的口号就是Docker打败Cloud Foundry的最大秘决, Docker与Cloud Foundry相比其底层技术都是namespace和cgroups,但是Docker很好的考虑了应用打包的一致性与复用性问题,并提出了镜像这种创新式的解决方案,完全可以做到三分钟部署一个Nginx集群的效果,正是这种对程序员的友好特性,让Docker成功取代Cloud Foundry成为当之无愧的C位。

它也是 “不可变基础设施” 的核心基础。

6.2 Kubernetes

Kubernetes 是云计算和云原生时代的 Linux,是 Google 基于 Borg 开源的容器编排调度系统,让容器应用进入大规模工业生产。

声明式的 API 与可扩展(CRD + Controller)的编程接口,先进的设计思想使其在容器编排大战中(Kubernetes、Swarm、Mesos)处于王者地位,成为容器编排系统的事实标准。

通过采用 Kubernetes 平台,用户不必操心资源管理问题,使基础设施更加标准化,复杂度降低,资源使用率提升。同时 Kubernetes 也简化了混合云,多云,边缘云等跨数据中心的部署成本。

Kubernetes是容器编排领域的王者,也是CNCF的立身之本,后来K8s和Docker产生了一系列的对抗,因为Docker的商业化路径在开源的路上越走越远,逐渐被CNCF旗下的Kubernetes抛弃。

相关链接:

Docker终失C位,开源少年缘何黑化

翻译 | 解读首部 Kubernetes 纪录片

6.3 微服务(Microservices)

微服务则是一种用于构建应用的架构方案,微服务架构有别于为传统的单体应用的是将应用拆分成多个核心功能,每个功能都被称为一个独立的服务,可以单独构建和部署,其中某个服务出现故障也不会影响其他的功能模块,这句体现了其针对特定服务发布,影响小,风险小等特点。

6.4 无服务(Serverless)

根据 CNCF 的定义,Serverless 是指构建和运行不需要服务器管理的应用程序的概念。即开发人员无需关注底层的基础设施,只需要关注应用程序的业务本身就行,且该服务是可以自动扩展。

6.5 DevOps

早期的项目使用的是‘瀑布模型’进行软件交付,即一个阶段所有的完成工作之后再往下一个阶段,但这样的模式无法满足业务快速开发交付及变更需求的情况,于是后面就出现了敏捷开发这一概念,即一种快速应对需求变化软件开发能力,而DevOps就是基于敏捷开发将软件开发/测试人员/IT运维关联在一起,通过工具、组织等方式使开发、测试、发布流程自动化,软件发布频繁,高效。

6.6 ServiceMesh

ServiceMesh 核心是业务逻辑与非业务逻辑解耦,实现开发只需关注业务逻辑的伟大目标。将一大堆和业务逻辑无关的客户端 SDK(如服务发现,路由,负载均衡,限流降级等)从业务应用中剥离出来,放到单独的 Proxy(Sidecar) 进程中,之后下沉到基础设施中间件 Mesh(类似 TDDL 到 DRDS 的模式)。

针对应用减少了系统框架变更带来的风险、瘦身后变的干净和轻量化,加快了应用的启动速度,使得应用往 Serverless 架构迁移变得轻松。

针对 Mesh 可以根据自身需求自行迭代和升级功能,更加利于全局服务治理、灰度发布、监控等。

同时,Mesh 边界可以扩展到 DB Mesh,Cache Mesh、Msg Mesh等,真正做到服务通信的标准化即服务之间通信的 TCP/IP。

6.7 基础设施即代码(Infrastructure as Code, IaC)

将基础设施及其完整的生命周期(创建、销毁、扩容、替换)以代码的方式进行描述、通过相应的工具(terraform、ROS、CloudFormation等)编排执行和管理。

比如应用用到的所有基础资源(如:ECS、VPC、RDS、SLB、Redis 等),无需在控制台不停的切换页面申请购买,只需定义相应代码,一键创建。

这样做的受益是基础设施代码版本化,可 Review,可测试,可追溯,可回滚,一致性、防止配置漂移,方便共享、模板化和规模化,提升了运维整体效率和质量,通过代码也可以轻松了解基础设施的全貌。

6.8 Cloud IDE

云端 IDE 深入研发的整个生命周期,提供了完整的开发、调试、预发、生产环境及CI/CD 发布一体化体验。云端可提供丰富的代码库模板,通过分布式运算提升编译速度,以 “智能” 方式实现代码推荐、代码优化、自动扫描发现 BUG、识别逻辑和系统性风险。

可以想像云时代开发模式与本地开发完全不同,拥有更高的研发效率,更快的迭代速度,更完善的质量控制。

参考链接:云原生已来,只是分布不均