您的位置:首页 > 其它

云原生(CloudNative)将成为应用云化开发的主流方式

2018-01-05 09:11 645 查看

云原生(CloudNative)将成为应用云化开发的主流方式

原文地址:https://zhuanlan.zhihu.com/p/27196777


1 什么是云原生(CloudNative)平台?

2015年谷歌成立了原生云计算基金会(CNCF),目前基金会成员包含Box、华为、思科、Docker、eBay、IBM、英特尔、红帽、Twitter、VMware、三星等70多家成员。



CNCF认为CloudNative系统需包含的属性:

(a) 容器化封装:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。

(b) 自动化管理:统一调度和管理中心,从根本上提高系统和资源利用率,同时降低运维成本。

(c) 面向微服务:通过松耦合方式,提升应用程序的整体敏捷性和可维护性。


2 传统开发的问题和挑战有哪些?

开发、测试、运维无法一体化,上线周期长

一般中小企业应用开发相对粗放,开发自行搭建环境,开发后代码给测试,而测试通常也要维护一套相同的运行环境,对每次测试配置应用和环境,容易引起两边不一致,造成测试质量下降。同样的问题也容易发生在部署上线,并可能造成更大的线上故障。

传统应用开发资源利用率低

业务部门通常会根据自己的业务发展规划资源需求,如起初平均只要一台设备,但考虑突发业务峰值,以及后续扩容,通常会冗余3~5倍左右的资源,这部分资源几乎无法被共享使用。而最近几年出现了虚拟化技术后,理论上基于VM的方式对这个问题有所改善,但仍然存在业务部门申请虚拟机后无人主动释放的问题,人为因素仍然造成设备资源利用率低。

单体应用架构无法满足应用快速上线和迭代要求

传统应用开发通常无法在早期就整体上设计架构,造成后续业务发展代码和系统结构高度耦合,继而影响整个开发团队合作,造成组织庞大,分工混乱。同时在新功能开发迭代、问题排查上牵一发而动全身,新功能上线替换式升级,需要中断线上业务,造成整体系统可用性很低;发布上线本身还可能附带BUG风险高,随着时间,人员变动调整,每个企业都有一堆无法维护的毒瘤代码;在运维上,单体应用几乎几法扩容,随着业务发展,只能限于纵向扩容,盲目提升硬件设备能力,购置昂贵的高端服务器,运维成本越来越高。


3 业界CloudNative相关的产品是如何解决这些问题?

DevOps模式全栈开发运维

AWS在云服务层面为开发人员提供了SDK包、命令行工具、IDE(Eclipse、Visual Studio)工具,以及CodeCommit、CodePipeline、CodeBuild、CodeDeploy等服务,对应用程序自动构建、测试应用程序并将其部署至 AWS 或本地环境提供能力。

而微软的Azure,事实上已经在DevOps上耕耘了二十年之久,如广泛为人所知的Visual Studio,1997年发布,2013年发布了Visual Studio Online,包含了源代码控制托管、工作项目管理、协作和构建服务,同时支持直接部署应用到Azure,形成目前业界最全面的DevOps能力。

通过DevOps流水线+Docker容器,实现自动化工程管理,实现开发、测试环境自动申请和构建。通过Docker标准化打包应用配置和环境,生成轻量容器镜像,通过镜像地方式迭代开发、测试、部署,加速应用上线。

自动化运维在合理保障应用高可用的前提下,提升资源利用率,降低成本

AWS Container Service 是一项高度可扩展的高性能容器管理服务,支持 Docker 容器,可在实例群集上轻松运行应用程序。实现应用自动部署、运维、扩展管理基础设施。

Google Container Service 基于开源的Kubernetes系统,实现Docker容器调度到集群中,并根据定义自动管理资源和集群。

容器实现了轻量级“虚拟化”,使得资源隔离切分更细粒度,降低资源碎片。轻量级容器镜像实现了应用实例快速部署,特别在自动化运维下可实现秒级的弹性扩缩容,帮助业务系统灵敏应对大流量峰谷请求,如:电商的抢购秒杀;游戏的大规模玩家聚集团战等场景。

微服务重塑企业架构

微服务架构按功能通常可分为开发框架和治理服务,治理服务是区别微服务和传统SOA服务的关键,SOA通常以总线方式实现不同服务间通信,仍然是松耦合模式,对总线依赖较高。微服务强调服务的点对点通信,对于服务治理没有直接依赖,为解耦模式。

微服务原则实现了业务功能的细化划分,使得开发组织根据不同领域独立运作,职责明确,分工合作简便,客观提升了开发团队效率。同时整体业务细分后可根据团队和业务偏好选择不同的开发语言,通信协议灵活构建服务。

微服务特点使得它领域逻辑单一,代码包更小,更容易配合容器的轻量级打包、配合流水线,实现应用的快速迭代和发布上线,并结合容器的弹性伸缩,形成完美搭配。

当然在业务拆分微服务化后,必然带来开发服务时调试的难度,以及运维管理的碎片化,解决方案通常是调用链分析、微服务监控等功能。


4 业界类CloudNative情况

Azure 微服务架构



Azure实现了从IaaS基础设施到容器、微服务的服务端整体构建,结合Visual Studio开发测试端,实现完整的DevOps平台流程。

华为 ServiceStage



华为 ServiceStage 实现了全栈式应用开发、测试、部署流程,具备了流水线、微服务、容器服务、APM等功能,目前华为在kubernetes、Docker等开源社区领域贡献均为国内第一,ServiceStage 也是国内CloudNative体系最完善的平台。


5 未来展望

在自动化运维领域,CloudNative模式虽然大幅降低了运维成本,但目前业界领先的云解决方案正在向serverless方向演进,serverless也可理解为免运维,平台背后跑的计算、存储和网络完全不用开发人员操心。业界AWS推出的serverless PaaS平台Lambda、step functions、SAM,都基于构建微服务能力。相对目前CloudNative概念,serverless需要解决重量级应用部署;老应用改造成本等问题,未来将有更多的“云原生”概念演进,促进云计算领域蓬勃发展。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐