通过适当的服务和设计,可以提升企业云应用程序的性能。企业需要考虑一些元素以优化其工作负载。
很多企业致力于追求最佳的应用程序性能,但实现它并非易事。在基于主机的内部部署IT环境中,企业必须提供适当调整的资源以实现性能目标。而采用云计算技术将使这些考虑因素变得更加复杂,因为它限制了用户可以定制基础设施和其他可用功能的程度。
虽然并没有哪一个云计算架构可以保证每个应用程序的最佳性能,但是一些服务和实践可以提高云计算性能。
1.选择适当的实例
如果组织了解其工作负载的资源需求,并为其配置具有适当特征的实例类型,则会看到深刻的结果。虚拟机是云中最常见的实例类型,尽管容器的应用正在快速增长。
其目标是使用最佳分配的虚拟CPU(vCPU)、内存和专用特征来调整实例的大小。如果实例太大,额外的资源对云计算工作负载性能并没有好处,最终会浪费资金。如果实例太小,则会影响负载性能,如果工作负载完全运行的话很难应对。
云计算提供商提供无数的实例类型,每种类型都具有vCPU、内存、存储和网络的独特组合。可以针对特定任务定制这些虚拟机。例如,AWS公司的EC2 A1实例适合横向扩展和ARM工作负载。另一方面,M4实例平衡了不同应用程序的资源,并有一些针对计算密集型工作负载、内存密集型应用程序、人工智能等进行了优化的云计算实例。这些使得组织必须选择正确的选项。
2.实施自动扩展服务
传统上,企业将IT资源扩展作为一项临时工作。由于IT资源有限且在企业的所有权范围内,因此几乎不需要快速、动态或自主地进行扩展。
但是,公共云计算是动态发展的。公共云提供了按需添加或删除实例和相关资源的潜力。 AWS、谷歌云和Microsoft Azure均提供负载平衡和自动扩展功能。
组织必须实施适当的规则集,以决定何时以及如何扩展,以便提高云计算性能。在许多情况下,监控服务跟踪负载特性,例如平均vCPU利用率。当工作负载超过定义的利用率阈值时,监视警报会触发自动扩展服务,该服务遵循预定义的计划来添加资源,并设置负载平衡首选项。当负载降至某个阈值以下时,自动扩展服务可以反转该过程并撤回不需要的资源。
云计算优化的重要性
如果实施得当,自动扩展可以无缝地维护用户的工作负载性能(例如响应能力),同时还可以管理云计算成本。
3.实施缓存服务
应用程序需要数据,但访问存储会降低响应速度,尤其是当资源远程或拥有多租户访问权限时。缓存是放置在尽可能快的存储中的频繁访问数据的副本,位于尽可能靠近应用程序的位置。与使用常规存储等待数据相比,应用程序可以使用缓存信息更快地执行涉及数据的任务。云中可用的缓存服务包括Azure Cache for Redis、Amazon ElastiCache和Google App Engine Memcache。
由于缓存本身是数据副本,因此如果原始数据发生更改,则可能会导致问题。应用程序开发人员需要规划如何更新缓存内容,以确保主体数据存储和缓存之间的连续性。云计算提供商提供了丰富的文档和参考架构,以帮助完成设计过程。
4.采用微服务架构
单片应用程序将主要特性和功能封装在单个可执行结构中。这是一种久经考验的软件开发方法,但是整体可能会对云中的可扩展性和性能带来挑战。当传统的单片应用程序达到其性能极限时,必须部署整个应用程序的全新实例。
微服务将应用程序分解为一系列相互关联的程序,这些程序单独部署、操作和扩展。这些独立服务通过API协同工作,以提供应用程序的特性和功能。因此,当一项服务对其性能限制征税时,只有该服务必须向外扩展。它可以成为管理现代应用程序的一种更快、资源效率更高的方法。
微服务组件可以部署到小型虚拟机上,但通常依赖于协调的容器平台,如Azure Service Fabric。
5.采用事件驱动的架构
无服务器计算已经获得了开发人员的极大关注,事件驱动的架构可以在无服务器的云计算服务上运行,例如AWS Lambda,Azure Functions和Google Cloud Functions。
虽然服务器对于在后端操作事件驱动的功能至关重要,但其目的是避免传统虚拟机或容器实例的部署和长期操作。而与此相反,企业开发人员将某些软件行为或功能的代码加载到云平台中,在云平台中,只有在某些现实世界或程序化事件触发时才会部署和运行。功能完成后,它将被卸载,不再消耗云计算资源。由云计算提供商加载、操作和卸载该功能,而不是用户。
虽然很少有应用程序完全由事件驱动,但开发人员可以使用功能来创建对实际和基于软件的事件(如物联网数据流)的高效响应。因此,由于无服务器组件,整个软件应用程序可以更小、更简单,并且针对性能进行了更好的优化。
6. 选择监控服务
永远不要忽视优化云计算性能时监控的重要性。公共云提供商提供各种监控服务,包括Amazon CloudWatch、GCP Stackdriver Monitoring和Azure Monitor。
即使监控对工作负载性能没有直接影响,这些服务也是公共云中任何部署的关键要素。监控是跟踪性能指标的唯一客观方法,它为自动扩展等服务决策提供了基础,并帮助组织确保其云计算投资产生的结果。