11月21日,“2019云计算沙龙(第三期):云原生与多云管理”主题沙龙活动在上海市徐汇区交大科技园成功召开。此次活动吸引了诸多云计算相关的厂商专家以及业内专业人士积极参与,并就云原生与多云管理进行了积极讨论。青藤云安全,作为安全领域践行自适应安全理念的先行者,积极探索为云原生应用程序提供全方位的安全服务,此次受邀出席,并对云生态安全进行了深入讲解。
青藤云安全技术总监王洪中对云生态安全进行讲解
在过去几年里,随着云计算技术的风起云涌,云形态也发生着日新月异的变化。云原生技术也在云平台如火如荼的快速发展中应运而生。
美国专注于云计算与大数据基础平台的公司Pivotal最先提出了云原生应用,后来由谷歌成立的云原生计算基金会(CNCF,全称Cloud Native Computing Foundation)对云原生应用进行了定义:
· 云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。
· 这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术让工程师能够轻松地对系统作出频繁和可预测的重大变更。
· 云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。CNCF通过将最前沿的模式民主化,将这些创新为大众所用。
这或许看起来有些复杂。简单来说,云原生可以从字面涵义来理解,指的是任何在云中诞生、或主要在云中设计并运行的事物。但云原生不只是指应用程序所在的位置,更多的是指应用程序的的构建和部署方式。
1. 容器
容器技术是一种轻量级的虚拟化技术,主要致力于提供一种可移植、可重用且自动化的方式来打包和运行应用。容器这一术语是对船运集装箱的一个类比,它提供了一个标准化方式,将不同内容组合在一起,同时又将它们彼此隔离开来。
将容器和云原生联系起来,您或许会有些疑惑:容器不仅仅是在云端运行,如果有需要,也可以在本地服务器上运行容器。比如,在本地CI/CD管道中采用容器技术,或者使用容器来部署本地的内部业务应用程序。
但是,无需对容器技术进行太多延展,就可以将其与云原生技术联系起来。在很大程度上,容器有助于部署云应用:
· 您可以在云中部署容器。通常还可以使用相同的开源工具来管理云中的容器。这意味着,容器最大限度地提高了云之间的移动性。
· 可以使用容器在云中部署应用程序,而不必为特定云提供商的虚拟服务器或计算实例之间的细微差别而困扰。
· 云供应商可以使用容器来构建其他类型的服务,例如无服务器计算。
· 容器为在云中运行的应用程序提供安全优势。容器应用程序和主机环境之间增加了另一层隔离,而无需再运行整个虚拟服务器。
因此,虽然使用容器是确实不需要使用云,但容器却大大简化了云应用程序的部署。在云原生领域中,容器和云齐头并进,共同发展。因此,可以说容器技术是云原生应用发展的基石。
2. 微服务
微服务可以简单地描述为将一个大型的软件应用程序的功能分为多个独立的小型软件服务或“微服务”。每项微服务通常单独部署在容器中,负责一项单独的任务。为了让微服务协同工作,形成大型可伸缩的应用程序,微服务之间还可以进行通信和交换数据。简而言之,微服务的特点可以总结为:
· 云原生应用程序由多个不同的可重用组件(称为微服务)组成,这些组件都可以集成到任何云环境中。
· 这些微服务可以作为应用程序的构建模块,通常包装在容器中。
· 每个微服务可以协同工作,共同构成一个应用程序,单每个微服务可以通过自动化和编排流程进行独立扩展、持续改进和快速迭代。
· 每个微服务的灵活性也提高了云原生应用程序的敏捷性和持续改进,解决了单体大型应用程序的复杂性和灵活性问题。
以人力资源系统为例。以前,整个人力资源系统部署在一个大软件包中(例如,使用MVC框架的WAR文件)。使用微服务后,就无需将人力资源组件部署为一个大软件包——大型单体应用程序。该大型单体应用程序被划分并部署为按用途分类的若干个较小功能单元(工资、出勤和员工等微服务)。这样,维护一个模块时(例如,“工资”模块),由于微服务可以独立工作,就无需停用整个应用程序,也不会影响到其他功能,从而提高了更新迭代速度,也提高了服务质量。
3. 服务网格
随着微服务数量的增多,可能会形成上百个甚至上千个相互关联的服务,通过内部或外部网络相互连接。如果要绘制出每个微服务之间的连接关系,情况就复杂了。从代码级别管理这些服务的连接关系会很麻烦。这意味着,服务A需要了解服务B的网络层。为了解决这一挑战,服务网格技术应运而生。
服务网格是用于处理服务间通信的专用基础结构层。对于构成现代化的云原生应用程序的服务而言,服务网格负责可靠地交付这些拓扑结构复杂的服务请求。实际上,服务网格通常是通过一系列的轻量级网络代理来实现的,这些网络代理与应用程序代码一起部署,而无需再关注应用程序。
服务网格架构图
4. DevOps
DevOps是由Development和Operations形成的组合词,是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。DevOps通过自动化完成“软件交付”和“架构变更”流程,来更加快捷、频繁和可靠地构建、测试、发布软件。可以把DevOps看作开发(软件工程)、技术运营和质量保障(QA)三者的交集。
DevOps示意图
DevOps打破了开发人员和运维人员之间历来存在的壁垒和沟鸿,加强了开发、运营和质量保证人员之间的沟通、协作与整合。从而形成了一种通过持续交付来优化资源和扩展应用的新方式。DevOps和云原生相结合,能够让企业不断改进产品开发流程,更好地适应市场变化,提供更优质的服务。
CI/CD(持续集成/持续部署)管道可以说是实施 DevOps 的一大重要成果,可帮助企业在需要很少的人工干预的情况下,更快速、更频繁地向客户交付应用,并不断改进产品的质量,增加服务功能,实现精益求精的发展。在整个生命周期内,CI/CD都引入了持续自动化和持续监控,从而能够快速识别和改正问题与缺陷,实现敏捷开发。
1. 与传统的单体应用程序相比,由于使用敏捷和DevOps流程进行迭代式改进,并且实现了自动化构建、测试和部署,从而加快了产品服务的上市时间,也更便于管理。
2. 由于云原生应用程序由若干个相互独立的微服务组成,因此,可以自动地逐步改进云原生应用程序,以不断添加新功能或者改进原有功能。
3. 可以非侵入式地进行改进,不会造成停机或中断服务,给用户造成不良体验。
4. 支持云原生应用程序的基础架构弹性良好,可以轻松进行拓展或缩小规模。
5. 云原生开发流程可以更好地适应当今业务环境所需的速度和创新。
随着云生态的不断演进,云原生所具备的巨大优势必将推动云原生技术的快速发展。
本文作者:云深互联
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/118893.html