13

企业采用多云面临的挑战和解决方案

 2 years ago
source link: https://segmentfault.com/a/1190000041266647
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

企业采用多云面临的挑战和解决方案

在过去的十年中,基础设施领域发生了巨大变化,越来越多的企业将其工作负载分布在多个平台上,包括本地和云中。这导致管理工作负载的方式发生很大变化,随之而来的是复杂性和风险的增加。跨多个平台的工作负载分布有很多种,多云和混合云是最常见的。

简而言之,多云是在两个或多个云基础设施平台上部署应用程序的组件。这些平台可以是两个公共云服务提供商,或者两个私有云,或者它们的某种组合。混合云大致相同,但是它更多是指公共云和私有云的组合。

多云和混合云应用程序设计模式可以采用多种形式,但有两种最为重要:

1)托管在不同云上的组件——最常见和最简单的模型涉及分离组件(应用程序层),以便每个不同的组件都部署在单个提供商上,整个应用程序分布在多个云中。例如,应用程序的前端可能驻留在公共云上,其中间件驻留在私有云上,其数据库驻留在本地裸机集群上。

这个例子可能涉及一个流量很大的以前端为中心的 Web 应用程序,可能经常更新,它可以避免调用后端资源。在公共云上安装应用程序前端可以根据流量快速、动态地扩展该资源,并可以简化临时(但资源密集型)程序。

将中间件放在私有云上可以实现类似但更受限的灵活性,以及更严格的安全性。在裸机上运行数据库可提供最高的可调性和性能,同时为重要并受监管的数据提供最大程度的保护。

2)单个组件,分布在多个云中—— 较少情况下,我们采用单个应用程序组件并将其分布在多个云中。这种模型的挑战在于,现在在单个应用程序组件中引入了延迟和其他潜在的网络风险等问题。

例如,随着企业扩大公共云服务的使用并寻求成本优化,它们经常遇到所需资源不可用的情况,在这种情况下,可以使用像Kubernetes federation这样的技术来支持容器工作负载——对等微服务水平扩展以执行单个应用程序功能——来“跨越”公共云之间的鸿沟。然而,编写在这种架构上茁壮成长的微服务和应用程序意味着要预料到一系列的延迟和运行在单一基础设施上的应用程序通常不会遇到的特殊状况。

多云优势

帮助开发人员更轻松地使用来自多个云提供商的资源和服务提供了许多优势,包括以下方面。

1)杠杆——企业可以通过此方式对供应商产生一定的影响力,以便能够协商最佳价格并确保最佳服务水平。如果企业被锁定在一个单一的供应商(或者如果存在垄断),就会失去这种影响力,很容易受到成本上升和服务水平下降的影响。

2)价格/性能效率——访问多个公共云的能力可以使企业能够持续优化价格/性能——不仅包括工作负载托管,还包括与服务应用程序相关的所有其他性能因素和成本(例如网络出口成本、互连性、延迟)。

但是,通过在提供商和基础设施之间移动组件和工作负载,最大限度地提高成本和性能优化的自由度,意味着限制企业对所使用的平台和提供商的高度差异化功能和服务的依赖。Kubernetes 和容器在这里可以发挥重要作用,形成跨越多个云和基础设施的一致基础。

3)降低风险——云提供商的定价很复杂,难以观察和预测,并且可能会在几乎不引起注意的情况下发生变化。服务可能停止,提供商的政策也可能发生变化——提供商在执行方面可能反复无常,服务条款协议使客户在发生争议时几乎没有追索权。

因此,提前计划、提供冗余并确保关键数据库和其他难以移动的组件不会锁定到特定的提供者是非常有意义的。

4)位置——公共云提供的一项关键服务是能够将工作负载和数据放在特定区域。利用位置的能力可以进入利润丰厚的市场——这对应用程序性能(例如,最小化延迟)、存储和传输成本以及(在某些情况下)特定服务的可用性和规模至关重要。

5)监管合规选项——控制工作负载和数据位置(静态数据和动态数据)对于实施实现法规遵从性、数据主权和数据保护的管辖策略也至关重要。符合 GDPR、隐私保护和其他法规的管辖权和客户要求的能力是企业全球化发展的保证。

图片

多云挑战

企业需要制定战略来确保多云能够带来好处,同时不会给开发人员、DevOps 和运营团队带来额外的工作困难。

1)一致性至关重要。通过确保跨私有云和公共云的应用程序平台一致,可以帮助确保应用程序能够在任何地方运行而无需更改;并且可以在单一渠道中维护配置、操作自动化、CI/CD 和其他辅助代码库。

Kubernetes 目前是用于改造公共和私有云基础设施以及裸机的最佳可用平台——提供了许多抽象机制,用于将工作负载与底层基础设施隔离开来,尽管存在底层基础设施问题,仍能保持它们的活力,并允许快速、高效、低影响的应用程序更新、扩展和生命周期管理。

2)仅Kubernetes 是不够的——组织需要在所有基础设施上提供一致的 Kubernetes,即易于定制、易于扩展、完全可观察、包含电池、安全、普遍兼容和操作友好的应用程序环境,由一个中心来源提供。单一集群模型可加快操作,实现容器、配置和自动化可移植性,同时还提高安全性(消除未知数和变化,从而减少攻击面),促进策略管理并简化法规遵从性。

3)使用集中管理的系统来交付、更新和管理跨多云的集群可以大幅提高生产力;用于可观察性和手动操作的单一管理平台、全自动且无中断的更新、用于构建自助服务应用程序和按需交付集群的一组 API。通过中央命令和控制设施“提供商”中间件操作各种公共和私有云基础设施,有助于确保企业从平台和公共云特定服务中获益,同时还可以强制执行一致的配置和行为来运行应用程序的 Kubernetes 集群。

4)选择自由与这种模式是一致的。集中管理的多云基础架构可以让运营商和开发人员可以自由选择公共云和私有云备选方案,同时还支持使用一系列操作系统以及大量自动化、CI/CD、安全性和其他工具。

5)集中监控和容量管理也很重要,以确保企业清楚地了解系统的执行情况以及它们正在消耗的资源,这样就可以对应该在哪里运行应用程序做出正确的决定。

6)在核心要求列表中排名靠前的应该是易用性。如果系统使用起来过于复杂,或者要求开发人员必须学会处理新的或陌生的系统,这将极大地阻碍多云的采用。

图片

当然,选择多云策略并确保使用通用平台跨多个平台部署和管理一致的 Kubernetes(以及可能在 Kubernetes 之上运行的应用程序)也有一些缺点。其中最主要的是,企业可能无法(直接)利用公共(和私有)云提供商提供的附加服务,包括他们的“一键式 Kubernetes”版本。

低准入门槛的服务(包括 Kubernetes 产品)似乎让初创公司面临的阻力更小。但是,企业投入的越多,在没有集中式解决方案提供的抽象和中介的情况下,越深入挖掘供应商服务组合,就被锁定的越深。

进入多云意味着重复(有区别地)在每个提供商上开始企业规模的工作,并维护您为此创建的所有并行工具渠道。因此,将企业的运营和业务的任何部分从一个供应商“提升和转移”到另一个供应商成为一个多层次的挑战。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK