文末本文转载自微信公众号「大数据DT」,作者刘文懋 江国龙 等 。转载本文请联系大数据DT公众号。
近年来,云计算模式逐渐被业界认可和接受。在国内,包括政府、金融、通信、能源在内的众多领域的大型机构和企业,以及中小企业,均对其托管业务的基础设施进行了不同程度的云化。
但它们大多数利用开源或商业的IaaS系统构建云计算平台,只是简单地将传统物理主机、平台或应用转为虚拟化形态。这种方式所带来的好处是整体资源的利用更加合理,且集约式的运营会降低成本,提升整体运营效率和成熟度。但总体而言,这样的上云实践只是“形”上的改变,还远没有达到“神”上的变化。
在云计算的下半场,应该充分利用云计算弹性、敏捷、资源池和服务化等特性,解决业务在开发、运行整个生命周期中遇到的问题。毕竟,业务中出现的问题才是真正的问题。
比如,传统应用有升级缓慢、架构臃肿、无法快速迭代等问题,于是云原生的概念应运而生。笔者认为云原生就是云计算的下半场,谁赢得云原生的赛道,谁才真正赢得了云计算。
谈到云原生,不能不提始终推动云原生发展的CNCF(Cloud Native Computing Foundation,云原生计算基金会)。CNCF是一个孵化、运营云原生生态的中立组织。截止到2020年,CNCF共有371个开源项目、1402个项目和组织,可以说是一个覆盖面相当广的云计算组织。
CNCF对云原生的见解是:
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统做出频繁和可预测的重大变更。
云原生提倡应用的敏捷、可靠、高弹性、易扩展以及持续更新。在云原生应用和服务平台的构建过程中,近年兴起的容器技术凭借其高弹性、敏捷的特性以及活跃、强大的社区支持,成为云原生等应用场景下的重要支撑技术。无服务、服务网格等服务新型部署形态也在改变云端应用的设计、开发和运行,从而重构云上业务模式。
不同于以虚拟化为基础的传统云计算系统,云原生系统一般有如下特征。
01 轻、快、不变的基础设施
在云原生环境中,支撑基础设施通常是容器技术。容器生命周期极短,大部分是以秒或分钟为单位,占用的资源也比虚拟化小得多,所以容器的最大特点就是轻和快。
而正是因为容器有轻和快的特点,在实践中通常不会在容器中安装或更新应用,而是更新更为持久化的镜像,通过编排系统下载新镜像并启动相应的容器,并将旧的容器删除。这种只更新镜像而不改变容器运行时的模式称为不变的基础设施(immutable infrastructure)。从不变的基础设施就能看出,云原生的运营与传统虚拟机运营方式截然不同。
02 弹性服务编排
云原生的焦点是业务,而非基础设施,而业务的最核心之处是业务管理和控制,如服务暴露、负载均衡、应用更新、应用扩容、灰度发布等。服务编排(orchestration)提供了分布式的计算、存储和网络资源管理功能,可以按需、弹性地控制服务的位置、容量、版本,监控并保证业务的可访问性。
服务编排对应用层隐藏了底层基础设施的细节,但又提供了强大的业务支撑能力,以及让业务正常运行的容错、扩容、升级的能力,使开发者可以聚焦业务本身的逻辑。
03 开发运营一体化
开发运营一体化(DevOps)是一组将软件开发和IT运营相结合的实践,目标在于缩短软件开发周期,并提供高质量软件的持续交付。虽然DevOps不等同于敏捷开发,但它是敏捷开发的有益补充,很多DevOps的开发理念(如自动化构建和测试、持续集成和持续交付等)来自敏捷开发。
与敏捷开发不同的是,DevOps更多的是在消除开发和运营侧的隔阂,聚焦于加速软件部署。
当前,很多云原生应用的业务逻辑需要及时调整,功能需要快速丰富和完善,云端软件快速迭代,云应用开发后需要快速交付部署,因而开发运营一体化深深地融入云原生应用整个生命周期中。
04 微服务架构
传统Web应用通常为单体应用系统,如使用WebSphere、WebLogic或.Net Framework等,从前端到中间件再到后端,各个组件一般集中式地部署在服务器上。
后来随着Web Service标准的推出,应用以标准的服务交付,应用间通过远程服务调用(RPC)进行交互,形成了面向服务的架构(Service-Oriented Architecture,SOA),极大提升了应用组件的标准化程度和系统集成效率。
在云原生应用设计中,应用体量更小,因而传统单体应用的功能被拆解成大量独立、细粒度的服务。
微服务架构使得每个服务聚焦在自己的功能上,做到小而精,然后通过应用编排组装,进而实现等价于传统单体应用的复杂功能。其优点是后续业务修改时可复用现有的微服务,而不需要关心其内部实现,可最大限度地减少重构开销。
05 无服务模型
无服务(Serverless)是一种基于代码和计算任务执行的云计算抽象模型,与之相对的是基于服务器(虚拟机、容器)的计算模式。
无服务在公有云和私有云上都有相应的服务,如AWS Lambda、阿里云的函数计算、Kubernetes的Kubeless、Apache OpenWhisk等。无服务聚焦在函数计算,隐藏了底层复杂的实现方式,使开发者能够聚焦于业务本身。
总体而言,云原生真正以云的模式管理和部署资源,用户看到的将不是一个个IT系统/虚拟主机,而是一个个业务单元,开发者只需要聚焦于业务本身。可以说微服务的设计、无服务的功能是云原生理念的核心体现,而容器、编排、服务网格均是实现云原生的支撑技术。
关于作者:刘文懋,绿盟科技集团首席安全专家、创新中心与星云实验室负责人,计算机学会(CCF)理事,中国网络空间安全人才教育论坛人才标准认证工作组专家,中国网络空间新兴技术安全创新论坛理事,云安全联盟(CSA)云安全服务管理工作组联合主席。曾发表著作《软件定义安全:SDN/NFV新型网络的安全揭秘》。
江国龙,资深研究员和架构师,主要研究方向包括虚拟化网络安全、云计算系统安全、云原生安全、5G/边缘计算安全等。作为核心人员,参与编写了多份云安全相关白皮书、技术报告、技术标准。积极活跃于云原生安全社区,热衷于技术探索和分享。
浦明,绿盟科技集团星云实验室资深安全研究员,在云原生应用安全及安全创新领域有丰富的实战经验,长期从事Kubernetes、微服务、服务网格安全的研究。在绿盟科技任职期间,参与过安全应用商店、安全编排与自动化响应(SOAR)平台、容器安全、安全产品云原生化的架构设计和研发工作。
阮博男,绿盟科技集团星云实验室安全研究员,主要研究方向为云和虚拟化安全,积极探索Linux、云、虚拟化及前沿安全攻防技术。曾作为核心人员参与绿盟科技的SOAR、容器安全、云原生入侵检测等项目和产品。
叶晓虎,绿盟科技集团首席技术官,先后担任国家火炬计划课题负责人、北京市下一代网络安全软件与系统工程技术研究中心主任、海淀区重大科技成果产业化负责人等。在信息安全管理、安全架构和技术方面有将近20年的经验,并且作为安全专家多次参与国家级重大事件网络安全保障工作。
本文摘编自《云原生安全:攻防实践与体系构建》,经出版方授权发布。(ISBN:9787111691839)