最初由Armand Sultantono在Snapt博客上发表的客座文章
通过用于应用程序交付的集中式控制平面,您可以使用单个平台来满足所有应用程序交付需求。它将参与应用程序生命周期的团队联合起来,这些团队通常分散在许多系统和平台上,并在两者之间进行改进。
应用程序开发团队可以使用自助服务方法自行部署应用程序。平台运营(NetOps、SecOps、Site Reliability 等)可以设置高速公路而不是路障,确保符合企业安全标准,而不会扼杀开发和部署的速度。
什么是“平面”,什么是数据平面和控制平面?
让我们首先讨论一下基础知识。
如今,“平面”,“数据平面”和“控制平面”等词经常被使用。在各个技术领域,这些术语可能具有不同的内涵,但它们都遵循相同的基本模型:
- 平面是某些操作发生位置的抽象表示。
- 数据平面(有时称为转发平面)是系统“工作线程”所在的位置。在网络中,数据平面负责通信的实际处理,直至将数据包从一个接口转发到另一个接口。
- 控制平面是管理数据平面的管理层,为数据平面“worker”设置规则并向用户公开管理UI。在解耦模型中(我们接下来将讨论),控制平面管理系统的结构,即分布式数据平面。在网络中,控制平面控制并配置一组数据平面辅助角色以适当地管理流量。
为什么要将控制平面和数据平面分离?
将数据和控制平面解耦,允许对网络进行编程的想法是一个有趣的概念,它支撑着软件定义的所有内容(SDE)和基础设施即代码(DevOps)。这与软件系统的现代化是一致的,后者就是将应用程序与它们所运行的基础架构分离。
通常,解耦数据平面和控制平面具有以下优点:
- 运营效率 – 能够抽象出特定组件的复杂性,并以比管理单独和孤立系统更有效的方式管理整个复杂系统。
- 敏捷性 – 更高效地分配和重新分配资源的灵活性:自动缩放基础结构和混合同类最佳的平台。
- 成本优化 – 通过利用无处不在的连接(可作为商品硬件提供且可作为服务随时可用)来提高效率和节省成本。
传统集成ADC在现代应用中的问题
在应用程序交付中,负载平衡器和 Web 应用程序防火墙 (WAF) 等组件传统上具有集成的控制平面和数据平面,其中用户界面和逻辑与数据包处理和转发位于同一应用程序中。
背景
数据中心边缘负载平衡器的传统 ADC 模型可以追溯到负载平衡器(以及大多数网络功能)是专用硬件设备的时候。
传统的负载均衡器是高可用性配置中的整体部署,通常是主动/被动对(其中一个处于空闲状态!),可以处理组织应用程序组合的全部或大部分。传统上,负载均衡器是相当静态的,其基本设置很少需要修改。它们在后面运行的所有应用程序上工作,提供安全性、可靠性和性能。
如今,负载均衡器是用于应用程序交付的综合平台,因此它们也称为“应用程序交付控制器”或ADC。ADC负责一组更广泛、更深入的以应用为中心的功能,这些功能比低级网络功能更具动态性和针对特定应用。这包括 TLS/SSL 卸载、应用程序级 DDoS 攻击和爬虫程序缓解、Web 应用程序和 API 保护、访问管理和 Web 内容优化等。
问题
在有数百甚至数千个应用程序的环境中,传统的ADC模型成为工作负载“瓶颈”,并有可能产生可能危及业务的大“爆炸半径”。
此外,传统的ADC方法是对敏捷开发方法的限制,允许快速引入新功能。当应用程序部署在微服务中时尤其如此,因为微服务应用程序不是像以前那样需要维护和更新的整体式应用程序更少,而是由较小的服务组成,这些服务都需要特定的应用程序交付需求和不同应用程序开发团队以更高的速度进行更新。对于应用程序代码的每个新版本,通常需要对ADC进行各种更改,例如修改路由规则、安全策略等。
支持现代应用的传统ADC模型可能导致持续的策略变化,这可能会严重给ADC带来压力,并破坏应用交付和安全性的稳定性。这也给平台运营团队带来了压力,他们被迫在指定的维护时段内进行服务更新,因为管理许多服务的交付负担很重。
分散式每个应用的ADC的问题
传统ADC正在扼杀开发,并将工作负载集中在单个瓶颈上。对此我们能做些什么呢?是否可以通过按应用使用 ADC 或按租户使用 ADC 来解决问题?
是的,构建每个应用程序或每个租户(客户)单独管理的ADC模型是完全可行的,因为我们不再受昂贵且专门构建的硬件设备的限制。所有现代ADC都提供虚拟甚至容器化的外形尺寸,在小尺寸(低计算和存储要求)中提供高性能和功能丰富的功能。
好处
这种分散式ADC模型减少了瓶颈和爆炸半径。它允许为每个应用程序“调整”ADC的大小,并使应用程序团队能够以自己的速度迭代和发布新代码。
例如,与应用 B 相比,应用 A 的 ADC 群集可能包含更多在更强大的虚拟机规范上运行的 ADC 实例,因为它需要更高的系统要求才能支持更繁重的工作负荷。此外,应用 B 的应用开发团队可以每天推送新功能并修改其 ADC 策略,而不必担心影响应用 A 的服务,因为它们是单独的集群。
问题
当您采用这种方法来为应用程序团队提供支持时,如果您已经建立了由许多团队控制的 ADC 实例队列,则事情很容易变得可怕的失控。在面对分布式部署时,保证合规性、治理和一致性并非易事。
例如,应用 A 可能使用供应商 X 的 ADC,而应用 B(不符合任何安全标准)可能使用相同的 ADC,但以前版本的代码不安全,或者可能是与供应商 Y 完全不同的 ADC,突然之间,您也会将工具蔓延添加到组合中。
集中式控制平面如何结合集成式和分散式 ADC 模型的优势
企业的解决方案是用于应用程序交付的集中式控制平面。集中式控制平面提供了一个平台,该平台提供“单一管理平台”,可保留所有ADC部署的清单,并允许您在一个位置部署、配置和操作整个应用交付基础架构。
在此模型中,数据平面中的 ADC 实例与中央控制平面中的逻辑和管理 UI 分离。
ADC 部署可以按逻辑进行组织,但在需要时,可以按应用程序和按租户进行组织。通过这种安排,我们可以拥有“两全其美”:平台运营团队可以预先配置ADC实例并设置“护栏”或全局策略,并使应用程序开发人员能够管理自己的每个应用程序的ADC策略。
当然,如果控制平面支持基于角色的访问控制 (RBAC),则不同角色可以将控制平面用于其特定目的,则这是可能的。因此,在此模型中,我们将应用程序生命周期中涉及的所有组汇集在一起:网络、安全、应用程序开发人员、站点可靠性工程师等。单一平台还可简化异构工具的蔓延,并最大限度地降低与运营负担和风险敞口相关的风险和成本。
何时可以使用集中式控制平面进行应用程序交付?
集中式控制平面是管理可大规模扩展和分布式应用时必备的平台,其中许多团队都参与了应用生命周期。
在以下几个关键方案中,您可能希望使用集中式控制平面:
- 您拥有混合和微服务架构,需要一种简单的方法来跨两种环境管理应用程序交付。
- 您拥有多云战略,并希望获得成本优化的好处,但希望跨平台统一工具和可观察性。
- 您的应用程序分布在边缘计算上,需要一种简单的方法来以一致的方式管理大量边缘节点。
- 您希望在不影响安全性的情况下加快应用部署并为应用开发人员提供支持。
- 您已经积累了很多工具,也许还有几个控制平面解决方案来管理工具的子集。
- 你希望本地或 SaaS 解决方案的灵活性能够帮助解决上述方案。
集中式控制平面对应用程序交付有什么好处?
分离和集中控制平面是实现应用程序交付现代化的先决条件。集中式控制平面平台允许您:
- 在混合和微服务架构(无论是在本地还是在云中)集中管理应用程序交付。
- 通过用于负载平衡和应用程序交付控制 (ADC)、API 管理、Web 应用程序和 API 保护 (WAAP)、威胁情报和其他关键功能的统一平台,整合用于应用程序交付的工具蔓延。
- 以更简单、更灵活的方式管理部署,从现代基于 Web 的 GUI 到允许导出和导入集中式数据并将其集成到第三方工具中的开放 API,无论是用于自动缩放的云平台 API,还是用于连续集成和持续部署 (CI/CD) 的 API 驱动控件。
- 通过提取汇总的见解和粒度指标的能力,提高整个应用交付基础架构的可见性和分析能力。
- 提供自助服务功能,允许将控制权委派给应用程序团队。一旦其他团队(例如SecOps和NetOps)设置了护栏,应用程序开发人员就可以快速独立地配置和自定义自己的端到端应用程序交付基础架构,在大多数情况下,使用基础架构即代码(IaC)方法。
面向现代应用服务的下一代智能控制平面
如果控制平面简化了应用程序基础架构的设计、监视和管理,则下一代控制平面将为等式增加智能。
它还通过机器学习 (ML) 支持的自适应和自动网络控制来推动数据平面的可编程性,比人类专家团队执行得更快、更精确。
下一代控制平面也已为边缘计算和云原生架构的新兴应用做好了准备。
下一代控制平面的期望:
- API 优先的控制平面,可以“无外设”运行,并连接到其他专用管理平面的结构,而不是用作最终控制平面。
- 先进的 ML 功能可消除人为干预和错误 – 通过自适应流量规则和自我修复、自我扩展的基础架构响应动态流量模式、异常和威胁。
- 社区驱动的威胁情报,使用从历史和预测流量以及内部和外部(公共和私人)来源收集的实时数据,提前防范未来的攻击。
- 基于意图的策略允许用户以最基本的术语描述其需求,以定义结果和高级操作目标,而无需枚举条件和操作,甚至无需成为每个离散技术功能的专家。如果应用程序开发人员希望在“跟随太阳”模型中动态部署应用程序,则控制平面将跨多个云平台实例化和配置所需数量的实例,以满足特定于地理位置的流量需求,而无需用户干预。
- 控制平面和数据平面之间高度优化的通信协议,可实现数百万台设备的实时和并行远程控制,具有接近零的延迟以及极高的规模和弹性。
结论
用于应用程序交付的集中式控制平面将有助于加速应用程序部署并简化生命周期管理。
它是管理工具蔓延、孤立操作的解决方案,通过解决混合云和多云部署的挑战,将参与应用程序生命周期的每个人置于同一屋檐下。
看看 Snapt Nova,它是具有集中控制平面的下一代应用程序交付平台。Nova 可以部署在本地或交钥匙 SaaS 上。Nova 是一个任意云、多位置的集中式平台,用于大规模部署、控制和监控应用程序的交付。Nova 内置的 ML 自动化以及基于意图的简单模板和配置文件极大地简化了敏捷应用程序交付。